[Poi2011]Meteors 题解
题目大意:
给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值。
思路:
整体二分(二分答案),对于每个国家,如果在m次事件后到达目标则放在左边,否则放在右边(用下标映射)。区间加用树状数组维护。
反思:
整体二分不熟练。二分计算时算到mid,now表示当前已经经历了几次事件(可进可退)。快速排序用的也是整体二分。
代码:
#include<cstdio>
#define ll long long
const int M=;
int n,m,i,k,now,a[M],p[M],s[M],e[M],id[M],di[M],nex[M],fir[M],ans[M];
ll c[M];//now表示当前已经经历了几次事件 int read()
{
int x=; char ch=getchar();
while (ch< || ch>) ch=getchar();
while (ch> && ch<) x=(x<<)+(x<<)+ch-,ch=getchar();
return x;
} void add(int x,int y) { for (;x<=m;x+=x&-x) c[x]+=y; }
ll sum(int x) { ll ans=; for (;x;x^=x&-x) ans=ans+c[x]; return ans; } void solve(int L,int R,int l,int r)
{
if (L>R) return;
if (l==r) { for (;L<=R;++L) ans[id[L]]=l; return; }
int mid=l+r>>,i,j,x=L-,y=R+; ll tot;
while (now<mid)
if (s[++now]<=e[now]) add(s[now],a[now]),add(e[now]+,-a[now]);
else add(s[now],a[now]),add(,a[now]),add(e[now]+,-a[now]);
for (;now>mid;--now)
if (s[now]<=e[now]) add(s[now],-a[now]),add(e[now]+,a[now]);
else add(s[now],-a[now]),add(,-a[now]),add(e[now]+,a[now]);
for (i=L;i<=R;++i)
{
for (j=fir[id[i]],tot=;j && (tot=tot+sum(j))<p[id[i]];j=nex[j]);
if (tot<p[id[i]]) di[--y]=id[i]; else di[++x]=id[i];
}
for (i=L;i<=R;++i) id[i]=di[i];
solve(L,x,l,mid),solve(y,R,mid+,r);
} int main()
{
n=read(),m=read();
for (i=;i<=m;++i) nex[i]=fir[k=read()],fir[k]=i;
for (i=;i<=n;++i) p[i]=read(),id[i]=i;
for (k=read()+,i=;i<k;++i) s[i]=read(),e[i]=read(),a[i]=read();
s[k]=,e[k]=m,a[i]=,solve(,n,,k);
for (i=;i<=n;++i)
if (ans[i]==k) puts("NIE");
else printf("%d\n",ans[i]);
return ;
}
[Poi2011]Meteors 题解的更多相关文章
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
- BZOJ2527: [Poi2011]Meteors
补一发题解.. 整体二分这个东西,一开始感觉复杂度不是很靠谱的样子 问了po姐姐,说套主定理硬干.. #include<bits/stdc++.h> #define ll long lon ...
- 【BZOJ2527】[Poi2011]Meteors 整体二分
[BZOJ2527][Poi2011]Meteors Description Byteotian Interstellar Union (BIU) has recently discovered a ...
- 2527: [Poi2011]Meteors[整体二分]
2527: [Poi2011]Meteors Time Limit: 60 Sec Memory Limit: 128 MB Submit: 1528 Solved: 556 [Submit][S ...
- 【bzoj2527】[Poi2011]Meteors(树状数组(单点查询,区间修改)+整体二分)
[bzoj2527][Poi2011]Meteors Description Byteotian Interstellar Union (BIU) has recently discovered a ...
- BZOJ2527 [Poi2011]Meteors 整体二分 树状数组
原文链接http://www.cnblogs.com/zhouzhendong/p/8686460.html 题目传送门 - BZOJ2527 题意 有$n$个国家. 太空里有$m$个太空站排成一个圆 ...
- BZOJ 2527 [Poi2011]Meteors(整体二分)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2527 [题目大意] 有N个成员国.现在它发现了一颗新的星球, 这颗星球的轨道被分为M份 ...
- BZOJ 2527 [Poi2011]Meteors:整体二分
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2527 题意: 有n个国家和m个空间站,每个空间站都属于一个国家,一个国家可以有多个空间站, ...
- 【bzoj2527】[Poi2011]Meteors 整体二分+树状数组
题目描述 有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨.BIU已经预测了接下来K场陨石雨的情况.BI ...
随机推荐
- WebStorm 10.0.3注册码
UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJkeVJB ...
- (转)关于IC设计的想法 Author :Fengzhepianzhou
一.工具的使用 工欲善其事,必先利其器.我们做IC设计的需要掌握的工具:仿真(vcs.modelsim),综合工具(dc.QS.ISE),时序分析(pt.其他的).以及后端的一些工具,比如astro. ...
- Tomcat配置Oracle数据源
开发环境:Eclipse luna.tomcat 7.Oracle 配置Oracle datasource步骤 第一步:打开tomcat目录下的 context.xml 文件,添加 Resource ...
- NSValue的个人想法
通过下面的代码,又可以将NSValue转换成CGRect,CGPoint等类型的数值. CGRect imageRect = [[self.lockImageRectArray objectAtInd ...
- Ubuntu系统下配置PHP支持SQLServer 2005
最近在做一个项目,该项目的数据库是微软公司的的SQLserver ,数据库安装在另一台windows服务器上,而项目却部署在ubuntu server上.那么这样就会涉及到项目在linux上如何链接S ...
- Javaweb学习笔记5—Cookie&Session
今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...
- Android Studio 中文件查询方法总结
搜索单词 Windows: Ctrl + F Mac : Cmd + F 会在当前激活的文件上查询输入的关键字,以高亮显示 跳转行 Windows: Ctrl + L Mac : Cmd + ...
- win10使用自带虚拟机没有Hyper-V场景
开始咯~ 1.打开控制面板-程序和功能-启用或关闭Windows功能 2.发现下面并没有Hyper-v 真难受~~~ 然后百度了一下原来是家庭版的win10没有.那就只能往下面看咯~ 3.在桌面添 ...
- 【转载】用Python实现端口映射功能(A/B/C内外网)
转载地址 :http://hutaow.com/blog/2014/09/08/write-tcp-mapping-program-with-python/ 有A,B,C三台计算机,A,B互通,B,C ...
- python程序的编辑和运行、变量
第一个python程序 python是解释型弱类型高级语言 常见的python解释器CPython.IPython.pypy.JPython.IronPython 方法一.python程序可以写在命令 ...