T2:Round Numbers(rndnum.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]求次短...(什么鬼)
然后就没有了...
呵呵呵,总的来说似乎都是水...