• Codeforces Round #408 (Div. 2)


    A,B 模拟

    C (交了2次才过,略微麻烦) 先找性质:树、从点u开始,则初离u距离为1的点+1,其它点均+2

    然后大力分类讨论,

    1.若只有1个最大值,显然从它开始,再看一看次大值是否会影响答案;

    2.若>=2个最大值(=mx),显然答案至于最大值有关,答案为mx+1当且仅当所有最大值的点到某一个点的距离<=1

    连成一张菊花图? 一开始就WA在这里,事实上可能是空心的菊花!然后枚举每一个点走一走,判一下。O(n)

    +++++++++++++++++++++++++++++++++++++++++++++++++++

    其实直接枚举每个点,用Multiset搞一搞就O(n log n)过了啊。我好像写复杂了mmp

    D 多源点BFS(根本想不到)

    题意:n个点的树,k个为黑色,law:任意点距离d内都有黑点,n,k,d<=3e5,问满足law条件下,最多能删除多少条边,使得剩下的森林仍然满足law,并输出删除的边?


    由于是树,每删除一条边 都增加一个联通分量,无论d是多少,每个联通分量内都要有一个黑点,所以删除的边不会超过k-1.

    一开始已经满足law,任意点到黑点的最短距离<=d.

    可以构造k个合法的联通分量:对每个点u,把它加入到和它最近的黑点的联通分量中,黑点距离自己为0,同一个联通分量只有一个黑点,

    则每个联通分量中的点到黑点距离都为最短距离<=d 

    对所有黑点同时进行bfs,u->v,若v已经被某个黑点访问过,则v,u的最小距离黑点不是同一个,u-v可以删除 

    //为什么可以这么做呢、、  大概就是因为一开始law就满足,只需要求出每个点最近的station,而这可以bfs得到。最后得到一些连通块,任一块只有1个station。

    ==> 最后割的边数==K-1

    E (dp) 开始想错了,如在A中cheat了[1,3],此时若再在B中[1,3]仍可能有收益。

    我们可以用dp[i][j][x][y]来表示前i道题目使用了j次机会,其中person1还可以偷看连续的x道题目,peison2 y道题目。(过去某一题开始偷看,持续到现在,并仍将不断进行)

    思路:转移是对于每一道题来,而不是偷看一次转移一下

    方程:每一道题开始:看1,看2,都不看(都看是不必考虑的,显然没有分开看优秀)。

    O(n*p*k^2) 根据p,k的关系,转化为O(n^2*k); 然后滚动一下数组

    这道DP调了好久,细节还是挺多的,感觉放NOIP里我还是会afraid。 1.不可行的状态初始成-inf;每次滚动完也要memset  2.rep(j,0,p)枚举次数!勿忘边界,不要漏。思考清楚。

  • 相关阅读:
    2020-2021-1 20201216 《信息安全专业导论》第十周学习总结
    2020-2021-1 20201216 《信息安全专业导论》第9周学习总结
    熟悉编程语言
    2020-2021-1 20201216 《信息安全专业导论》第八周学习总结
    如何学好编程
    2020-2021第一学期20202428《计算机科学概论》第二周自习总结
    “七剑下天山”学习小组第一周学习中遇到的问题及解决
    2020-2021第一学期20202407《计算机科学概论》第一次学习总结
    开启我的测试之路
    大数据测试
  • 原文地址:https://www.cnblogs.com/supy/p/6876585.html
Copyright © 2020-2023  润新知