杂题20200228

LOJ2155 「POI2011 R1」同谋者 Conspiracy

给定一张无向图,将 \(n\) 个点分为两个点集,使得其中一个是团,另一个是独立集,求方案数

\(n\leq5000\)

假设已经求出了一组合法解,解集一定由该合法解 把团中一个点放到独立集、把独立集中一个点放到团、交换团与独立集中的一个点 这三种情况构成

构造合法解可以 2-SAT 。若两点 \(u,\ v\) 之间有边,看作两点不能同时放入独立集;否则,看作两点不能同时放入团


LOJ2156 「POI2011 R1」棒棒糖 Lollipop

给一个由 \(1,\ 2\) 构成的序列,多次询问是否有一段区间和为 \(k\) ,并求一组解

\(n,\ q\leq10^6\)

假设当前有区间 \([l,\ r]\) ,和为 \(sum\) ,若 \(l<r\) ,一定可以构造出 \(sum-2\)

证明:若 \(a_l,\ a_r\) 两数中有一个是 \(2\) ,将 \(2\) 减去即可;否则,将 \(l,\ r\) 都向内挪一位

因此找到长度最大的和为奇数/偶数的区间,并记录答案即可


URAL1441 From the History of Gringotts Bank

给定一张无向图,将边集拆分成若干条路径(不要求是简单路径),使得每条边恰好被经过一次,最小化路径数量,输出方案

\(n,\ m\leq2\times10^4\)

当一个连通块内只有 \(0\)\(2\) 个度数为奇数的点时,欧拉路径即是答案

考虑将连通块中的度数为奇数的点两两匹配,把剩下的边用欧拉回路插到答案里,总共使用 \(\frac{度数为奇数的点}{2}\) 条链,可以发现这样是最优解

匹配度数为奇数的点可以找一棵生成树,从底向上匹配,时间复杂度 \(O(n+m)\)


URAL2047 Maths

构造一个长为 \(n\) 的整数序列 \(a_i\) ,满足:

  1. \(a_i\in[1,\ 300]\)
  2. \(\forall\ k\in[2,\ n],\ \displaystyle\sum_{i=1}^ka_i\) 有恰好 \(a_k\) 个约数

\(n\leq10^5\)

由于一个合法序列的前缀也一定是合法序列,可以从权值和入手,记 \(f_i\) 为序列和为 \(i\) 时的最大合法长度,易知转移为 \(f_i=f_{i-d(i)}+1\) ,其中 \(d(i)\)\(i\) 的约数个数

通过打表可以发现 \(n=10^5\) 时需要用到的值域不会超过 \(1.6\times10^6\) ,暴力 dp 即可


URAL1310 ACM Diagnostics

定义一个长为 \(L\) 的整数串是合法的,当且仅当:每个元素值域在 \([1,\ M]\) ,且元素和是 \(K\) 的倍数

求字典序第 \(N\) 的合法串

\(L\leq100;\ M,\ K\leq50\)

使用高精,二分之后暴力数位 dp ,会 TLE

确定了前缀的若干位后,实际上只关心剩下的位置中,和\(\bmod K=\) 某个数时的方案数,这是一个定值,可以预处理

猜你喜欢

转载自www.cnblogs.com/Juanzhang/p/12378579.html