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

    A. 染色问题

      考虑如何使用$m<=n+5$这个条件搞事情。

      发现如果我们将度数很少的点缩掉,那么剩余的点的个数会很少,甚至可以到直接搜索的程度。

      发现只要将度数$<=2$的点缩掉就可以了。

      对于度数等于1的点,可以直接消掉,给最终的答案乘上$k-1$即可。

      考虑给每条边设两个权值,即两边的点颜色相同时的权值和颜色不同的权值。

      度数等于2的点,那么需要将两条边合并成一条,考虑新加入这条边的权值,分为两边相同和不同讨论。

      最终在缩完点的图上只要搜索出答案就可以了。

    B. IOer

      首先可以把题意转化成n个物品m天取完的方案数并且在某一天取走一件物品的贡献是确定的,所以所以枚举每个时间取走多少件就可以确定贡献。

      所以考虑这个东西的组合意义。

      假如有很多球,每个球上标有$1-m$的数字,其中标有m的球的种类数是u+v,其余数字球的种类数是u,那么求满足以下条件序列的个数:

      1.长度为n+m-1。

      2.每个数字出现至少1次。

      3.数字出现的顺序单调递增(m除外)。

      那么可以发现,满足条件的序列个数就是原来问题的答案$*u^{m-1}$。

      发现最后一个条件很烦人,那么考虑去掉它。可以发现,除了第$m$种球,其他每种球都是等价的,所以假如去掉了最后一个条件,那么答案就会变成原来的$(m-1)!$倍。

      所以只要求出来满足前两个条件的序列个数。

      这个东西可以简单的容斥得到,也就是枚举最多出现了多少种颜色,容斥得到出现m种颜色的方案数。

    C. deadline

      考虑部分分的做法,假如将每个点相连的两种点之间连一条边,那么这张图显然是一张二分图。

      发现最大匹配必然每条边的两端至少选一个点,所以这个问题转化成了最小点覆盖。最小点覆盖=最大匹配,所以直接跑就行了。

      将这个东西扩展到正解。

      将每个时间段拆成两个点,之间连一条流量为1的边,对于每个任务$x$,假如$t=0$,那么S->x,流量为1,x->能够完成任务的时间段,流量为inf。否则x->T,能够完成的时间段->x,流量相同。

      之后跑最小割就可以得到答案。

  • 相关阅读:
    使用 MongoDB 存储商品分类信息
    什么鬼!基于备份恢复的实例数据还能变多?
    MongoDB账号管理及实践
    TiDB和MongoDB分片集群架构比较
    MongoDB复制集与Raft协议异同点分析
    MongoDB安全事件的防范与反思
    [翻译]pytest测试框架(二):使用
    浏览器渲染原理及解剖浏览器内部工作原理
    html实现鼠标悬停变成手型实现方式
    用ul li实现边框重合并附带鼠标经过效果
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12445217.html
Copyright © 2011-2022 走看看