BestCoder Round #41
T1:ZCC loves straight flush(hdu 5228)
题目大意:
给出5张牌,问至少替换多少张牌可以构成同花顺。
题解:
1.直接枚举所有同花顺(枚举花色A-D和最小的数字1-10) 一共40种,然后判断要替换多少张即可。
2.一开场各种脑残啊,yy了各种贪心,然后感觉都不对,才换成枚举,20分钟才A掉。。
T2: ZCC loves strings(hdu 5229)
题目大意:
给出N个字符串,随机拿出2个进行游戏。游戏有2个操作,一个是把其中一个非空字串的末尾去掉一个字符,一个是如果当前2个串完全相同,把2个串都变为空串。 不能操作者失败.求先手获胜的概率。 N<=20000
题解:
1.一开始还以为要求SG,然后感觉不太对,看到这个数据范围,感觉应该是结论题。然后就想到分奇偶来讨论。
2.首先想到如果|A|+|B|是奇数,那么先手可以每次都对短的那个进行操作1,那么轮到后手的时候两个串的长度都不一样肯定不能使用操作2,所以2个人都只能用操作1,由于总长度是奇数,所以肯定先手取最后一个。
3.如果|A|+|B|是偶数,如果A==B,那么先手直接用操作2获胜.否则后手可以每次对当前短的那个串用操作1,那么先手永远用不了操作2,总长度又是偶数,那么后手拿到最后一个。
4.综上,先手必胜当且仅当|A|+|B|是奇数或者A=B。 判断A=B的情况只要用Trie就好啦。
T3: ZCC loves hacking(hdu 5230)
题目大意:
从1-N这些数里选出一些,要求它们的和在区间[L,R]内,求方案数。 L<=R<=N<=100000
题解:
1.比赛时我只能想到O(N2)做法。dp[i][j]表示从1-i里选出一些和<=j的方案数。那么dp[i][j]=dp[i-1][j-i]+dp[i-1][j].
2.官方题解写的好简洁,我看了好久才看明白:dp[i][j]表示从1-N取i个数和为j的方案数。那么怎么转移呢?对于从1-N取i个数和为j的任意一个方案,如果没有取1,那么把这些数都减去1,就和dp[i][j-i]对应起来了,如果取了1,那么先不管1,把其他数都减去1,那么就和dp[i-1][j-i]对应起来了。
T4:太神了,未做。
打了这么多场BC,基本上都是只能做前2题,而且速度还特别慢,真是太弱了。。