Luogu3527 POI2011 Meteors 整体二分、树状数组、差分
比较板子的整体二分题目,时限有点紧注意常数
整体二分的过程中将时间在\([l,mid]\)之间的流星使用树状数组+差分进行维护,然后对所有国家查看一遍并分好类,递归下去,记得消除答案在\([mid+1,r]\)的询问中时间在\([l,mid]\)的流星操作的贡献
注意:可能存在某一段时间某一个国家的流星数量超过long long范围,应该当某个时候国家流星量和大于等于国家需求值时直接退出,这样可以避免这个问题。
#include<bits/stdc++.h>
#define INF 0x7fffffff
#define lowbit(x) ((x) & -(x))
using namespace std;
inline int read(){
int a = 0;
char c = getchar();
while(!isdigit(c))
c = getchar();
while(isdigit(c)){
a = a * 10 + c - 48;
c = getchar();
}
return a;
}
const int MAXN = 3e5 + 10;
vector < int > bel[MAXN];
long long BIT[MAXN];
int qry[MAXN][2] , tp[2][MAXN][2] , mod[MAXN][3] , ans[MAXN];
int N , M , K;
inline void add(int p , int num){
while(p <= M){
BIT[p] += num;
p += lowbit(p);
}
}
inline long long get(int p){
long long sum = 0;
while(sum < 1e9 && p){
sum += BIT[p];
p -= lowbit(p);
}
return sum;
}
void solve(int ql , int qr , int l , int r){
if(qr < ql)
return;
if(l == r){
for(int i = ql ; i <= qr ; ++i)
ans[qry[i][0]] = l;
return;
}
int mid = (l + r) >> 1 , p0 = 0 , p1 = 0;
for(int i = l ; i <= mid ; ++i){
add(mod[i][1] + 1 , -mod[i][2]);
add(mod[i][0] , mod[i][2]);
if(mod[i][0] > mod[i][1])
add(1 , mod[i][2]);
}
for(int i = ql ; i <= qr ; ++i){
long long sum = 0;
for(int j = 0 ; j < bel[qry[i][0]].size() && sum < qry[i][1] ; ++j)
sum += get(bel[qry[i][0]][j]);
if(sum >= qry[i][1]){
tp[0][++p0][0] = qry[i][0];
tp[0][p0][1] = qry[i][1];
}
else{
tp[1][++p1][0] = qry[i][0];
tp[1][p1][1] = qry[i][1] - sum;
}
}
memcpy(qry + ql , tp[0] + 1 , sizeof(int) * p0 * 2);
memcpy(qry + ql + p0 , tp[1] + 1 , sizeof(int) * p1 * 2);
for(int i = l ; i <= mid ; ++i){
add(mod[i][1] + 1 , mod[i][2]);
add(mod[i][0] , -mod[i][2]);
if(mod[i][0] > mod[i][1])
add(1 , -mod[i][2]);
}
solve(ql , ql + p0 - 1 , l , mid);
solve(ql + p0 , qr , mid + 1 , r);
}
signed main(){
N = read();
M = read();
for(int i = 1 ; i <= M ; ++i)
bel[read()].push_back(i);
for(int i = 1 ; i <= N ; ++i){
qry[i][0] = i;
qry[i][1] = read();
}
K = read();
for(int i = 1 ; i <= K ; ++i){
mod[i][0] = read();
mod[i][1] = read();
mod[i][2] = read();
}
solve(1 , N , 1 , K + 1);
for(int i = 1 ; i <= N ; ++i)
if(ans[i] == K + 1)
puts("NIE");
else
printf("%d\n" , ans[i]);
return 0;
}
Luogu3527 POI2011 Meteors 整体二分、树状数组、差分的更多相关文章
- 【bzoj2527】[Poi2011]Meteors 整体二分+树状数组
题目描述 有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨.BIU已经预测了接下来K场陨石雨的情况.BI ...
- BZOJ2527[Poi2011]Meteors——整体二分+树状数组
题目描述 Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galaxy. The ...
- BZOJ2527 [Poi2011]Meteors 整体二分 树状数组
原文链接http://www.cnblogs.com/zhouzhendong/p/8686460.html 题目传送门 - BZOJ2527 题意 有$n$个国家. 太空里有$m$个太空站排成一个圆 ...
- BZOJ 2527 [Poi2011]Meteors (整体二分+树状数组)
整体二分板题,没啥好讲的-注意是个环-还有所有贡献会爆longlong,那么只要在加之前判断一下有没有达到需要的值就行了- CODE #include <set> #include < ...
- 【BZOJ-2527】Meteors 整体二分 + 树状数组
2527: [Poi2011]Meteors Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 831 Solved: 306[Submit][Stat ...
- bzoj 2527 Meteors - 整体二分 - 树状数组
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
- BZOJ 2527 [POI2011]MET-Meteors (整体二分+树状数组)
题目大意:略 洛谷传送门 整体二分裸题 考虑只有一个国家的情况如何处理 对询问数量二分答案,暴力$O(m)$打差分,求前缀和验证,时间是$O(mlogK)$ 如果有$n$个国家,就是$O(nmlogK ...
- 【BZOJ3110】【整体二分+树状数组区间修改/线段树】K大数查询
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...
- BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组
BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组 Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位 ...
- 【bzoj3110】[Zjoi2013]K大数查询 整体二分+树状数组区间修改
题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...
随机推荐
- 【代码笔记】Web-利用Dreamweaver实现form
一,打开Dreamweaver---->File---New---->如下图所示.选择HTML,点击OK. 二,会出现如下图所示界面.把光标放到Body处. 三,将上面的栏切换到Desig ...
- 【读书笔记】iOS-使用蓝牙
蓝牙是由Sony Ericsso公司研发出来的,它是一种无线通讯协议,主要用于短程和低耗电设备,其有效通讯范围约30ft,传输速度为1MB/s.与Wifi设计初衷不同,蓝牙适用于无线的外围设备,进行小 ...
- 03--css形状--css揭秘
形状 一 自适应的椭圆 1.难题 1> 圆 你可能注意到过, 给任何正方形元素设置一个足够大的border-radius, 就可以把它变成一个圆形.所用到的CSS 代码如下所示: #bd { w ...
- Web.config配置customErrors mode为Off后依然不显示具体错误的可能原因。
有时候我们的网站程序在本地运行没有问题,但在上传到远程服务器后则报错.这就需要我们了解具体错误,但IIS默认只显示统一的运行时错误,想要知道具体错误就需要配置Web.config中customErro ...
- 数据库的IO and 数据库优化问题
一.IO介绍 IO有四种类型:连续读,随机读,随机写和连续写,连续读写的IO size通常比较大(128KB-1MB),主要衡量吞吐量,而随机读写的IO size比较小(小于8KB),主要衡量IOPS ...
- asp.net webapi 自定义身份验证
/// <summary> /// 验证 /// </summary> /// Account API账号 /// TimeStamp 请求时间 /// Sign 所有请求参数 ...
- VMware安装CentOS6
1. 搭建虚拟化环境常见故障讲解 2. 安装CentOS Linux系统 ……………… PS:运维老鸟教你安装centos6.5如何选择安装包 3. 远程连接LInux ip配置 注意:不用做任何修改 ...
- 常见的web攻击方式
跨站脚本攻击(XSS) 概述 跨站脚本攻击(XSS,Cross-site scripting),指攻击者在网页中嵌入恶意脚本程序,是最常见和基本的攻击WEB网站的方法.攻击者在网页上发布包含攻击性代码 ...
- Alpha冲刺! Day12 - 砍柴
Alpha冲刺! Day12 - 砍柴 今日已完成 晨瑶:终于更了 Gitkraken 团队协作教程. 昭锡:初步学习了解Android动画. 永盛:用户逻辑基本完成. 立强:从众多开源库中找到两个合 ...
- WPF之托盘图标的设定
首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Collections.Generic; using ...