{小结}USACO NOV06

来源:互联网 发布:手机屏幕色彩校正软件 编辑:程序博客网 时间:2024/06/08 08:41

T1:乱头发节(badhair.pas/c/cpp)

T2:Round Numbers(rndnum.pas/c/cpp)

T3:玉米田(cowfood.pas/c/cpp)

T4:路障(block.pas/c/cpp)


70+60+90+0


T1:

题目特别地...嘿-嘿-嘿

总的来说并不太难,只要有这个思路就可以。

模拟一个栈,将每一个h[i]依次放进去。

放之前,删除所有比h[i]小的牛

(别告诉我你不会,栈里可是有序的)

之后,可以证明,剩下的牛都看得见i.


T2:

很明显,可以用[fin]-[sta-1]作为答案

简单来讲,我们可以运用排列组合

(听说其他人都是数位DP也是呵呵了)

对于x来讲,我们可以把它分为两段

分别是(1-某正常数)和(某正常数+1-x)

这样子分开求和,就可以把题目简单化了

(其实数位DP差不多的,思路几乎相同)


T3:

坑的不是一点两点啊!

数据也是呵呵,暴力就有90分

最后的一个点也不算很大,真是好人!!!

言归正传,这道题其实并不很难,可以运用DP

转:

很容易想到状态压缩。因为整个不可以。所以想到压缩行。

又因为这里状态只与上一行和本身有关,那么就做个行的DP就可以了。

dp[i][j]表示做到I行,状态为J的方案数。那么DP[I][J]=sum(dp[i-1][k])其中J合法,且J AND K=0。

如果J不合法,那么DP[I][J]=0


之后就简单了,直接上DP,然后求和。

(几个水牛竟然用分块坑了满分)


T4:

看上去很难

实际就是水

看到最短路,

我的脑子里冒出了各种算法:

Dijkstra

SPFA

Floyd

然后我看见了次短路...

What a hell!

又想了一会

似乎最短路可以做...

因为SPFA的高效率,所以选择了它

大牛的水法是在运算时

不止计算一个d[i]存最短,而再加一个d2[i]求次短...(什么鬼)

然后就没有了...


呵呵呵,总的来说似乎都是水...



1 0
原创粉丝点击