【BZOJ】【P1135】【POI2009】【Lyz】【题解】【线段树+Hall定理】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1135
把鞋子和人抽象成二分图
那么有解的条件就是任意一个人的集合的人数<=所连接的鞋子数量,对于序列来说连续子序列就够了(我不知道为什么……)
用 表示鞋号为i的人的个数
那么
令
则
维护t'i的最长连续子序列
Code:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2e5+5;
typedef long long LL;
struct seg{struct node{LL ls,rs,ss,sum;node(){ls=rs=ss=sum=0;}}t[maxn<<2];#define lson i<<1,l,mid#define rson i<<1|1,mid+1,r#define L i<<1#define R i<<1|1void Add(int i,int l,int r,int ps,LL d){if(l==r){t[i].ls+=d;t[i].rs+=d;t[i].ss+=d;t[i].sum+=d;return;}int mid=(l+r)>>1;if(ps<=mid)Add(lson,ps,d);else Add(rson,ps,d);t[i].ls=max(t[L].ls,t[L].sum+t[R].ls);t[i].rs=max(t[R].rs,t[R].sum+t[L].rs);t[i].ss=max(t[L].ss,t[R].ss);t[i].ss=max(t[i].ss,t[L].rs+t[R].ls);t[i].sum=t[L].sum+t[R].sum;}
}T;
int n,m,k,d;
int main(){scanf("%d%d%d%d",&n,&m,&k,&d);for(int i=1;i<=n;i++)T.Add(1,1,n,i,-k);while(m--){int x,r;scanf("%d%d",&r,&x);T.Add(1,1,n,r,x);puts(T.t[1].ss<=(LL)d*k?"TAK":"NIE");}return 0;
}
【BZOJ】【P1135】【POI2009】【Lyz】【题解】【线段树+Hall定理】相关推荐
- 【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)
题面戳我 Solution 二分图是显然的,用二分图匹配显然在这个范围会炸的很惨,我们考虑用霍尔定理. 我们任意选取穿\(l,r\)的号码鞋子的人,那么这些人可以穿的鞋子的范围是\(l,r+d\),这 ...
- [BZOJ1135][P3488][POI2009]LYZ[线段树+Hall定理]
首先从二分图匹配的角度来想这个题,只要每个人都能和一双鞋子匹配,那么溜冰鞋就是足够的. 但看范围不能用二分图匹配来做,因为边数会爆炸 Hall定理是判定二分图是否存在完全匹配的定理. 完全匹配:是指最 ...
- [BZOJ 1135][POI2009]Lyz
[BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...
- BZOJ 1135 [POI2009]Lyz 线段树
题意:链接 方法:线段树维护子区间最值. 解析: 我们可以推出来一个式子. 就是如果满足题意的话. 那么任意一个子区间[l,r] f[i]表示穿i的鞋的人数 (r−l+1+d)∗k>=∑f[i] ...
- BZOJ[1135][POI2009]Lyz 线段树
传送门ber~ 如果某时不合法,那一定存在某段满足 (r−l+1+d)∗k<Σl≤i≤rnumi(r−l+1+d)∗k<Σl≤i≤rnumi (r-l+1+d)*k (其中 numinum ...
- Hall定理(bzoj 1135: [POI2009]Lyz)
Hall定理(二分图重要定理): 对于二分图U, V(|U|<|V|),设M(Ux)为V中可以与Ux中的点相连的点集,如果该二分图存在完美匹配 那么对于任意点集x∈U都有|M(x)|>=| ...
- BZOJ 2143 飞飞侠(线段树优化建边 / 并查集优化最短路)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2143 是 hydro 的 BZOJ ...
- BZOJ 1135: [POI2009]Lyz
首先是二分图匹配 Hall定理 令a[i]表示尺码为i的人有多少个 然后是任何的l,r a[i]之和<=(r-l+1+d)*k ->任何的l,r (a[i]-k)之和<=d*k(定 ...
- bzoj 3838: [Pa2013]Raper (线段树)
3838: [Pa2013]Raper Time Limit: 60 Sec Memory Limit: 128 MB Submit: 53 Solved: 27 [Submit][Status] ...
最新文章
- 构建Java并发模型框架
- java.util.ServiceLoader源码分析
- vscode教程笔记
- 如何下载github项目中的某一部分
- 如何判断服务器之间的服务是否可用?ping 还是 telnet?
- JAVA教程 第六讲 Java的线程和Java Applet(二)
- JavaFX技巧3:使用回调接口
- 微信正则表达式 iOS
- 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
- 人脸识别(3)---静态人脸识别和动态人脸识别的区别
- 如何快速实现FaceTime多人视频效果
- ISO14001是什么管理体系
- ms office word2013教程 - 文字处理之插入复合条饼图
- 最有效地戒掉晚睡强迫症(熬夜强迫症、假象失眠症等等)
- NVIDIA Jetson TK1学习与开发——手动刷机
- 如何用php农场项目,2020全新亲测php农场游戏源码-金币菇种植理财区块链源码 带商城系统...
- MySQL中定时任务的使用
- Python脚本抢购茅台,一键式傻瓜教程,不会python 也能用
- 全球及中国医用管材行业需求调研与竞争趋势研究报告2022版
- Android开发之旅:环境搭建及HelloWorld---吴秦(Tyler)
热门文章
- 每日一题-75(向公司CEO汇报工作的所有人)
- 放弃VMware改投VirtualBox的五个理由
- Quasi-globally Optimal and Near/True Real-time Vanishing Point Estimation in Manhattan World 论文阅读学习
- vue判断什么手机打开网页及是否用QQ浏览器或者微信浏览器打开
- linux系统下载18.04,在Ubuntu 18.04系统中下载安装Persepolis Download Manager
- KEIL编译程序电脑卡的问题
- android麦克风被禁用怎么办,为什么微信麦克风被禁用?如何开启?
- linux下静态库、动态库总结
- Python还原微信好友已撤回的微信消息
- 借助栈实现单链表的原地逆置