题面

Luogu

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

  1. 「POI2011」Meteors

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

  2. BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解

    +++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...

  3. BZOJ2527:[POI2011]Meteors

    浅谈离线分治算法:https://www.cnblogs.com/AKMer/p/10415556.html 题目传送门:https://lydsy.com/JudgeOnline/problem.p ...

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

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

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

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

  6. BZOJ2276:[POI2011]Temperature

    浅谈队列:https://www.cnblogs.com/AKMer/p/10314965.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

  7. BZOJ2212:[POI2011]Tree Rotation

    浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...

  8. 在非小细胞肺癌中,MET基因的14号外显子突变和年龄,依赖于癌症阶段的CNV,C-MET过表达的关系

    背景:c-MET是肝细胞生长因子的酪氨酸激酶受体.MET 14号外显子编码部分c-MET的胞内跨膜结构域,包括重要的调节原件,比如酪氨酸1003,一个降解c-MET的相关酶的结合位点. 拥有MET 1 ...

  9. CQD(陈丹琦)分治 & 整体二分——专题小结

    整体二分和CDQ分治 有一些问题很多时间都坑在斜率和凸壳上了么--感觉斜率和凸壳各种搞不懂-- 整体二分 整体二分的资料好像不是很多,我在网上找到了一篇不错的资料:       整体二分是个很神的东西 ...

随机推荐

  1. Python 中的闭包

    通常来说,函数中的局部变量在函数调用结束的时候不能再被引用,所分配的空间也会被回收. 但是通过闭包这种技术,函数调用结束了,它的局部变量的值还可以保存在闭包里. 试举一例: def make_adde ...

  2. TensorFlow实战之实现AlexNet经典卷积神经网络

    本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.AlexNet模型及其基本原理阐述 1.关于AlexNet ...

  3. python进阶学习笔记(一)

    python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...

  4. Tomcat启动出现:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvc]]解决办法

    严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component ...

  5. C语言_指针和数组的几种访问形式

    敲几行代码来看看几种访问的形式~ #include <stdio.h>;int main() { ] = {, , , , , }; //初始化5个元素的一维数组 int *p = arr ...

  6. 3道acm简单题(2011):1.判断是否能组成三角形;2.判断打鱼还是晒网;3.判断丑数。

    //1.输入三个正整数A.B.C,判断这三个数能不能构成一个三角形.//思路:最小的两边之和是否是大于第三边#include<iostream>#include<algorithm& ...

  7. nyoj234 吃土豆 01背包

    思路:假设我们先只考虑一行,规则就是取了i处的土豆,每一个土豆有两种选择,拿与不拿,那么i-1和i+1处的土豆都不能再取,那么要求某一行的最大取值就用一次动态规划即可,dp(i)表示前i个土豆能取得的 ...

  8. spring cloud熔断监控Hystrix Dashboard和Turbine

    参考: http://blog.csdn.net/ityouknow/article/details/72625646 完整pom <?xml version="1.0" e ...

  9. [Essay] Apache Flink:十分可靠,一分不差

    Apache Flink:十分可靠,一分不差 Apache Flink 的提出背景 我们先从较高的抽象层次上总结当前数据处理方面主要遇到的数据集类型(types of datasets)以及在处理数据 ...

  10. Nginx反向代理实现Tomcat负载均衡

    这篇短文主要介绍Tomcat的集群和用Nginx反向代理实现Tomcat负载均衡. 1.首先需要对一些知识点进行扫盲(对自己进行扫盲,囧): 集群(Cluster) 简单来说就是用N台服务器构成一个松 ...