https://www.luogu.org/problem/P3488

根据Hall定理 左边任意一个区间L-R a[i]的和sum[l~r] 都要<= (R-L+1+d)*K

把(R-L+1)*K 挪到左边 即为 对任意L-R区间 有 $\sum_{i=L}^R{(a[i]-k)} \le K*D$

然后用线段树最大字段和去维护它即可

#include<bits/stdc++.h>
#define RG register
using namespace std;
typedef long long ll;
const int MAXN = ;
struct segment_tree {
ll lmax, rmax, ans, sum;
} sgt[MAXN << ];
int n, m;
ll k, d;
inline void pushup(int x) {
sgt[x].sum = sgt[x << ].sum + sgt[x << | ].sum;
sgt[x].lmax = max(sgt[x << ].lmax, sgt[x << ].sum + sgt[x << | ].lmax);
sgt[x].rmax = max(sgt[x << | ].rmax, sgt[x << ].rmax + sgt[x << | ].sum);
sgt[x].ans = max(sgt[x << ].ans, max(sgt[x << | ].ans, sgt[x << ].rmax + sgt[x << | ].lmax));
}
void build(int x, int l, int r) {
if (l == r) {
sgt[x].lmax = sgt[x].rmax = ;
sgt[x].sum = sgt[x].ans = -k;
return ;
}
int mid = (l + r) >> ;
build(x << , l, mid);
build(x << | , mid + , r);
pushup(x);
}
void update(int x, int l, int r, int aim, ll add) {
if (l == r) {
sgt[x].sum += add, sgt[x].ans += add;
sgt[x].lmax = sgt[x].rmax = max(sgt[x].sum, 0LL);
return ;
}
int mid = (l + r) >> ;
if (aim <= mid) {
update(x << , l, mid, aim, add);
} else {
update(x << | , mid + , r, aim, add);
}
pushup(x);
}
int main() {
ll x, y;
scanf("%d %d %lld %lld", &n, &m, &k, &d);
build(, , n);
for (int i = ; i <= m; i++) {
scanf("%lld %lld", &x, &y);
update(, , n, x, y);
if (sgt[].ans <= 1LL * k * d) {
printf("TAK\n");
} else {
printf("NIE\n");
}
}
return ;
}

最新文章

  1. 常用SQL
  2. Typescript中的class interface 只是在声明,其实什么也没有干!
  3. 开发时建议关闭chrome的缓存[Disable cache(while DevTools open)]
  4. com.microsoft.sqlserver.jdbc.SQLServerException: 用户 &#39;sa&#39; 登录失败。
  5. linux下怎么查看ssh的用户登录日志
  6. js实现打开网页自动弹出添加QQ好友邀请窗口
  7. CSS :first-child 伪类
  8. SharePoint 2013中Office Web Apps的一次排错
  9. 封装自己的ajax函数
  10. SpringMVC使用静态资源
  11. Android EditText属性
  12. 射频识别技术漫谈(19)——Desfire的3次握手认证和段密码生成
  13. Oracle 动态查询,EXECUTE IMMEDIATE select into使用方法
  14. Top 10 Books For Advanced Level Java Developers
  15. Ubuntu Intel显卡驱动安装 (Ubuntu 14.04--Ubuntu 16.10 + Intel&#174; Graphics Update Tool)
  16. 根据iOS 10 的新特性,创建iMessage App,可用于自定义表情
  17. Linux工具安装和常用配置
  18. BZOJ5203 [NEERC2017 Northern] Grand Test 【dfs树】【构造】
  19. mybatis-generator没有自动生成代码和Junit测试controller
  20. Atitit gui界面ui技术发展史与未来趋势

热门文章

  1. Kali中安装 Shodan
  2. 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误
  3. eNSP——利用单臂路由实现VLAN间路由
  4. fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
  5. (二十二)自定义简化版JDBC(Dbutils框架的设计思想)
  6. Photon Server LoadBalancing搭建
  7. python学习-7 条件语句 while循环 + 练习题
  8. docker 入门1 - 方向 【翻译】
  9. 安装 node.js npm,cnpm
  10. Java面试题之Java虚拟机垃圾回收