AE酱的摸鱼记录1(2021.11.7-9)
Codeforces 1385E Directing Edges
题目大意
给你一张图,一部分边是已经定向的,一部分边为定向。要求给未定向的边定向,使得形成的有向图是一个DAG。
题解
只用定向的边建图,跑一遍拓扑排序,若有环则不可能。否则就给未定向的边从拓扑序小的点向拓扑序大的点连边。
Codeforces 439E Devu and Birthday Celebration
题目大意
\(n\) 个糖果分给 \(f\) 个人,求每个人都分到糖果且每个人分到的糖果数的gcd为1的方案数。
题解
时间复杂度 \(O(n+q\sqrt n)\)。
Codeforces 30C Shooting Gallery
题目大意
靶场里面有一个垂直于水平面的板子,目标会从这个板子上出现。我们使用笛卡尔坐标系来描述这个板子和目标,具体的,第 \(i\) 个板子的坐标是\((x_i,y_i)\),它会在第 \(t_i\) 秒出现并立刻消失。国王有可能打中一个目标,当且仅当国王的枪口在这一刻恰好指向它。如果在这一刻枪口指向它,那么打中它的概率为 \(p_i\) 。国王枪口移动的速度为每秒一个单位长度,(注:枪口可以不沿着坐标轴移动),同时枪口可以再任何时刻停下来不移动。现在给你所有目标的信息,求国王期望最多得到多少分。
题解
点数只有 1000。那么对于 \(i\) 号点和 \(j\) 号点,如果 \(dis(i,j)\leq t_j-t_i\),就从 \(i\) 向 \(j\) 连边。显然形成一个DAG,然后 \(i\) 号点点权是 \(p_i\),按拓扑序dp,\(dp[v]=\max(dp[v],dp[u]+p_v)\)。时间复杂度 \(O(n^2)\)。
CodeForces 839D Winter is here
题目大意
给定一个序列 \(\{a_n\}\),定义一个长为 \(k\) 的子序列\(a_{i_1},a_{i_2},\cdots,a_{i_k}\)的价值为 \(k\cdot\gcd(_{i_1},a_{i_2},\cdots,a_{i_k})[\gcd(_{i_1},a_{i_2},\cdots,a_{i_k})>1]\),求所有子序列的价值的和。
题解
套路题。设 \(m=\max_{i=1}^n a_i\),则
记 \(f(d)=\sum_{i=1}^n [d|a_i]\),则
这个东西应该也可以算,但还有更简单的方法。
设 \(g(i)\) 表示 \(\gcd\) 为 \(i\) 的子序列的数量,则
这里用了一下容斥原理,注意计算顺序。
最后
Codeforces 451E Devu and Flowers
题目大意
有 \(n\) 个盒子,第 \(i\) 个盒子里有 \(a_i\) 个球,每个盒子里的球是相同的,盒子与盒子之间的球是不同的。求取出 \(s\) 个球的方案数。 \((1\leq n\leq 20,0\leq s\leq 10^{14},0\leq a_i\leq 10^{12})\)
题解
显然可以用生成函数做,答案为
因为 \(n\) 只有20,所以后一半连乘可以 \(O(2^n)\) 暴力展开得到系数。设后一半的 \(i\) 次项系数为 \(c_i\),则我们只需要计算
考虑使用组合意义来计算前一半的 \(m\) 次项系数,则相当于从 \(n\) 个装有无限多球的盒子中取出 \(m\) 个球的方案数,使用隔板法可以计算出方案数为 \(\binom{n+m-1}{n-1}\)。
Codeforces 540D Bad Luck Island
题目大意
有 \(r\) 个石头,\(s\) 把剪刀,\(p\) 块布,他们之间会等概率随机相遇,相遇时按石头剪刀布游戏规则干掉输的物品,问最终只剩同种物品的概率是多少。
题解
平凡的概率dp,只要考虑 \(dp[r][s][p]\) 是如何转移到 \(dp[r-1][s][p],dp[r][s-1][p],dp[r][s][p-1]\) 即可。