zoukankan      html  css  js  c++  java
  • 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$的基础上预处理一些东西。不太会,咕咕咕……

  • 相关阅读:
    BZOJ 5308 [ZJOI2018] Day2T2 胖 | 二分 ST表
    CodeForces 464E The Classic Problem | 呆克斯歘 主席树维护高精度
    BZOJ5298 [CQOI2018] 交错序列 | 矩阵乘法和一个trick
    # BZOJ5300 [CQOI2018]九连环 题解 | 高精度 FFT
    [BZOJ5248] 2018九省联考 D1T1 一双木棋 | 博弈论 状压DP
    【2018九省联考】后的瞎扯
    BZOJ 4671 异或图 | 线性基 容斥 DFS
    Luogu 4294 [WC2008]游览计划 | 斯坦纳树
    BZOJ 2434 阿狸的打字机 | AC自动机
    UOJ#7. 【NOI2014】购票 | 线段树 凸包优化DP
  • 原文地址:https://www.cnblogs.com/Invictus-Ocean/p/14054183.html
Copyright © 2011-2022 走看看