POI阴影又发作了
但这道题挺好的,比较涨知识
裸的想法是裸的每次二分图匹配,但显然会TLE
这里就要引入Hall定理:
二分图G中的两部分顶点组成的集合分别为X, Y, X={X1, X2, X3,X4,.........,Xm}, Y={y1, y2, y3, y4 ,.........,yn},
图G中有一组无公共点的边,一端恰好为组成X的点的充分必要条件是:
X中的任意k个点至少与Y中的k个点相邻。(1≤k≤m)
任意这个东西相当烦,不能穷举,也不知道底要取X集合中哪些点来判断,乍一看还是不怎么好弄
但是这个图很特殊,把人看做X集合,鞋看做Y集合
因为同一鞋号x的人连的鞋都是[x,x+d],所以集合X中同一个鞋号里的人要么取要么都不取(全取比取部分一定更具代表性)
然后再看,鞋号为x+1的人连的鞋是[x+1,x+1+d],会有[x+1,x+d]的点被鞋号为x+1的人重复连了
也就是人鞋号是连续的时候连接的鞋最少
显然,所取的鞋号为连续的更有代表性(更可能出现不满足的情况)
因此,我们必须对于任意一段连续鞋号[l,r]
满足sigma(xi) (i∈[l,r]) <=(r-l+1+d)*k
也就是 sigma(xi)<=(r-l+1)*k+d*k
即 sigma(xi-k)<=d*k
也就是我们只要找出当前最长连续子序列与d*k比较就可以了
由于要修改,所以我们用线段树来维护

好,到这里我又要说pascal的不幸了,TLE到死……实在懒得卡常数了,就交了c++的

 type node=record
lm,rm,mm,s:int64;
end; var tree:array[..] of node;
n,m,k,d,i,x,y:longint;
t:int64; function max(a,b:int64):int64;
begin
if a>b then exit(a) else exit(b);
end; procedure work(i,l,r:longint);
var m:longint;
begin
if l=r then
begin
tree[i].s:=tree[i].s+y;
tree[i].lm:=tree[i].s;
tree[i].rm:=tree[i].s;
tree[i].mm:=tree[i].s;
end
else begin
m:=(l+r) shr ;
if x<=m then work(i*,l,m)
else work(i*+,m+,r);
tree[i].lm:=max(tree[i*].lm,tree[i*].s+tree[i*+].lm);
tree[i].rm:=max(tree[i*+].rm,tree[i*+].s+tree[i*].rm);
tree[i].mm:=max(tree[i*].mm,tree[i*+].mm);
tree[i].mm:=max(tree[i].mm,tree[i*].rm+tree[i*+].lm);
tree[i].s:=tree[i*].s+tree[i*+].s;
end;
end; procedure build(i,l,r:longint);
var m:longint;
begin
if l=r then
begin
tree[i].s:=-k;
tree[i].lm:=-k;
tree[i].rm:=-k;
tree[i].mm:=-k;
end
else begin
m:=(l+r) shr ;
build(i*,l,m);
build(i*+,m+,r);
tree[i].lm:=max(tree[i*].lm,tree[i*].s+tree[i*+].lm);
tree[i].rm:=max(tree[i*+].rm,tree[i*+].s+tree[i*].rm);
tree[i].mm:=max(tree[i*].mm,tree[i*+].mm);
tree[i].mm:=max(tree[i].mm,tree[i*].rm+tree[i*+].lm);
tree[i].s:=tree[i*].s+tree[i*+].s;
end;
end; begin
readln(n,m,k,d);
build(,,n);
t:=int64(k)*int64(d);
for i:= to m do
begin
readln(x,y);
work(,,n);
if tree[].mm<=t then
writeln('TAK')
else writeln('NIE');
end;
end.

bzoj1135的更多相关文章

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

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

  2. BZOJ1135: [POI2009]Lyz

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

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

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

  4. 【BZOJ1135】[POI2009]Lyz

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

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

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

  6. BZOJ1135:[POI2009]Lyz(线段树,Hall定理)

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

  7. [bzoj1135][Ceoi2011]Match_线段树

    [Ceoi2011]Match 题目大意:初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人.xi为负, ...

  8. BZOJ1135 LYZ(POI2009) Hall定理+线段树

    做这个题之前首先要了解判定二分图有没有完备匹配的Hall定理: 那么根据Hell定理,如果任何一个X子集都能连大于等于|S|的Y子集就可以获得完备匹配,那么就是: 题目变成只要不满足上面这个条件就能得 ...

  9. [bzoj1135]Lyz

    可以看成一张二分图,判断左半部分是否存在完美匹配根据hall定理,当且仅当左半部分每一个子集所连向的点数量超过了这个子集的大小都判定复杂度肯定爆炸,可以贪心,一定选择的是一个区间,即对于任意区间[l, ...

随机推荐

  1. YouTube CEO关于工作和生活平衡的完美回答

    原文地址:http://www.businessinsider.com/youtubes-ceo-response-to-work-life-balance-2015-7 译文: 在2015年Aspe ...

  2. CSS3伪类nth-child结合transiton动画实现文字若影若现

    css3伪类nth-child结合transiton动画实现文字若影若现收先创建一个div盒子,然后包裹在div中的有10个span标签每个span标签填上内容一次为A,B,C,D,E,F,G,H,I ...

  3. c# 操作.config中AppSettings配置节

    ConfigurationSettings.AppSettings[key].ToString(); 这种方式很眼熟吧? 不过这种方式基本过时了,虽然还能用. 微软建议采用ConfigurationM ...

  4. WPF MediaElement.Position属性

    Position 属性定义:获取或设置媒体播放时间的当前进度位置. // // 摘要: // 通过媒体播放时获取或设置进度的当前位置. // // 返回结果: // 媒体时自以来的.默认值为 00:0 ...

  5. HTML5 History对象,Javascript修改地址栏而不刷新页面(二)

    一.实例说明: $('#btnOne').click(function () { var stateObject = { id: 1 }; var title = "本地首页"; ...

  6. javascript ~~ 符号的使用

    其实是一种利用符号进行的类型转换,转换成数字类型 大概是这样滴: ~~true == 1 ~~false == 0 ~~"" == 0 ~~[] == 0 ~~undefined ...

  7. 向RichTextBox控件不停的AppendText数据时,如何把光标的焦点始终显示到最后

    上面是csdn上的一个网友的问题,我的一个实现如下://让文本框获取焦点this.richTextBoxInfo.Focus();//设置光标的位置到文本尾this.richTextBoxInfo.S ...

  8. POJ 2186.Popular Cows (强连通)

    强连通缩点,统计入度为1的缩点后的点的个数 个数1的话输出这个强连通分量的点的数量 否则输出0: code /* Kosaraju算法,无向图的强连通分量,时间复杂度O(n+m) 思路: 按照图G的深 ...

  9. html中发送邮箱的链接

  10. CSS负边距自适应布局三例

    单列定宽单列自适应布局: <!DOCTYPE HTML> <html> <head> <meta charset=”UTF-8″> <title& ...