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,虽然不影响使用,但是控制台输出一堆, ...
- Vue CLI 3 如何自定义 js 的文件名
参考链接:https://blog.csdn.net/weixin_33979363/article/details/88742342
- css消除已有的背景颜色
比如我们在第三方库的时候,样式会有你不喜欢的,就比如背景颜色.那么就要去除已有的背景颜色 background-color:transparent;
- C# 添加日志文件
StreamWriter log_sw; // 新建文件 log_sw = File.AppendText(log_str); // 写入日志文件 log_sw.WriteLine(s + " ...
- poj2486 Apple Tree (树形dp+分组背包)
题目链接:https://vjudge.net/problem/POJ-2486 题意:一棵点权树,起点在1,求最多经过m条边的最大点权和. 思路: 树形dp经典题.用3维状态,dp[u][j][0/ ...
- 什么是Java多线程?
第五阶段 多线程 前言: 一个场景:周末,带着并不存在的女票去看电影,无论是现场买票也好,又或是手机买票也好,上一秒还有位置,迟钝了一下以后,就显示该座位已经无法选中,一不留神就没有座位了,影院的票是 ...
- [转帖]POWER ISA开源 浪潮商用机器加速POWER技术生态建设步伐
POWER ISA开源 浪潮商用机器加速POWER技术生态建设步伐 [原创] 2019-08-26 18:51:04 关键字: 开源 Power 浪潮商用机器 http://server.zhid ...
- Django-filter报错:__init__() got an unexpected keyword argument 'name'
原因是 自从 django-filter2.0之后 将Filter的name字段 更名为 field_name 所以需要这样写: class GoodsFilter(filters.FilterSet ...
- SQL SERVER YEAR函数
定义: YEAR函数返回指定日期的年的部分 语法: YEAR(date) 参数: ①date参数是合法的日期表达式. 返回值: int型数据 例: 声明:本文是本人查阅网上及书籍等各种资料,再加上自 ...
- PHP后台开发小经验
js页面传参数 js的参数传输是关键,尤其是当一个页面的数据需要分步骤上传时. 同样的删除功能,不会操作批量删除时可以尝试单个删除,功能差不多,实现功能的方法也千千万,先做成它是第一位. 主页面很多条 ...