SRM 476

哎。。真是一场失败的SRM。。Rating没变囧。。
Level I
这么一道水题我只有235分。。实际上只要枚举就行了。但比赛前最后3分钟我发现我的KawiEdit不能用了晕。。结果拼命抢修。。修好后一慌张手速就慢了。。而且我看到这题后立马写二分。。脑缺死了。。n这么小干嘛不枚举啊晕。。
Level II
这个题目太恶心了。。本来我想的完全正确啊。。代码也没有错(一开始我一直以为我概率搞错。。最后发现是题目恶心)。。注意到每个人的friend字符串在36个字符以下。。那么算一下可以发现一个人最多有15个朋友。。关键是题目中有一句话说主人公只会访问自己的朋友。。所以顶点数最多16!!!靠。。
那么就简单了设Dp(Vised,int last)表示访问过了Vised的人,最后一个是last。。首先枚举下一个是哪个。。然后按概率排序。。显然第i个被主人公选择的情况只可能是前i-1个都不幸悲剧了。。第i个又OK。。那么算出这个概率然后+起来就OK了。。
Level III
额。。这题实际上不是非常难啊晕。。我当时完全没有时间去做了悲剧。。
首先注意到这个图是个仙人掌,所以一条边要么是桥要么在一个环里面额。。是桥的话显然要是crewSize。。否则的话考虑这个环,加入这个环离出口最近的是0,其它一次标号为1..n,那么首先如果没有Cabin的话,设L[x]是x到x-1,R[x]是x到x+1的Cabin数量,显然L[x]+R[x]>=crewSize。并且如果L[x]>L[x-1]完全没意义。。所以L[x]<=L[x-1]同理R[x]<=R[x+1]..然后现在有一些Cabin。。那么就跟一个经典问题就是把一个数列通过最小的变换变成单调类似了。。注意到降低显然不需要费用。。那么就OK了。。

Leave a Reply

Your email address will not be published. Required fields are marked *