当前位置: 首页 > news >正文

男神的补习

男神的补习

题目链接:http://acm.xidian.edu.cn/problem.php?id=1162

DFS序维护线段树

直接拿之前百度之星那题(http://www.cnblogs.com/barrier/p/5831927.html)改一下就过了

代码如下:

 1 #include<cstdio>
 2 #include<vector>
 3 #define LL long long
 4 #define N 100100
 5 #define lson (x<<1)
 6 #define rson (x<<1|1)
 7 #define mid ((l+r)>>1)
 8 using namespace std;
 9 struct node{
10     int sum,lazy;
11 }a[N<<2];
12 int val[N],fa[N],hx[N],L[N],R[N];
13 int idx,n,m,k,root=1,x,y,times,t;
14 bool vis[N];
15 vector<int>e[N];
16 void dfs(int num){
17     vis[num]=1;
18     L[num]=++idx;
19     for(LL i=0;i<e[num].size();i++)
20         if(!vis[e[num][i]])dfs(e[num][i]);
21     hx[L[num]]=num;
22     R[num]=idx;
23 }
24 void push_up(int x){
25     a[x].sum=min(a[lson].sum,a[rson].sum);
26 }
27 void push_down(int x){
28     a[lson].sum+=a[x].lazy,a[lson].lazy+=a[x].lazy;
29     a[rson].sum+=a[x].lazy,a[rson].lazy+=a[x].lazy;
30     a[x].lazy=0;
31 }
32 void build(int x,int l,int r){
33     if(l==r){
34         a[x].sum=val[hx[l]];
35         return;
36     }
37     build(lson,l,mid);
38     build(rson,mid+1,r);
39     push_up(x);
40 }
41 void init(){
42     scanf("%d%d%d",&n,&m,&k);
43     for(int i=1;i<n;++i){
44         scanf("%d%d",&x,&y);
45         e[x].push_back(y);fa[y]=x;
46     }
47     while(fa[root]!=0)root=fa[root];
48     for(int i=1;i<=n;++i)scanf("%d",&val[i]);
49     dfs(root);
50     build(1,1,n);
51 }
52 void add(int x,int l,int r,int cl,int cr,LL v){
53     if(cl<=l&&r<=cr){
54         a[x].sum+=v,a[x].lazy+=v;
55         return;
56     }
57     if(a[x].lazy!=0)push_down(x);
58     if(cl<=mid)add(lson,l,mid,cl,cr,v);
59     if(mid<cr)add(rson,mid+1,r,cl,cr,v);
60     push_up(x);
61 }
62 LL query(int x,int l,int r,int ql,int qr){
63     if(ql<=l&&r<=qr)return a[x].sum;
64     if(a[x].lazy!=0)push_down(x);
65     LL temp=1000000000;
66     if(ql<=mid)temp=min(temp,query(lson,l,mid,ql,qr));
67     if(mid<qr)temp=min(temp,query(rson,mid+1,r,ql,qr));
68     return temp;
69 }
70 int main(void){
71     init();
72     for(;query(1,1,n,L[root],R[root])<60&&times<m;){
73         scanf("%d",&t);
74         add(1,1,n,L[t],R[t],k);
75         ++times;
76     }
77     if(query(1,1,n,L[root],R[root])>=60)printf("%d\n",times);
78     else printf("mdzz\n");
79 }

 

转载于:https://www.cnblogs.com/barrier/p/6070315.html

相关文章:

  • 360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
  • Fluent NHibernate系列文章
  • 第八次作业
  • 计算思维导论
  • maven项目搭建
  • 图像识别技术
  • RTP协议
  • Java中Vector和ArrayList的区别
  • 如何培养数据分析的能力?
  • zabbix根据主机和端口列表自动发现监控远程MongoDB实例
  • [转载]浅析海量用户的分布式系统设计
  • heroku 部署nodejs+mongodb
  • 仿QQ大战—服务器的搭建(ServerSocket)
  • Android : com.mobeta.android.dslv.DragSortListView-引用自定义控件包名错误
  • MySQL配置文件my.cnf优化详解
  • .pyc 想到的一些问题
  • [Vue CLI 3] 配置解析之 css.extract
  • 【EOS】Cleos基础
  • Angular 4.x 动态创建组件
  • Babel配置的不完全指南
  • canvas 五子棋游戏
  • Git学习与使用心得(1)—— 初始化
  • PhantomJS 安装
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue.js框架原理浅析
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 记录一下第一次使用npm
  • 记一次删除Git记录中的大文件的过程
  • 开源地图数据可视化库——mapnik
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 批量截取pdf文件
  • 前端路由实现-history
  • 实现简单的正则表达式引擎
  • 数据结构java版之冒泡排序及优化
  • 一个SAP顾问在美国的这些年
  • 正则与JS中的正则
  • 《天龙八部3D》Unity技术方案揭秘
  • 进程与线程(三)——进程/线程间通信
  • #Linux(Source Insight安装及工程建立)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #预处理和函数的对比以及条件编译
  • ( 10 )MySQL中的外键
  • (2020)Java后端开发----(面试题和笔试题)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (windows2012共享文件夹和防火墙设置
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (超详细)语音信号处理之特征提取
  • (二)斐波那契Fabonacci函数
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)甲方乙方——赵民谈找工作
  • (转载)虚函数剖析
  • .bat批处理(一):@echo off