BZOJ 1135 P3488 LYZ-Ice Skates 线段树+Hall
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 ;
}
BZOJ 1135 P3488 LYZ-Ice Skates 线段树+Hall的更多相关文章
- [BZOJ 1135][POI2009]Lyz
[BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...
- bzoj 1135 [POI2009]Lyz 线段树+hall定理
1135: [POI2009]Lyz Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 573 Solved: 280[Submit][Status][ ...
- [BZOJ 2212] [Poi2011] Tree Rotations 【线段树合并】
题目链接:BZOJ - 2212 题目分析 子树 x 内的逆序对个数为 :x 左子树内的逆序对个数 + x 右子树内的逆序对个数 + 跨越 x 左子树与右子树的逆序对. 左右子树内部的逆序对与是否交换 ...
- [BZOJ 3995] [SDOI2015] 道路修建 【线段树维护连通性】
题目链接:BZOJ - 3995 题目分析 这道题..是我悲伤的回忆.. 线段树维护连通性,与 BZOJ-1018 类似,然而我省选之前并没有做过 1018,即使它在 ProblemSet 的第一页 ...
- [BZOJ 3888] [Usaco2015 Jan] Stampede 【线段树】
题目链接:BZOJ - 3888 题目分析 首先,计算出每个线段在 x 坐标 0 处出现的时间开始点和结束点,就转成了时间轴上的线段. 然后就是看每条线段是否被 y 比它小的线段完全覆盖了.注意求出的 ...
- [BZOJ 3747] [POI 2015] Kinoman【线段树】
Problem Link : BZOJ 3747 题解:ZYF-ZYF 神犇的题解 解题的大致思路是,当区间的右端点向右移动一格时,只有两个区间的左端点对应的答案发生了变化. 从 f[i] + 1 到 ...
- BZOJ 1593: [Usaco2008 Feb]Hotel 旅馆 [线段树]
传送门 题意: 操作1:找长为$len$的空区间并填满,没有输出$0$ 操作2:将$[l,r]$之间的区间置空 我真是太弱了这种线段树还写了一个半小时,中间为了查错手动模拟了$30min$线段树操作, ...
- BZOJ.4137.[FJOI2015]火星商店问题(线段树分治 可持久化Trie)
BZOJ 洛谷 一直觉得自己非常zz呢.现在看来是真的=-= 注意题意描述有点问题,可以看BZOJ/洛谷讨论. 每个询问有两个限制区间,一是时间限制\([t-d+1,t]\),二是物品限制\([L,R ...
- BZOJ.1805.[IOI2007]sail船帆(贪心 线段树)
BZOJ 洛谷 首先旗杆的顺序没有影响,答案之和在某一高度帆的总数有关.所以先把旗杆按高度排序. 设高度为\(i\)的帆有\(s_i\)个,那么答案是\(\sum\frac{s_i(s_i-1)}{2 ...
随机推荐
- Vuetify Warning: Unable to locate target [data-app]
今天在大改 nuxt 项目 layout 的时候,将 Vuetify 的 side nav 换成 Element 的折叠式 nav 后,发现了一个 Warning,虽然不影响使用,但是控制台输出一堆, ...
- LAG函数实现环比
,)OVER(ORDER BY 年月) 环比金额 from( 年, 季度, 年月 ,SUM(金额本位币) 金额 FROM ( SELECT * FROM [dbo].[T_output] ) cb_v ...
- 【Cisco】实现同一个路由器一个端口用动态路由,另一个端口用静态路由
一.先构建以下网络图: 准备三台路由器,三台交换机,三台主机,连接所有设备并配置端口IP和网关,DCE端口的时钟频率都设置为64000.
- [转]Life of a binary
发现一篇讲程序生命周期的文章,感觉蛮不错.
- DP_Wooden Sticks
There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The st ...
- 莫比乌斯反演--HDU模板题
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1695 直接上莫比乌斯模板. #include <bits/stdc++.h> using na ...
- QQ浏览器、搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie、Session失效问题
原文:QQ浏览器.搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie.Session失效问题 这些狗日的浏览器在兼容模式下,保存Cookie会失败,是因为SameSiteMode默认为La ...
- c# 自定义解析JSON字符串数据
解析json字符串有很多方式, 1 : 在网上下载json解析的dll类库并添加引用, 调用相关方法; 2 : 使用自带类库JavaScriptSerializer的序列号和反序列化; 对于以上两个方 ...
- OpenCV安装和测试
参考链接:http://blog.csdn.net/bruce_zeng/article/details/7961153 OpenCv下载链接:http://sourceforge.net/proje ...
- gzip: stdin: not in gzip format 解决办法
# sudo tar zxvf ./jdk-7ull-linux-i586.tar.gz -C /usr/lib/jvm gzip: stdin: not in gzip format tar: Ch ...