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的更多相关文章

  1. 洛谷 P3527 [POI2011]MET-Meteors 解题报告

    P3527 [POI2011]MET-Meteors 题意翻译 \(\tt{Byteotian \ Interstellar \ Union}\)有\(N\)个成员国.现在它发现了一颗新的星球,这颗星 ...

  2. 「POI2011」Meteors

    「POI2011」Meteors 传送门 整体二分,树状数组实现区间修改单点查询,然后注意修改是在环上的. 参考代码: #include <cstdio> #include <vec ...

  3. 洛谷P3527 [POI2011]MET-Meteors [整体二分]

    题目传送门 Meteors 格式难调,题面就不妨放了. 分析: 一道整体二分的练手题. 就是一般的整体二分的套路,但是要注意,将修改和询问加入队列的时候要先加修改再加询问.另外,博主代码打得太丑,常数 ...

  4. 【BZOJ】【2527】【POI2011】Meteors

    整体二分+树状数组 整体二分……感谢zyf提供的入门题 简单粗暴的做法:枚举每一个国家,二分他的$w_i$,然后计算……然而这样效率很低…… 整体二分就是:对所有的国家一起进行二分,$w_i$在mid ...

  5. [洛谷P3527] [POI2011]MET-Meteors

    洛谷题目链接:[POI2011]MET-Meteors 题意翻译 Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1 ...

  6. 【BZOJ2527】【POI2011】Meteors [整体二分]

    Meteors Time Limit: 60 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...

  7. 洛谷P3527 [POI2011]MET-Meteors(整体二分)

    传送门 整体二分 先二分一个答案,判断是否可行,把可行的全都扔到左边,不可行的扔到右边 判断是否可行用树状数组就行 具体细节看代码好了 整体二分细节真多……也可能是我大脑已经退化了? //minamo ...

  8. Luogu P3527 [POI2011]MET-Meteors 整体二分

    思路:整体二分 提交:4次 错因:树状数组开的$int$ 题解: 二分操作序列,将仅用$[l,md]$即可满足要求的国家递归到左半边,将仅用$[l,md]$不能满足要求的国家,把他们的要求去掉左半边的 ...

  9. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

随机推荐

  1. 如何查找Authorization object在哪些ABAP代码里使用到

    使用事务码SUIM: 双击where-Used List->Authorization Objects->In Programs: 输入要查找的Authorization Object名称 ...

  2. 【LOJ2461】「2018 集训队互测 Day 1」完美的队列(分块+双指针)

    点此看题面 大致题意: 让你维护\(n\)个有限定长度的队列,每次区间往队列里加数,求每次加完后的队列里剩余元素种类数. 核心思路 这道题可以用分块+双指针去搞. 考虑求出每个操作插入的元素在队列中被 ...

  3. ACM-ICPC (10/17)

    今天满课啊,天气太冷了,网上找了一下虚树的东西,还没弄懂~~~(:´д`)ゞ 牛客网挑战赛1 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条 ...

  4. HDU 2647 拓扑排序

    题意:每个人的工资至少888,然后有m个条件,前者比后者要多.求最少工资. 分析: 最开始的开邻接矩阵的肯定超时,如果dfs,会出现由于刚开始不是从入度为0的点出发,后期修改不了.比较麻烦. 正确方式 ...

  5. HDU 5258 数长方形【离散化+暴力】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5258 数长方形 Time Limit: 2000/1000 MS (Java/Others)    Me ...

  6. 使用ToDateTime方法转换日期显示格式

    实现效果: 知识运用: Convert类的ToDateTime方法:(将字符串转化为DateTime对象) public static DateTime ToDateTime(string value ...

  7. P1272

    P1272 重建道路 题目描述 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟 ...

  8. 【字符串】跳来跳去的KMP匹配

    原理: 不给予证明啦(懒得一批 但是代码中有给还算详细的注释 参考:https://www.cnblogs.com/yjiyjige/p/3263858.html 模板题: 洛谷P3375: http ...

  9. linux 学习(二)防火墙

    ubuntu 第四 防火墙 安装 sudo apt-get install ufw 启用 sudo ufw enable 拒绝所有 sudo default deny 开启端口 sudo ufw al ...

  10. ubuntu开启ssh连接

    1.安装openssh-server sudo apt-get install -y openssh-server 2.修改/etc/ssh/sshd-config配置 PermitRootLogin ...