题解Luogu P3488 [POI2009]LYZ-Ice Skates

Posted gengyf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解Luogu P3488 [POI2009]LYZ-Ice Skates相关的知识,希望对你有一定的参考价值。

线段树动态维护最大子段和

观察分析题面发现,如果要使他匹配成功,则对于$1≤i≤n$左面任意$i$个点,至少右面也有$i$个点和他匹配

设$a[i]$为选择型号$i$的人数,$sum[i]$为前缀和

所以对于任意$sum[l,r]≤(r-l+1+d)*k$

设$s[l,r]$为$l≤i≤r,a[i]-k$的和

则对于任意的$l,r$总有$s[l,r]≤d*k$

就转化为维护最大子段和

code

技术图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 namespace gengyf
 4 #define ll long long
 5 #define int long long
 6 const int inf=1e9+7;
 7 const int maxn=2e5+10;
 8 inline int read()
 9     int x=0,f=1;
10     char c=getchar();
11     while(c<0||c>9)if(c==-)f=-1;c=getchar();
12     while(c>=0&&c<=9)x=(x*10)+c-0;c=getchar();
13     return x*f;
14 
15 struct tree
16     int lmx,rmx,sum,ans;
17 #define lmx(x) t[x].lmx
18 #define rmx(x) t[x].rmx
19 #define sum(x) t[x].sum
20 #define ans(x) t[x].ans
21 t[maxn*4];
22 int n,m,k,d;
23 inline void pushup(int p)
24     sum(p)=sum(p<<1)+sum(p<<1|1);
25     lmx(p)=max(lmx(p<<1),sum(p<<1)+lmx(p<<1|1));
26     rmx(p)=max(rmx(p<<1|1),sum(p<<1|1)+rmx(p<<1));
27     ans(p)=max(ans(p<<1),max(ans(p<<1|1),rmx(p<<1)+lmx(p<<1|1)));
28 
29 void build(int p,int l,int r)
30     if(l==r)
31         sum(p)=ans(p)=-k;rmx(p)=lmx(p)=0;
32         return ;
33     
34     int mid=(l+r)>>1;
35     build(p<<1,l,mid);build(p<<1|1,mid+1,r);
36     pushup(p);
37 
38 void update(int p,int l,int r,int x,int y)
39     if(l==r)
40         ans(p)+=y;sum(p)+=y;
41         lmx(p)=rmx(p)=max(sum(p),0ll);
42         return ;
43     
44     int mid=(l+r)>>1;
45     if(mid>=x)update(p<<1,l,mid,x,y);
46     else update(p<<1|1,mid+1,r,x,y);
47     pushup(p);
48 
49 int main()
50     n=read();m=read();k=read();d=read();
51     build(1,1,n);
52     for(int i=1;i<=m;i++)
53         int x,y;x=read();y=read();
54         update(1,1,n,x,y);
55         if(ans(1)<=k*d)puts("TAK");
56         else puts("NIE");
57     
58     return 0;
59 
60 
61 signed main()
62   gengyf::main();
63   return 0;
64 
View Code

 

以上是关于题解Luogu P3488 [POI2009]LYZ-Ice Skates的主要内容,如果未能解决你的问题,请参考以下文章

题解Luogu P3509 [POI 2010] ZAB-Frog 倍增dp

POI2009 题解

题解-POI2009 WSP-Island

luogu P2023 [AHOI2009]维护序列 题解

luogu P3884 [JLOI2009]二叉树问题 题解

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