hzwer拿了幾道noi中比較簡單的給我們做
a.[noi2009]植物大戰殭屍
思路:考慮最小割,如果乙個植物的權值x是正的,我們先預設吃掉它,使答案加上x並讓s向這個點連x,割這條邊相當於不吃這個植物,否則讓這個點向t連-x,割這條邊相當於吃這個植物,每個植物讓它能攻擊到的格仔和它的前一格向它連inf,表示要麼不吃它能保護到的,要麼吃它,如果構成了環,這些植物必然都不能被吃,判完環後環上的點全部向t連inf即可。
#include#includeinline
intread()
#define mv 600
#define me 400000
#define s mv+1
#define t mv+2
#define inf 0x7fffffff
#define p(x,y) ((x)*30+(y)+1)
struct edgee[me*2+5
];int h[mv+5],en=1,d[mv+5],c[mv+5],q[mv+5],qn,df[mv+5],lw[mv+5],cnt,inq[mv+5
];inline
void ins(int x,int y,int
w);h[x]=en;
e[++en]=(edge);h[y]=en;
}bool
bfs()
int dfs(int x,int
r)
return d[x]=0
,u;}
void dfs(int
x) u=q[qn-1]!=x;
if(df[x]==lw[x])for(;q[qn]!=x;u?(ins(q[qn],t,inf),0):0)inq[q[--qn]]=0;}
intmain()
for(i=0;ifor(j=0;jif(!df[p(i,j)])dfs(p(i,j));
while(bfs())ans-=dfs(s,inf);
printf("%d
",ans);
}
b.[noi2011]阿狸的打字機
之前做過了,題解戳這裡
c.[noi2005]瑰麗華爾茲
思路:用f[i][j][k]表示前i段時間過後,鋼琴在(j,k)的最長路程,轉移很顯然單調佇列嘛,複雜度o(nmk)。
#include#include#include
using
namespace
std;
inline
intread()
#define mn 200
int f[mn+5][mn+5][mn+5],q[mn+5
],ql,qr;
char s[mn+5][mn+5
];int
main()
if(y==2)for(yy=1;yy<=m;++yy)for(ql=1,qr=0,xx=1;xx<=n;++xx)
if(y==3)for(xx=1;xx<=n;++xx)for(ql=1,qr=0,yy=m;yy;--yy)
if(y==4)for(xx=1;xx<=n;++xx)for(ql=1,qr=0,yy=1;yy<=m;++yy)
}for(i=1;i<=n;++i)for(j=1;j<=m;++j)ans=max(ans,f[t][i][j]);
printf("%d
",ans);
}
d.[noi2014]動物園
思路:首先kmp弄出next陣列,num[i]就是每次令i=next[i],在變成0前有多少次不超過i/2,先不考慮不超過i/2的限制,則num[i]=num[next[i]]+1,對於每個next[i]>i/2,扣掉它next幾次後會小等於i/2,由於它的迴圈節是i-next[i],每次取next都會使它的值減小i-next[i],除一下就好了,複雜度o(n)。
#include#include#define mn 1000000
#define mod 1000000007
char s[mn+5
];int nx[mn+5],f[mn+5
];int
main()
for(ans=i=1;s[i];++i)
printf(
"%d\n
",ans);
}}
20161104校內訓練
一道類似模擬的題,就根據所寫的東西來做就可以了。include define rep i l r for int i l i r i define per i r l for int i r i l i define erep i u for int i head u i i e i nxt usi...
2017 4 7校內訓練
喪病hzwer的ctsc訓練賽 my ac 3 4 a.ctsc2014 企鵝qq 思路 亂hash,我比較菜,寫的醜 各種wa tle,好久才a掉。include include using namespace std define ll long long define mn 200 defin...
9 10校內訓練
這次的校內訓練有4題,難度適中,成績也不錯.令人詫異的是這次的四題居然都是原題.儘管如此,我還是有比較多的失誤.第一題原題在洛谷1360,題意大致是給出n個01串 不超過m位,壓成整數 求這些串中最長的子串滿足對於每一位,這個字串每個元素這位是1的個數的和相同.比如 1110010 1001 111...