5.21总结
来源:互联网 发布:unity3d游戏源码 编辑:程序博客网 时间:2024/06/06 09:56
昨晚等着ACM Final刷榜等得太晚。。。搞到今天早上有点困。。囧。。。
做题过程
一开始先看题。(怎么又是一个宅男出的题。。。。题目无比复杂。。)发现第一题不可做。第二题好像之前在CC上见过。。但是我又没有去看题解。(又是一道见过没有解决的题目。。。GDOI也是这样。。)第三题说真的一开始连题目都没有看懂。
第二题想了比较久。细节比较多。一直到了8点50分左右。我觉得还是比较虚,所以就先去打了第一题的暴力。拿到30分心里就稳很多啦。接着去搞第二题。先审视了一下自己的做法,发现了不少的漏洞。准备开打的时候都9点半了。一边打一边调整自己的程序。用了大概1个钟打完。一拍就对了。然后去检查了一下空间,发现比较危险。把一些可以缩的地方缩完后就只剩下一个重了。最后去看了一下第三题,一直在想暴力怎么打。。。发现连暴力都不会。。。在草稿纸上把题目大概理清了之后发现居然是一道网络流傻逼题。。。幸好最后还是看了一下题目的。。不过时间真心不太够。最后还是Rush出来,过了样例。剩下十几分钟就弃疗了。
最后出来的结果是30+100+70??!?!
最后一题WA了三个点????
然后下午再看了一遍第三题,发现有个地方十分神奇,我看题的时候还以为是出题人的神吐槽。。结果,居然是有用的。。然后我就漏掉了一种特殊情况,丢了30分。。
不足之处
- 看题的时候还是没有留够时间。连题目都没有看完就开始做。这是作比赛的大忌。。不要把ACM和OI混在一起了。
- 平时看到一些题还是要尽量把他们解决了的。假如真的解决不了,也应当看一下题解,了解一下大致的思路。不然再遇到相同题目时就会后悔了。
- 思维还是不够敏捷。第一题的Dp没有想到。。。(虽然看了题解之后还是不会,还是要不断的提高自己的Dp设状态的水平,以及结合各方面知识的能力)
附个第一题的题解
Description
给你N个字符串
Solution
这题咋一看没什么太好的做法。
先考虑如何算出最大的
我们不妨先构成N个串的Trie
设
设
那么显然的是
所以最终第一问的答案就等于
第二问看起来要更加困难。
但是我们可以一步一步的解剖问题。
记
我们先分类讨论
1.
2.
存在
j∈soni,且Sj≥M
也就是说我们在j的子树中就可以将M个位置填满
那么———-终于明白为什么上面要这样计了。Gi=Gj∗∏k∈soni且k≠jCmin(M,Sk)M∗Gk 并不存在这样的
j
但是我们知道Si≥M,也就是说我们可以Dp计算出合法的方案 设Hj,p,表示枚举到i的第j个儿子,当前用了p个位置
怎么转移?
设当前状态为Hj,p
再枚举我们需要的长度l
也就是说我们是用p和Sj+1来凑出l的。那么显然p≤l≤p+Sj+1
那么Hj+1,l=∑Hj,p∗Cp+S(j+1)−lp∗Cpl∗Sj+1!
最后Gi=HLast,M
注意也要对每个点自身代表的接受串进行处理。
最终答案就是
这题就这样子解决啦。。