yxy小蒟蒻的201111总结
2020.11.11 周三
今天是单身节啊 我不愧是万年寡王 一到单身节rp就++了
B B B题居然过了 笑死我了 我那个假算法 这种组合计数的题我很少做对的 基本是没有
当时我想着肯定做不出来 写了个假算法就玩交互去了
然后交互 主要是读题读错了 本身题目是不难的 二分它倍增的步数
C C C题太有意思了 妙不可言 我还想再开个博客慢慢掰扯掰扯二分图
A
给定长度为 n n n 的序列 a i = 1 n {a}_{i=1}^n ai=1n,每次随机找到相邻两个元素 a i , a i + 1 a_i,a_{i+1} ai,ai+1,将它们合并为 a i − a i + 1 a_i-a_{i+1} ai−ai+1。求最后得到的数的期望值。对 1 e 9 + 7 1e9+7 1e9+7 取模
结论 a n s = a 0 − a 1 ans=a_0-a_1 ans=a0−a1
K o n j a c q Konjacq Konjacq大佬说了个证明挺有意思的
-
显然 当只有三个数的时候 第三个数是没有贡献的
-
显然 对于某一个数 无论怎么选 它后面的数不影响它的贡献
那么对于一个位置大于等于 3 3 3一个数 一定存在一个时刻它是第三个数 它所以没有贡献
B
给定整数 n , m , k n,m,k n,m,k。
我们称一个 1 1 1 到 n n n 的排列 p p p 是好的,当且仅当有恰好 m m m 个 i i i 满足 p i = i p_i=i pi=i。
请求出所有 1 1 1 到 n n n 的排列中,字典序第 k k k 小的排列。若不存在,则输出 − 1 -1 −1。
每一位从小到大枚举可以放哪个数 能放就放
c h e c k check check的时候我是 O ( n ) O(n) O(n) 算的 不知道为什么就过了
我稍微证了一下时间 大概就每次都是枚举每一位的时候 当前的 k k k 都是指数级别的递减
然后远远跑不满 O ( n 3 ) O(n^3) O(n3)
真 跑得飞快
C
给定正整数 n , m n,m n,m。
你想构造一个两边均有 n n n 个点(左边的点编号为 1 1 1 到 n n n,右边的点编号为 n + 1 n+1 n+1 到 2 n 2n 2n),共有 m m m 条边(允许有重边)的二分图,满足其最大匹配大小不大于 r r r 且不小于 l l l。
若与第 i i i 个点相连的边有 d i d_i di 条,则该二分图的价值是所有 p i , d i p_{i,d_i} pi,di 的和。
请求出所有满足条件的二分图中价值的最小值,或判断无解。
这个题太有意思了 首先要知道 Hall定理 (我在这儿学的,Henry_Huang大佬写东西就是好)
题面让我们求 最大匹配在一个区间内的所有方案中 价值最小的方案
这个价值只和每个点的度数有关
其实定了每个点的度数的方案 它可以取到的最大匹配是一个区间 (想想为什么 可以手模一下)
m a x max max 是左右两边度数非 0 0 0 的点少的那一个的数量
m i n min min 不能直接求得 先放一下 继续看
那么判断一个方案是否在 [ L , R ] [L,R] [L,R] 区间内 就是要求这个方案 m a x ≥ L max \ge L max≥L 且 m i n ≤ R min \le R min≤R
由于 H a l l Hall Hall定理推论 V 1 + m i n S ⊂ V 1 ( ∣ N ( S ) ∣ − ∣ S ∣ ) V1+min_{S⊂V1}{(|N(S)|−|S|)} V1+minS⊂V1(∣N(S)∣−∣S∣)
V 1 V1 V1 是左边的点 S S S 是子集 N ( S ) N(S) N(S) 是与 S S S 相邻的右边的点的集合
是不是如果一个方案中有一个二分图中存在一个 S S S 使得 V 1 + ∣ N ( S ) ∣ − ∣ S ∣ ≤ R V1+|N(S)|−|S| \le R V1+∣N(S)∣−∣S∣≤R 那么这个方案就合法
那么我们可以枚举 S S S 和 N ( S ) N(S) N(S) 并且枚举左边的总度数和右边的总度数 让它们直接连边
预处理左边取 S S S 并指定 S S S 总度数的合法方案中的最小价值 和右边取 N ( S ) N(S) N(S) 并指定 N ( S ) N(S) N(S) 总度数的合法方案中的最小价值
这样的话对 m i n min min 和 m a x max max 的要求都满足了
再把他们加起来就更新答案
D
交互先咕咕了
占坑