• Codeforces Round #369(div 2)


    A;=w=

    B:=w=

    C:题意:有一排树,有的树已经上色,有的树没有上色,只能给没上色的树上色,一共m种颜色,不同的树上不同的色花费不同,涂完色后,连续颜色的树成为一段。对于给定的段数k,求出最小花费

    分析:不是贪心就是dp,这很显然不是贪心

      f[i][j][k]表示前i个树,第i个树涂色是j,已经有k段树的最小花费

      如果第i个树未染色:f[i][j][k]=min(f[i-1][j][k]+v[i][j],f[i-1][j'][k-1]+v[i][j'])

      如果已经染色:f[i][j][k]=min(f[i-1][j][k],f[i-1][j'][k-1]) 注意没花费

      注意初始化

    D:题意:n个点n条边的有向图,每条边可以改变方向,询问有多少种方法可以使得图中无环

       分析:考虑下n个点n条边图的特征

              首先能想到的是n个点n-1条边的树加条边成个环

        继续想想就会发现不可能存在复环,不然边数就不对了,也就是一个环套树

        考虑影响一个环的只有环上的点,所以如果假设环外的点有a个,那么对答案的贡献就是2^a

        再考虑环上,一般来说,只要环上一条边方向变了,那环就破坏了,但要注意特殊情况,也就是全部反向和全部不反向,所以如果环上点b个,那么对答案的贡献就是2^b  -2

             最后要考虑的一点是,有可能是多个连通块,所有答案相乘就可以了

            至于实现,可以把所有单向边当作双向边,然后dfs跑一个连通块得出a+b,在跑dfs途中用个栈记录下点,然后重复时就递归栈得出b,所以a和b就都知道了

    E:题意:求1-[A(2^n,k)/2^(nk)]的值,要求先约分,再模1e6+3

       分析:问题分两个,先是约分,再是模

                 整理下式子发现,分子分母的质因数只有2,所以最大公约数肯定是2^x

                 这个x取决于(2^n)!/(2^n - k)!的2的指数

                 求一个阶乘数中2的指数就那个logn算法 除2除4除8什么的辣

          第一个问题解决了

                 再解决第二个问题,分母可以暴力模,分子头疼的是那k个数乘积的模,因为k很大

                  注意到mod数很小,所以分子那项乘了mod数后结果就0了,就退出

                  最后乘上2^x逆元

                 

       

  • 相关阅读:
    阿里代码检查工具
    SpringCloud 服务通信方法
    Apache ab简单使用
    H5 webSocket使用
    Java list去重 取重
    解决 spring boot Failed to decode downloaded font
    Pycharm设置快捷方式
    环境变量与文件的查找
    Linux基础
    VIM中文乱码解决
  • 原文地址:https://www.cnblogs.com/wmrv587/p/5854870.html
Copyright © 2020-2023  润新知