• Coder-Strike 2014


    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?

    viewmode=contents    by---cxlove

    Qualification Round


    Round 1

    D:想像一下DFS序,可是输出是反向的


    E:直接按@把串分成一段段的,然后以@为中心往两边找。


    Round 2

    C:贪心。肯定先把常规题目先做完,由于常规题目的分数是不变的。然后依据动态分数的是,从高到低做。

    能够这么思考,假设从小到大。每一个动态分数都能达到。那就是不断翻倍。假设某个动态分数达不到,不能翻倍,仅仅能取那么多分的话。我们当然是希望这种题目先做,保证基数增大,后面的翻倍才会更有效。


    D:状态压缩DP,有效的序列肯定是一个递减序列,而这种序列仅仅存在于末端,并且长度肯定 < k。就能够状压了。

    比方说 8。2,4。2,无论之后是如何的序列,第一个2不可能被合并了。而前面的8肯定也没实用了,所以有效部分仅仅是4,2。

    那么dp[i][j]表示前i项,末端的递减状态序列状态为j。


    E:线段树,对于区间[l , r]记录一个2 * 2的矩阵,保存从一端到还有一端的4种情况的最短路径。合并的话应该非常好做。直接枚举。查询的时候,不断递归,有些子区间会反复计算。所以记忆化一下。


    Finals

    A:有11个字符是对称的,搞出来后就没了。

    。。


    B:首先有一些人本来就在的。先要处理一下。

    之后大概就是,进去的时候。本来已经有人了,那么肯定不是leaders,走的时候。里面还有人,那么也肯定不是leaders。

    然后要考虑一些特殊情况。进去的时候,里面仅仅有本身一个人,那么说明其他人(除了压根没有出现的人)都不是leaders。走的时候里面没有人了,那么也说明其他人(除了压根没有出现的人)都不是leaders。


    C:统计每一个人被赞同多少次,排序之后就是不断维护一个前缀和。

    最后再枚举被同一个人赞同的两个人。


    D:暴力平衡树来模拟整个移动过程是能够的。

    线段树也是能够做的。将1-m这些位置 空出来,定义原先的位置为[m + 1 , n + m],那么就避免了移动过程。

    我们仅仅须要维护区间有多少个位置不是空的就能够找到对应的第y个位置。移动的话,就是在当前位置-1,然后在1-m里对应向前插入就OK了。

    然后记录已知的杯子的位置 ,以及某个位置 已经确定是哪个杯子。能够推断是否冲突。

    假设用BIT来维护的话,是须要二分得到第y个位置的。


    E:给的坐标不是很大。所以击打的次数有限的。

    枚举每一次击打。假设这次击打要落在某个圆内的话,我们能够得到这条射线的夹角范围。那么将这些时间点排序之后就成了区间覆盖次数最多的了。

    要么就讨论的具体点。由于是一个环。可能有些区间要分成两段,然后作区间覆盖。

    总之就是细节要注意一下。



    code : https://github.com/cxlove/ACM_ICPC/tree/master/Contest/Codeforces/Coder-Strike_2014

  • 相关阅读:
    Python自动化开发从浅入深-语言基础
    Python自动化开发从浅入深-初识Python
    python访问mysql
    列表和元组核心办法
    字典核新方法
    字符串的核心应用
    个人总结:字典并非完全无序
    Python 基础【二】 下
    Python 基础【二】 上
    windows开发的python移植到linux的问题
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6874704.html
Copyright © 2020-2023  润新知