• 11月28日考试 题解


    懒得放代码了,真是越来越怠惰了呢。

    T1

    题目大意:给定一张无向图,每条边起始均为白色。规定当与一个点相连的所有边只有一条边为白色时这条边将会染成黑色。可以手动染黑一些边。求最小染的次数。

    手玩样例发现答案为总边数减去生成树边数。图不一定联通,这个结论可以推广到多个连通块。bfs即可。

    T2

    原题目:AT1218

    考虑贪心,从小往大放。根据题意小的一定是往两边放的,发现如果要交换与它交换的只有比它大的数,因为小的数已经放好位置了。现在问题就转化为求逆序对,然后对于两边取min求和即可。

    T3

    题目大意:有三种动物分别为$A,B,C$,三个的克制关系为:$A ightarrow B,B ightarrow C,C ightarrow A$。有$n$个笼子,每个笼子随机装着一种动物。有两种操作:1.将$v$笼子拆掉,把里面的动物放到$u$笼子来;2.询问使$u$笼子内动物知道现在仍能存活的初始状态的方案数。

    我们可以维护一个每个动物存活的概率,然后合并的时候使用并查集。每次合并$u,v$的时候$u$的概率乘$frac{2}{3}$,$v$的概率乘$frac{1}{3}$,然后对于每个集合打lazy tag,find的时候更新子节点。询问的时候概率乘总方案即可。

    T4

    题目大意:给定一棵树,$q$次询问,每次给定$u,v,k$,请确定$k$条路径使得两两路径的交集为$<u,v>$。求方案数。注意点是有顺序的。保证每个点度数不超过$l$。

    我不会$O(ql)$的做法,只会$ql^2$的。暂且说一下吧。

    首先可以转化题意,变成“在$u$的子树中选两个节点使得它们的LCA为$u$”。显然每个子树内只能选一个节点,然后可以树形背包搞了。设$f_{i,j}$表示前$i$个子树选$j$个的方案数,然后大力转移。注意要去掉$<u,v>$这条链的方案数。不要忘记乘可重集合的排列。

    正解是生成函数背包搞,也可以在$ql^2$的基础上预处理一些东西。不太会,咕咕咕……

  • 相关阅读:
    如何强制360浏览器以极速模式打开页面
    如何解决Android SDK无法下载Package的问题(.net)
    Xamarin 安装步骤
    使用require.js和backbone实现简单单页应用实践
    HBuilder之初体验
    ClassLoader&双亲委派&类初始化过程
    List remove ConcurrentModificationException源码分析
    二十九、简谈设计模式
    二十八、Java基础--------正则表达式
    二十七、JDK1.5新特性---Annotation
  • 原文地址:https://www.cnblogs.com/Invictus-Ocean/p/14054183.html
Copyright © 2020-2023  润新知