2015-ACM多校训练第五场

题外话

第五套感觉难度适中,今天把它补掉了。。。


hdu 5343(1001) MZL’s Circle Zhou

Solution

这题深深的暴露了自己$SAM$水平只差,每次遇到$SAM$的题,都不太能做出来,说到底还是对$SAM$理解不够深刻吧= =。。
由于是把两个串拼起来,容易想到,对第一个串正着建立$SAM$,第二个串反过来建$SAM$,用$dp[i]$表示第二个串中以$i$这个字符开头的串有多少个。
然后在第一个串$SAM$节点上,如果不能转移到字母$c$,答案加上$dp[c]$就好了
仔细想想,其实这题并不难= =。。。自己太弱了

Code


hdu 5344(1002) MZL’s xor

Solution

水题,发现不同项都抵消掉了。。。

Code


hdu 5345(1003) MZL’s combat

Solution

貌似有点烦,先跳过= =过段时间补


hdu 5346(1004) MZL’s game

Solution

dp好题,状态设计非常高端,和前几天CC月赛一个题思想非常相似,很好的idea。
正常dp复杂度无法保证,不妨考虑,一个选人顺序的全排列,如果一个人挂了,就继续选下一个人。由于每个人在每个位置概率都是$\frac{1}{n}$,我们不妨考虑编号$1 \sim n$。
这样转化后我们就可以做了!
考虑$dp[j][i]$表示$i$这个人受到$j$次攻击的概率,分两种情况考虑

  • (1) 第$i-1$个人没挂,则第$j$次攻击是来自第$i-1$的人的,于是$dp[j][i] = dp[j-1][i-1]\times (1-p)^{j-1}$
  • (2) 第$i-1$个人挂掉了,则受到的攻击次数和第$i-1$个人相同,于是$dp[j][i] = dp[j][i-1]\times (1-(1-p)^j)$
    于是就做完了,考虑全排列的这种思想,学到了。。

Code


hdu 5347(1005) MZL’s chemistry

Solution

无聊题,随手打个表

Code


hdu 5348(1006) MZL’s endless loop

Solution

类似于一笔画,奇数度的两两连一下,跑欧拉回路就完了

Code


hdu 5349(1007) MZL’s simple problem

Solution

水题,直接用set或者维护一下都可以

Code


hdu 5350(1008) MZL’s munhaff function

Solution

其实这就是个huffman树的生成过程,想明白那个式子和它的转换关系即可

Code


hdu 5351(1009) MZL’s Border

Solution

水题,关于$Fibonacci$的一般打个表就看出规律了,找第一个$i,m+1<|fib[i]|$,答案就是$m-|fib[i-2]|$

Code


hdu 5352(1010) MZL’s City

Solution

很容易想到的做法是,把每个操作$1$拆成$k$个点,与能相连的城市连一条边,跑匹配即可,由于要求字典序最小,倒着跑匹配即可。也可用最大流,费用流来做

Code

完结撒花!
继续补题!>_<