LGP7167题解
考试的一道题,因为某些原因sb了常数翻了好几倍/px
首先我们发现,一个水池的水只会向它下边第一个直径比它大的水池流。
我们把这些流动的关系连边,很容易发现是一棵树。
问水最后会到哪个水池相当于在问最老的一个祖先,使得自己到祖先上的点权之和不大于给定的数。然后容易发现是树上倍增。
然后,其实找右边第一个比自己大的数可以用单调栈 \(O(n)\),然而我用了 \(O(n\log n)\) 的倍增+ST表。。。
其次,可以直接倍增,然后我建了树。。。
附上考场上的代码:
#include<cstdio>
const int M=1e5+5;
typedef long long ll;
int n,m,a[M],d[M],b[M],lg2[M],f[M][22],st[M][22];
ll s[M];
struct Edge{
int to;Edge*nx;
}e[M<<1],*h[M],*cnt=e;
inline int max(const int&a,const int&b){
return a>b?a:b;
}
inline void Add(const int&u,const int&v){
*cnt=(Edge){v,h[u]};h[u]=cnt++;
}
void DFS(int u){
d[u]=d[f[u][0]]+1;
for(int i=1;f[u][i-1];++i)f[u][i]=f[f[u][i-1]][i-1];
for(Edge*E=h[u];E;E=E->nx){
int v=E->to;
s[v]=s[u]+b[v];DFS(v);
}
}
int Find(int u,int val){
for(int k=21;k>=0;--k){
if(s[u]-s[f[u][k]]<val)val-=s[u]-s[f[u][k]],u=f[u][k];
}
return u;
}
int main(){
register int i,j,A,B,now;
scanf("%d%d",&n,&m);lg2[0]=-1;
for(i=1;i<=n;++i){
scanf("%d%d",a+i,b+i);st[i][0]=a[i];
lg2[i]=lg2[i>>1]+1;
}
for(j=1;(1<<j)<=n;++j){
for(i=1;i+(1<<j)-1<=n;++i){
st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
}
}
for(i=1;i<=n;++i){
now=i;
for(j=21;j>=0;--j){
if(now+(1<<j)-1<=n&&st[now][j]<=a[i])now+=1<<j;
}
if(now==n+1)now=0;
Add(f[i][0]=now,i);
}
DFS(0);
for(i=1;i<=m;++i){
scanf("%d%d",&A,&B);
printf("%d\n",Find(A,B));
}
return 0;
}
LGP7167题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- js注释和数据类型转换
单行注释 用来描述下面一个或多行代码的作用 // 这是一个变量var name = 'hm'; 多行注释 用来注释多条代码 /*var age = 18;var name = 'zs';console ...
- uniapp自定义顶部搜索框兼容微信小程序
zhuanzai: uniapp自定义顶部搜索框兼容微信小程序 自定义组件 navbarvue (胶囊底部高度 - 状态栏的高度) + (胶囊顶部高度 - 状态栏内的高度) = 导航栏的高度 < ...
- UITableViewCell结构
- iOS时间处理之时间对比 by Nicky.Tsui
通过项目需求, 服务器返回了一个 order_canceled_time 订单自动取消时间 如果我要跟当前时间做一个对比,然后生成出一个倒计时的时间 那么首先我们要知道 order_cancel ...
- HMS Core 能力速配,唱响恋爱进行曲
情人节,HMS Core 最具CP感的能力搭档来袭,浓浓爱意,表白各行业,你准备好了吗? 1.ML Kit +Signpal Kit 科技相助,恋爱提速.展现爱意的方式有千百种,你可以用文本翻译学习数 ...
- JetBrains官博:将从IntelliJ平台移除Log4j的依赖
今早,DD注意到JetBrains在官方博客发文宣布要将log4j从IntelliJ平台移除了,该变化将在2022.1版本发布. 从博文看,本次移除log4j的漏洞,并非担心log4j2的漏洞问题,因 ...
- Note/Solution -「洛谷 P5158」「模板」多项式快速插值
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \((x_i,y_i)\),求一个不超过 \(n-1\) 次的多项式 \(f(x)\),使得 \(f(x ...
- Solution -「ZJOI 2019」「洛谷 P5326」开关
\(\mathcal{Description}\) Link. 有 \(n\) 个开关,初始时所有开关的状态为 \(0\).给定开关的目标状态 \(s_1,s_2,\cdots,s_n\).每 ...
- c++ 程序编译后运行时的内存分配
程序编译后运行时的内存分配 太好的文章了,看到不得不转,转自:http://blog.sina.com.cn/s/blog_5420e0000101a0w1.html 一.编译时与运行时的内存情况 1 ...
- GitLab API使用小结
GitLab API使用小结 背景描述 需求描述: 最近因为工作上的需求,需要对GitLab进行大批量的操作,又因为服务器不在境内,所以所有的操作都需要连接VPN来进行FQ访问.目前大概有6000多个 ...