P3527 [POI2011]MET-Meteors
P3527 [POI2011]MET-Meteors
整体二分!
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for (;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ;
int Ans[N],A[N],B1[N],B2[N],T[N];
vector <int> v[N];
struct OPT{
int l,r,val;
}OP[N]; struct BIT{
int n;
LL sum[N];
inline void update(int l,int r,int v) {
for (int p=l; p<=n; p+=p&(-p)) sum[p] += v;
for (int p=r+; p<=n; p+=p&(-p)) sum[p] -= v;
if (l > r) for (int p=; p<=n; p+=p&(-p)) sum[p] += v;
}
inline LL query(int p) { // LL
LL ans = ;
for (; p; p-=p&(-p)) ans += sum[p];
return ans;
}
inline void clear(int l,int r) {
for (int p=l; p<=n&&sum[p]; p+=p&(-p)) sum[p] = ;
for (int p=r+; p<=n&&sum[p]; p+=p&(-p)) sum[p] = ;
if (l > r) for (int p=; p<=n&&sum[p]; p+=p&(-p)) sum[p] = ;
}
}bit; void solve(int Head,int Tail,int L,int R) { // 询问的队列(即国家)[Head,Tail],答案[L,R]次之间
if (Head > Tail) return;
if (L == R) {
for (int i=Head; i<=Tail; ++i) Ans[A[i]] = L;
return;
}
int M = (L + R) / ,p1 = ,p2 = ;
for (int i=L; i<=M; ++i)
bit.update(OP[i].l,OP[i].r,OP[i].val);
for (int i=Head; i<=Tail; ++i) {
int now = A[i]; // 国家
LL sum = ;
for (int j=,lim=v[now].size(); j<lim; ++j)
if ((sum += bit.query(v[now][j])) >= T[now]) break;;
if (sum >= T[now]) B1[++p1] = A[i];
else T[now] -= sum,B2[++p2] = A[i];
}
for (int i=L; i<=M; ++i) bit.clear(OP[i].l,OP[i].r);
for (int i=; i<=p1; ++i) A[Head+i-] = B1[i];
for (int i=; i<=p2; ++i) A[Head+p1+i-] = B2[i];
solve(Head,Head+p1-,L,M);
solve(Head+p1,Tail,M+,R);
} int main() {
int n,m,k;
n = read();
bit.n = m = read();
for (int i=; i<=m; ++i) v[read()].push_back(i); // 第read()个国家的空间站i
for (int i=; i<=n; ++i) T[i] = read(),A[i] = i;
k = read();
for (int i=; i<=k; ++i)
OP[i].l = read(),OP[i].r = read(),OP[i].val = read();
OP[++k] = (OPT){m+,m+,}; // 特判不行的情况 solve(,n,,k);
for (int i=; i<=n; ++i) printf(Ans[i]==k?"NIE\n":"%d\n",Ans[i]);
return ;
}
P3527 [POI2011]MET-Meteors的更多相关文章
- 洛谷 P3527 [POI2011]MET-Meteors 解题报告
P3527 [POI2011]MET-Meteors 题意翻译 \(\tt{Byteotian \ Interstellar \ Union}\)有\(N\)个成员国.现在它发现了一颗新的星球,这颗星 ...
- 「POI2011」Meteors
「POI2011」Meteors 传送门 整体二分,树状数组实现区间修改单点查询,然后注意修改是在环上的. 参考代码: #include <cstdio> #include <vec ...
- 洛谷P3527 [POI2011]MET-Meteors [整体二分]
题目传送门 Meteors 格式难调,题面就不妨放了. 分析: 一道整体二分的练手题. 就是一般的整体二分的套路,但是要注意,将修改和询问加入队列的时候要先加修改再加询问.另外,博主代码打得太丑,常数 ...
- 【BZOJ】【2527】【POI2011】Meteors
整体二分+树状数组 整体二分……感谢zyf提供的入门题 简单粗暴的做法:枚举每一个国家,二分他的$w_i$,然后计算……然而这样效率很低…… 整体二分就是:对所有的国家一起进行二分,$w_i$在mid ...
- [洛谷P3527] [POI2011]MET-Meteors
洛谷题目链接:[POI2011]MET-Meteors 题意翻译 Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1 ...
- 【BZOJ2527】【POI2011】Meteors [整体二分]
Meteors Time Limit: 60 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...
- 洛谷P3527 [POI2011]MET-Meteors(整体二分)
传送门 整体二分 先二分一个答案,判断是否可行,把可行的全都扔到左边,不可行的扔到右边 判断是否可行用树状数组就行 具体细节看代码好了 整体二分细节真多……也可能是我大脑已经退化了? //minamo ...
- Luogu P3527 [POI2011]MET-Meteors 整体二分
思路:整体二分 提交:4次 错因:树状数组开的$int$ 题解: 二分操作序列,将仅用$[l,md]$即可满足要求的国家递归到左半边,将仅用$[l,md]$不能满足要求的国家,把他们的要求去掉左半边的 ...
- 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法
整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...
随机推荐
- libevent-select模型分析
下面内容为windows下select模型分析,原博客链接 http://blog.csdn.net/fish_55_66/article/details/50352080 https://www.c ...
- windows 网络通讯模型Overlapped (转)(未看)
https://blog.csdn.net/jofranks/article/details/7895316 https://blog.csdn.net/caoshiying/article/deta ...
- js面向对象 继承
1.类的声明 2.生成实例 3.如何实现继承 4.继承的几种方式 1.类的声明有哪些方式 <script type="text/javascript"> //类的声明 ...
- HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1221 Rectangle and Circle Time Limit: 2000/1000 MS (J ...
- TDD: 测试静态方法
对于静态方法,mock框架大多不支持测试.所以需要修改代码,以便调用的静态方法可测试. 1 一个静态方法类: public class MyHelper{ public static string ...
- LinQ 简介
LinQ是3.0新加的语法.用起来比较方便,我们可以使用较简单的方法来过滤数据和处理数据. 使用场景: 可以看到LINQ使用场景还是很多的.现在写项目基本都会用到. 在出现委托之前,我们来查找对象 在 ...
- 外部的 JavaScript
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- U盘空间释放
U盘做成启动盘后,怎么释放空间,恢复到原来的容量.这里有个帖子,我觉得很方便,不用安装什么东西,简单直接. http://blog.sina.com.cn/s/blog_68f6e8a901014cv ...
- android(eclipse)新手常见问题总结(一)
1:jdk无法更新 进入工具里面手动获取镜像资源 并且改为强制 2:报错:This version of the rendering library is more recent than you ...
- SpringBoot非官方教程 | 终章:文章汇总
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-all/ 本文出自方志朋的博客 SpringBo ...