传送门

这一题基础是二分图匹配,并且要知道一个 $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的更多相关文章

  1. BZOJ1135: [POI2009]Lyz

    1135: [POI2009]Lyz Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 264  Solved: 106[Submit][Status] ...

  2. [BZOJ 1135][POI2009]Lyz

    [BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...

  3. 1135: [POI2009]Lyz

    1135: [POI2009]Lyz https://lydsy.com/JudgeOnline/problem.php?id=1135 分析: hall定理+线段树连续区间的最大的和. 首先转化为二 ...

  4. 【BZOJ1135】[POI2009]Lyz 线段树

    [BZOJ1135][POI2009]Lyz Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了x ...

  5. bzoj 1135 [POI2009]Lyz 线段树+hall定理

    1135: [POI2009]Lyz Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 573  Solved: 280[Submit][Status][ ...

  6. 【BZOJ】1135: [POI2009]Lyz

    题意 有\(1\)到\(n(1 \le n \le 200000)\)号的溜冰鞋各\(k(1 \le k \le 10^9)\)双.已知\(x\)号脚的人可以穿\(x\)到\(x+d\)的溜冰鞋. 有 ...

  7. 【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)

    题面戳我 Solution 二分图是显然的,用二分图匹配显然在这个范围会炸的很惨,我们考虑用霍尔定理. 我们任意选取穿\(l,r\)的号码鞋子的人,那么这些人可以穿的鞋子的范围是\(l,r+d\),这 ...

  8. 【BZOJ1135】[POI2009]Lyz

    题解: hall定理..第一次听说 思考了半小时无果 二分图匹配时间显然太大 但是有这个hall定理 二分图有完美匹配的充要条件是 对于左边任意一个集合(大小为|s|),其连边点构成的集合(大小为|s ...

  9. [BZOJ1135][POI2009]Lyz[霍尔定理+线段树]

    题意 题目链接 分析 这个二分图匹配模型直接建图的复杂度太高,考虑霍尔定理. 对于某些人组成的区间,我们只需要考虑他们的并是一段连续的区间的集合.更进一步地,我们考虑的人一定是连续的. 假设我们考虑的 ...

随机推荐

  1. 开源!js实现微信/QQ直接跳转到支付宝APP打开口令领红包!附:demo

    最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令. 可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了. 于是乎,提出了一个疑问!是否可以在微信里面点一个链接然后直接打开 ...

  2. dubbo的实现原理

    dubbo的介绍 dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成. dubbo框架是基于Spring容器运 ...

  3. 代码审计之CVE-2019-9081 Laravel5.7 反序列化 RCE复现分析

    本文首发于先知社区:https://xz.aliyun.com/t/5510 环境: php7.2+apache+laravel5.7 漏洞描述: Laravel Framework是Taylor O ...

  4. JS基础_对象操作

    1.in 运算符 通过该运算符可以检查一个对象中是否含有指定的属性,如果有,返回true 语法: “属性名” in 对象 var obj = { name:"hello" } co ...

  5. MySQL 主从复制 (CentOS 7)

    1.主从复制原理 (1) 当master 服务器上的数据发生改变时,则将其改变写入二进制日志文件中: (2) slave服务器会在一定时间间隔内对 master 服务器上的二进制日志进行探测,探测其是 ...

  6. LeetCode 137. 只出现一次的数字 II(Single Number II)

    题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: ...

  7. 从Ubuntu 14.04 LTS版升级到Ubuntu 16.04 LTS

      Ubuntu 16.04 (Xerial Xerus) Long Term Support版于最近发布了.要想了解它的新功能和新特性,就必须升级或安装这个新系统. 本文讲述怎样一步步从Ubuntu ...

  8. win10搜索框突然不能使用了

    备忘: win10搜索不出来了,使用以下方法恢复了,备忘下 1,首先打开任务管理器 重新启动wservice服务 2.发现这时候搜索依然不能使用 然后重新启动explorer.exe (1)右键关闭该 ...

  9. LC 789. Escape The Ghosts

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is(tar ...

  10. 按二次back键退出程序应用的实现

    package com.loaderman.twoexitdemo; import android.os.Bundle; import android.os.Handler; import andro ...