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大是在第几次插入中被插入的……嗯大概就 ...
随机推荐
- (转)Wireshark基本介绍和学习TCP三次握手
原地址https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html#filter 阅读目录 wireshark介绍 wireshar ...
- Android(java)学习笔记6:实现Runnable接口创建线程 和 使用Callable和Future创建线程
1. 前面说的线程的实现是新写一个子类继承Thread: 是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例 2. 这里说的方案2是指 ...
- 前端:Bootstrap框架
一,bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局, ...
- luogu P2124 奶牛美容
嘟嘟嘟 首先数据范围那么小,那么算法也是相当暴力的. 对于一个点(x, y)所属的联通块,预处理出从这个点出发到这个块外的所有点的曼哈顿距离.复杂度O(n4). 然后求答案:最少答案不一定是三个联通块 ...
- jackson简单实用
---------------------------------------------------------------------------------------------------- ...
- asp.net 过滤器
asp.net 制作过滤器原理:重写ASP.net管道事件 1.通过HttpApplicationFactory创建一个HttpApplication对象,负责处理整个请求. 2.调用ProcessR ...
- c#正则表达式最简demo
各个语言的正则表达式规则略有不同 项目中用到,所以将这个最简单的demo记录 using System; using System.Collections.Generic; using System. ...
- phpstorm常用plugins
CodeGlance JsonOnlineViewer CSS-X-Fire Laravel Plugin PHP annotations
- lucene&solr学习——索引维护
1.索引库的维护 索引库删除 (1) 全删除 第一步:先对文档进行分析 public IndexWriter getIndexWriter() throws Exception { // 第一步:创建 ...
- C#基础实例
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...