zoukankan      html  css  js  c++  java
  • 省选模拟40 题解

    A. 染色问题

    考虑对每条边 $(a,b)$ 附加两种边权 $(x,y)$ 。

    对于一种染色方案,当 $col_a=col_b$,边权为 $x$,否则边权为 $y$。

    取 $x=1,y=0$,一种染色方案的贡献是所有边权的乘积,那么答案就是对于每种染色方案的贡献的和。

    发现这个玩意可以合并。

    当 $deg_p=1$,可以直接删掉点 $p$ 并给全局答案乘上 $p$ 所连边的 $(x+(k-1)*y)$。

    当 $deg_p=2$,也可以新增一条边连接 $p$ 原来连接的两个点,考虑 $p$ 的颜色即可得到新边的边权。

    最后有 $deg_p>=3 ightarrow 3*n leq 2*m$ ,因为每次删点和删边是同时进行的,所以仍然有 $m leq n+5$。

    所以可以得到 $n leq 10,m leq 15$,然后状压 dp 或者直接用最小表示法搜索都可以了。 

    B. IOer

    答案显然是$sum limits_{sum a_i=n}prod limits_{i=1}^m(ui+v)^{a_i}$。

    从组合含义的角度,$ui+v$是一个突破口。

    这个玩意实际上就是一个固定的 $v$,然后随着 $i$ 的增加 $u$ 不断增加。

    所以考虑每当 $i$ 增加的时候,就给可选的种类加个 $u$。

    这样的话,就得到了一种构造。

    总共球上有 $m$ 种数字 $[0,m)$,其中第 $0$种数字的球有 $u+v$个选择,其他数字的球有 $u$ 种选择。

    如果保证每种数字的球第一次出现的位置是递增的(除 $0$ 之外),这样的话在第 $i$ 个数字出现之前可选的种类恰好是 $(i*u+v)$ 种。

    所以现在只要再拟合一下次方数。为了方便计算,强制 $[1,m)$ 每种数字小球都必须出现,设第 $i$ 种数字第一次出现为 $p_i$。

    因为 $p_i$ 占了 $m-1$ 个位置,所以总共需要选 $n+m-1$ 个小球。

    $p_i$ 的出现意味着每次都有 $u$ 种选择,所以还要除掉一个 $u^{m-1}$。

    这样的话问题基本就解决了,剩下的是如何保证 $p_i$按顺序出现。发现这个玩意显然每种编号是相同的,所以直接除阶乘就完事了。

    只有最后一个条件即要求每种都出现,这个显然二项式反演一下就完事了。

    C. deadline

    容易发现问题是每个时刻任意选择一种边集,然后跑个最大二分图匹配的匹配最小值。

    因为二分图中有最大匹配=最小点覆盖,所以问题转化为用最少的点覆盖所有边。

    点覆盖无非选择时刻代表的点、工作$0$或工作$1$代表的点。

    为了能够选择时刻代表的点,需要把一个时刻拆成两个点处理,然后以流量为$1$的边连接。

    所以考虑连边 $(s,work_0)$ ,流量为$1$,割这条边代表选择这个工作代表的点作为覆盖点,这样的话就不需要选择这个工作连接的时刻了,还需要连边 $(work_0,time_{in})$,流量为正无穷表示不可割。

    同理需要对称的把 $work_1$ 连在 $time_{out}$ 和 $T$ 之间。

    然后发现如果求出了这个图的最小割,割在哪里就是最小的点覆盖,所以问题就解决了。

  • 相关阅读:
    『设计模式』再谈麦当劳的点单模式--命令模式(Command)
    『设计模式』备忘录模式(memento)下象棋,我就想悔棋怎么办
    『设计模式』职责链模式(Chain of Responsibility) 可怜的加薪、请假之路
    『设计模式』状态模式(不起花里胡哨的名字了)
    『设计模式』外观模式--这篇博客也太明了吧
    『设计模式』电话接线员与中介者模式
    『安卓』安卓开发基础--基本控件
    『设计模式』再谈Macdonald的汉堡口味--策略模式
    hive启动报错:Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgumen
    hive安装报错:Class path contains multiple SLF4J bindings
  • 原文地址:https://www.cnblogs.com/skyh/p/12445055.html
Copyright © 2011-2022 走看看