5.21总结

来源:互联网 发布:unity3d游戏源码 编辑:程序博客网 时间:2024/06/06 09:56

昨晚等着ACM Final刷榜等得太晚。。。搞到今天早上有点困。。囧。。。

做题过程

一开始先看题。(怎么又是一个宅男出的题。。。。题目无比复杂。。)发现第一题不可做。第二题好像之前在CC上见过。。但是我又没有去看题解。(又是一道见过没有解决的题目。。。GDOI也是这样。。)第三题说真的一开始连题目都没有看懂。
第二题想了比较久。细节比较多。一直到了8点50分左右。我觉得还是比较虚,所以就先去打了第一题的暴力。拿到30分心里就稳很多啦。接着去搞第二题。先审视了一下自己的做法,发现了不少的漏洞。准备开打的时候都9点半了。一边打一边调整自己的程序。用了大概1个钟打完。一拍就对了。然后去检查了一下空间,发现比较危险。把一些可以缩的地方缩完后就只剩下一个重了。最后去看了一下第三题,一直在想暴力怎么打。。。发现连暴力都不会。。。在草稿纸上把题目大概理清了之后发现居然是一道网络流傻逼题。。。幸好最后还是看了一下题目的。。不过时间真心不太够。最后还是Rush出来,过了样例。剩下十几分钟就弃疗了。

最后出来的结果是30+100+70??!?!

最后一题WA了三个点????

然后下午再看了一遍第三题,发现有个地方十分神奇,我看题的时候还以为是出题人的神吐槽。。结果,居然是有用的。。然后我就漏掉了一种特殊情况,丢了30分。。

不足之处

  1. 看题的时候还是没有留够时间。连题目都没有看完就开始做。这是作比赛的大忌。。不要把ACM和OI混在一起了。
  2. 平时看到一些题还是要尽量把他们解决了的。假如真的解决不了,也应当看一下题解,了解一下大致的思路。不然再遇到相同题目时就会后悔了。
  3. 思维还是不够敏捷。第一题的Dp没有想到。。。(虽然看了题解之后还是不会,还是要不断的提高自己的Dp设状态的水平,以及结合各方面知识的能力)

附个第一题的题解

Description

给你N个字符串si。把N个字符串分配到M个位置。要求每个位置都至少有一个字符串,并且每个字符串都恰好有一个位置。我们现在对每一个位置上的字符串建立一个Trie。记TotalTrieiTotal,使Total
N1000,M100,|si|100NM

Solution

这题咋一看没什么太好的做法。

先考虑如何算出最大的Total

我们不妨先构成N个串的Trie

Fi表示TrieiTotal
Sii

那么显然的是

Fi=min(Si,M)+jsoniFj

min(Si,M)i

Si<M,iSiM,M

所以最终第一问的答案就等于FRoot

第二问看起来要更加困难。
但是我们可以一步一步的解剖问题。
Gii
我们先分类讨论Si
1.Si<M,也就是说iM,那么此时Gi=Si!
 
2. SiM

  1. 存在jsoni,SjM
     
    也就是说我们在jM
    那么

    Gi=GjksonikjCmin(M,Sk)MGk
    ———-终于明白为什么上面要这样计了。

  2. 并不存在这样的j
    但是我们知道SiMDp
    Hj,p,ijp
    怎么转移?
    设当前状态为Hj,p
    再枚举我们需要的长度l
    也就是说我们是用pSj+1lplp+Sj+1
    那么
    Hj+1,l=Hj,pCp+S(j+1)lpCplSj+1!
    最后Gi=HLast,M

注意也要对每个点自身代表的接受串进行处理。

最终答案就是GRoot

这题就这样子解决啦。。

0 0
原创粉丝点击