Luogu3527:[POI2011]MET-Meteors
题面
Sol
整体二分
比较简单,当练手题
每次树状数组统计
# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(3e5 + 5);
IL ll Input(){
RG ll x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
}
int n, m, k, ql[_], qr[_], qv[_], ans[_];
vector <int> son[_];
struct Data{
int id;
ll v;
} p[_], q1[_], q2[_];
ll bit[_];
IL void Modify(RG int x, RG ll v){
for(; x <= m; x += x & -x) bit[x] += v;
}
IL ll Query(RG int x){
RG ll ret = 0;
for(; x; x -= x & -x) ret += bit[x];
return ret;
}
IL void Solve(RG int l, RG int r, RG int L, RG int R){
if(L > R) return;
if(l == r){
for(RG int i = L; i <= R; ++i) ans[p[i].id] = l;
return;
}
RG int mid = (l + r) >> 1, t1 = 0, t2 = 0;
for(RG int i = l; i <= mid; ++i)
if(ql[i] <= qr[i])
Modify(ql[i], qv[i]), Modify(qr[i] + 1, -qv[i]);
else Modify(1, qv[i]), Modify(qr[i] + 1, -qv[i]), Modify(ql[i], qv[i]);
for(RG int i = L; i <= R; ++i){
RG ll sum = 0;
for(RG int j = 0, len = son[p[i].id].size(); j < len; ++j)
sum += Query(son[p[i].id][j]);
if(p[i].v <= sum) q1[++t1] = p[i];
else p[i].v -= sum, q2[++t2] = p[i];
}
for(RG int i = l; i <= mid; ++i)
if(ql[i] <= qr[i])
Modify(ql[i], -qv[i]), Modify(qr[i] + 1, qv[i]);
else Modify(1, -qv[i]), Modify(qr[i] + 1, qv[i]), Modify(ql[i], -qv[i]);
for(RG int i = L, j = 1; j <= t1; ++i, ++j) p[i] = q1[j];
for(RG int i = L + t1, j = 1; j <= t2; ++i, ++j) p[i] = q2[j];
Solve(l, mid, L, L + t1 - 1); Solve(mid + 1, r, L + t1, R);
}
int main(RG int argc, RG char* argv[]){
n = Input(); m = Input();
for(RG int i = 1; i <= m; ++i) son[Input()].push_back(i);
for(RG int i = 1; i <= n; ++i) p[i].id = i, p[i].v = Input();
k = Input();
for(RG int i = 1; i <= k; ++i)
ql[i] = Input(), qr[i] = Input(), qv[i] = Input();
ql[k + 1] = 1; qr[k + 1] = m; qv[k + 1] = 1e9;
Solve(1, k + 1, 1, n);
for(RG int i = 1; i <= n; ++i)
if(ans[i] == k + 1) puts("NIE");
else printf("%d\n", ans[i]);
return 0;
}
Luogu3527:[POI2011]MET-Meteors的更多相关文章
- 「POI2011」Meteors
「POI2011」Meteors 传送门 整体二分,树状数组实现区间修改单点查询,然后注意修改是在环上的. 参考代码: #include <cstdio> #include <vec ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
- BZOJ2527:[POI2011]Meteors
浅谈离线分治算法:https://www.cnblogs.com/AKMer/p/10415556.html 题目传送门:https://lydsy.com/JudgeOnline/problem.p ...
- 【BZOJ】【2527】【POI2011】Meteors
整体二分+树状数组 整体二分……感谢zyf提供的入门题 简单粗暴的做法:枚举每一个国家,二分他的$w_i$,然后计算……然而这样效率很低…… 整体二分就是:对所有的国家一起进行二分,$w_i$在mid ...
- 【BZOJ2527】【POI2011】Meteors [整体二分]
Meteors Time Limit: 60 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...
- BZOJ2276:[POI2011]Temperature
浅谈队列:https://www.cnblogs.com/AKMer/p/10314965.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...
- BZOJ2212:[POI2011]Tree Rotation
浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...
- 在非小细胞肺癌中,MET基因的14号外显子突变和年龄,依赖于癌症阶段的CNV,C-MET过表达的关系
背景:c-MET是肝细胞生长因子的酪氨酸激酶受体.MET 14号外显子编码部分c-MET的胞内跨膜结构域,包括重要的调节原件,比如酪氨酸1003,一个降解c-MET的相关酶的结合位点. 拥有MET 1 ...
- CQD(陈丹琦)分治 & 整体二分——专题小结
整体二分和CDQ分治 有一些问题很多时间都坑在斜率和凸壳上了么--感觉斜率和凸壳各种搞不懂-- 整体二分 整体二分的资料好像不是很多,我在网上找到了一篇不错的资料: 整体二分是个很神的东西 ...
随机推荐
- 将html table 转成 excel
package com.sun.office.excel; /** * 跨行元素元数据 * */ public class CrossRangeCellMeta { public CrossRange ...
- Halcon一日一练:CAD类型的相关操作
大很多场合,需要在视觉程序中导入CAD文档,比如,在3C行业,需要对手机外壳进行CNC加工,或者点胶操作,此时,需要获取产品的各个点的数据.如果将CAD直接导入,就会大的减少编程工作量,同时也能达到很 ...
- TKCPP
volume one: http://book.huihoo.com/thinking-in-cpp-2nd-ed-vol-one/ volume2 : http://book.huihoo.com/ ...
- Windows Server 2016-重置目录还原模式密码
目录还原模式:Directory Services Restore Mode,简称DSRM,又称目录服务恢复模式.是Windows域控制器的服务器安全模式启动选项.DSRM允许管理员用来修复或还原修复 ...
- go入门
1.hello world 小程序 package main import "fmt" func main() { fmt.println("hello,世界" ...
- Java经典编程题50道之十三
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? public class Example13 { public static void main(St ...
- java-redis初探
一.Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...
- Nginx限流办法
Nginx 限流 电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单.信誉分析,进而根据用户ip信誉权重做相应的流量拦截.限制流量.Nginx自身有的请求限制模块ng ...
- Docker镜像的构成__docker commit
镜像是容器的基础,每次执行docker run的时候都会制定哪个镜像作为容器运行的基础.在之前的例子中,我们所使用的都来自于Docker Hub的镜像.直接使用这些镜像是可以满足一定的需求,而当这些镜 ...
- SpringBoot SpringSecurity4整合,灵活权限配置,弃用注解方式.
SpringSecurity 可以使用注解对方法进行细颗粒权限控制,但是很不灵活,必须在编码期间,就已经写死权限 其实关于SpringSecurity,大部分类都不需要重写,需要的只是妥善的配置. 每 ...