P3488 [POI2009]LYZ-Ice Skates
这一题基础是二分图匹配,并且要知道一个 $Hall$ 定理:对于二分图能完全匹配的充要条件是,设点数少的那边为左边,点数为 $n$,对于 $k \in [1,n]$ ,左边任意 $k$ 个点,右边都要有至少有 $k$ 的点与左边这些点相连
证明好像也不难,首先必要性是显然的
然后考虑对于左边 $n$ 个点的集合,如果他满足 $Hall$ 定理并且存在一个点 $X_a$ 没法匹配,那么这个点 $X_a$ 连向的 $Y_{b,c,d..}$ 一定已经都有匹配,设此时是 $X_{b,c,d...}$ 匹配 $Y_{b,c,d...}$ ,
那么由 $Hall$ 定理得到 $X_a,X_{b,c,d...}$ 这些点构成的集合一定还有一条出边连向 $Y_{b,c,d}$ 之外的点(不然 $Y$ 的点数小于 $X$ 的点数),
所以可以这样一直增广下去最终一定能找到一条增广路
然后考虑如何保证题目中一定存在完全匹配,显然我们只要考虑连续的一段型号的人,这样会让右边空闲的位置尽量少
如果不合法那么一定存在连续的一段 $[l,r]$ ,使得 $\sum_{i=l}^{r}X_i>(r-l+1+d)*k$ ,其中 $X_i$ 为 $i$ 号脚的人的数量,式子表示人比鞋多
变一下式子即为 $\sum_{i=l}^{r}(X_i-k)>d*k$ ,所以我们只要能判断是否有连续的一段 $X-k$ 的和大于 $d*k$
直接用线段树维护一下最大子段和即可
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=4e5+;
int n,m,K,D;
struct Segtree {
ll sum[N<<],mx[N<<],lmx[N<<],rmx[N<<];
inline void pushup(int o)
{
int lc=o<<,rc=o<<|;
mx[o]=max( max(mx[lc],mx[rc]) , max(0ll,rmx[lc]+lmx[rc]) );
lmx[o]=max( max(0ll,lmx[lc]) , sum[lc]+lmx[rc] );
rmx[o]=max( max(0ll,rmx[rc]) , sum[rc]+rmx[lc] );
sum[o]=sum[lc]+sum[rc];
}
void build(int o,int l,int r)
{
if(l==r) { sum[o]=-K; return; }
int mid=l+r>>; build(o<<,l,mid); build(o<<|,mid+,r);
pushup(o);
}
void change(int o,int l,int r,int pos,int v)
{
if(l==r) { sum[o]+=v; lmx[o]=rmx[o]=mx[o]=max(0ll,sum[o]); return; }
int mid=l+r>>;
pos<=mid ? change(o<<,l,mid,pos,v) : change(o<<|,mid+,r,pos,v);
pushup(o);
}
ll query() { return mx[]; }
}T;
int main()
{
n=read(),m=read(),K=read(),D=read();
T.build(,,n); int a,b;
for(int i=;i<=m;i++)
{
a=read(),b=read(); T.change(,,n,a,b);
if(T.query()>1ll*K*D) printf("NIE\n");
else printf("TAK\n");
}
return ;
}
P3488 [POI2009]LYZ-Ice Skates的更多相关文章
- BZOJ1135: [POI2009]Lyz
1135: [POI2009]Lyz Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 264 Solved: 106[Submit][Status] ...
- [BZOJ 1135][POI2009]Lyz
[BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...
- 1135: [POI2009]Lyz
1135: [POI2009]Lyz https://lydsy.com/JudgeOnline/problem.php?id=1135 分析: hall定理+线段树连续区间的最大的和. 首先转化为二 ...
- 【BZOJ1135】[POI2009]Lyz 线段树
[BZOJ1135][POI2009]Lyz Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了x ...
- bzoj 1135 [POI2009]Lyz 线段树+hall定理
1135: [POI2009]Lyz Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 573 Solved: 280[Submit][Status][ ...
- 【BZOJ】1135: [POI2009]Lyz
题意 有\(1\)到\(n(1 \le n \le 200000)\)号的溜冰鞋各\(k(1 \le k \le 10^9)\)双.已知\(x\)号脚的人可以穿\(x\)到\(x+d\)的溜冰鞋. 有 ...
- 【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)
题面戳我 Solution 二分图是显然的,用二分图匹配显然在这个范围会炸的很惨,我们考虑用霍尔定理. 我们任意选取穿\(l,r\)的号码鞋子的人,那么这些人可以穿的鞋子的范围是\(l,r+d\),这 ...
- 【BZOJ1135】[POI2009]Lyz
题解: hall定理..第一次听说 思考了半小时无果 二分图匹配时间显然太大 但是有这个hall定理 二分图有完美匹配的充要条件是 对于左边任意一个集合(大小为|s|),其连边点构成的集合(大小为|s ...
- [BZOJ1135][POI2009]Lyz[霍尔定理+线段树]
题意 题目链接 分析 这个二分图匹配模型直接建图的复杂度太高,考虑霍尔定理. 对于某些人组成的区间,我们只需要考虑他们的并是一段连续的区间的集合.更进一步地,我们考虑的人一定是连续的. 假设我们考虑的 ...
随机推荐
- 创建DevExtreme应用程序
如果你从头开始一个项目,那就使用DevExtreme Angular 模板.生成的项目带导航菜单以及在响应布局中的几个对应的示例视图. 你可以使用 DevExtreme CLI 生成应用程序: npx ...
- oc 计算 带括号 式子
下面代码实现可以计算 类似以下的字符窜. @"(1+2*(3+4)+3)/2" 自写一个简单 stack .不知道 OC为什么不提供Stack类. #import <Foun ...
- Android——NativeActivity - C/C++ Apk开发
android基本的四大组件之一Activity,android开发的第一个hello world 创建的就是这个继承了Activity类的类,拥有对应的生命周期,由AMS维护,只需要重写父类对应的方 ...
- vmalloc详解
vmalloc是一个接口函数, 内核代码使用它来分配在虚拟内存中连续但在物理内存中不一定连续的内存. 只需要一个参数,以字节为单位. 使用vmalloc的最著名的实例是内核对模块的实现. 因为模块可能 ...
- 3-mybatis-xml配置
配置文件主要在官网文档是已有详细说明. 1 properties 在上一节中已经有说明. 2 settings MyBatis中的调整设置. <settings> <!--全局地开 ...
- oracle 查看数据库和表命令
1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面. 2.sqlplus /nolog 或sqlplus system/manager 或./sql ...
- Java爬虫爬取京东商品信息
以下内容转载于<https://www.cnblogs.com/zhuangbiing/p/9194994.html>,在此仅供学习借鉴只用. Maven地址 <dependency ...
- MySQL SQL查询优化技巧详解
MySQL SQL查询优化技巧详解 本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...
- Xcode里如何修改类的名字
今天有朋友问我他的AFNetWorking和别的文件冲突啦,于是我帮他测试了下: 传送门: http://jingyan.baidu.com/article/fb48e8be35726f6e622e1 ...
- react 添加代理 proxy
react package.json中proxy的配置如下 "proxy": { "/api/rjwl": { "target": &quo ...