8VC Venture Cup 2017 - Elimination Round

D. PolandBall and Polygon (4s, 256MB)

题目大意:有一个包含 \(n\) 个顶点的凸多边形,其编号按顺时针方向依次为 \(1 \sim n\),且保证其任意三条对角线不交于一点。给定 \(k\) 满足 \((n,k)=1\),现在将如下操作重复 \(n\) 次:每次从当前顶点 \(X\) 跳到其之后的第 \(k\) 个顶点 \(Y\)\(X+k\)\(X+k-n\)),并连结对角线 \(XY\)。初始时 \(X=1\)。求每次操作连结对角线后多边形将会被划分成多少块区域。

数据范围:\(5 \leq n \leq 10^6\)\(2 \leq k \leq n-2\)

简要题解:首先令 \(k=min(k,n-k)\),显然答案不会发生变化。然后尝试画图寻找规律。注意到只有当所连对角线跨越 \(1\) 号顶点时,加入对角线后新增的区域数才会发生变化。模拟即可。

时空复杂度:\(O(n) - O(1)\)

关键字:规律,模拟

E. PolandBall and White-Red graph (2s, 256MB)

题目大意:有一个简单无向完全图,其中一些边为红色,其余的边为白色。定义该图的鲜艳度为 \(min(d_r,d_w)\),其中 \(d_r\) 为由红色边构成的子图的直径,\(d_w\) 为由白色边构成的子图的直径。图的直径的定义为:图中任意两点之间的最短路的最大值(在该题中视所有边的长度均为 \(1\)),而若图不联通,则认为图的直径为 \(-1\)。求构造一个鲜艳度为 \(k\) 的包含 \(n\) 个顶点的简单无向完全图。

数据范围:\(2 \leq n \leq 1000\)\(k \leq 1000\)

简要题解:注意到一个简单的事实:若图 \(G\) 的直径大于 \(3\),则其补图 \(G'\) 的直径必定小于 \(3\),证明如下:

证明:约定 \(G\) 中的最短路用 \(d\) 表示,\(G'\) 中的最短路用 \(d'\) 表示。设 \(u,v\)\(G\) 中直径的端点,则 \(d(u,v) \geq 4\),而我们要证明的是 \(\forall x,y\),成立 \(d'(x,y) \leq 2\)。注意到,在 \(u,v,x,y\) 中最多存在 \(4\) 个不同的顶点,而 \(d(u,v) \geq 4\),则显然可以将这 \(4\) 个点分为两个集合 \(A,B\),使得 \(\forall a \in A,\forall b \in B\),边\(E_{ab}\) 均不存在。则这样的 \(A,B\) 集合有两种不同的情况:\(\{u,x\},\{v,y\}\)\(\{u,x,y\},\{v\}\)。对于第一种情况,在补图 \(G'\) 中边 \(E_{xy}\) 存在,故 \(d'(x,y)=1 \leq 2\)。对于第二种情况,在补图 \(G'\) 中边 \(E_{xv}\)\(E_{yv}\) 均存在,故 \(d'(x,y) \leq d'(x,v)+d'(v,y)=2\)。综上即证。

由以上事实可知,我们只要找出 \(k=1,2,3\) 时的构造方法即可。

  • \(k=1\) 时,显然无法构造
  • \(k=2\) 时,令 \(E_{12},E_{23},\cdots,E_{n(n-1)}\) 为红边即可
  • \(k=3\) 时,令 \(E_{12},E_{23},E_{34},E_{15},E_{35},E_{56},E_{57},\cdots,E_{5n}\) 为红边即可

注意当 \(n \leq 4\) 时,还有一些特殊情况需要考虑。

时空复杂度:\(O(n) - O(1)\)

关键字:构造,结论

F. PolandBall and Gifts (1.5s, 256MB)

题目大意:\(n\) 个人互送礼物,已知第 \(i\) 个人将带礼物送给 \(p_i\),其中 \(p_i \not= i\),且保证 \(\{p_n\}\) 为一个排列。但是我们已经知道会有 \(k\) 个人忘记带礼物。而第 \(i\) 个人会收到礼物当且仅当:

  • \(i\) 个人带了礼物
  • \(x\) 个人满足 \(p_x=i\) 带了礼物

求最多和最少有多少个人不会收到礼物。

数据范围:\(n \leq 10^6\)\(k \leq n\)

简要题解:注意到任意排列都可以转换成置换形式,那么,在一个循环中,如果当前位置的人没有带礼物,那么对应的下一个位置的人将不会收到礼物。

  • 最多:考虑尽可能让同一循环中没有相邻的人同时不携带礼物,按循环的大小分奇偶贪心即可。显然,在大多数情况下,答案会是 \(2k\)
  • 最少:设排列 \(p\) 所分解成的各个循环的大小为 \(c_1,c_2,\cdots,c_m\)。贪心地,若存在 \(c_{a_1}+c_{a_2}+\cdots+c_{a_q}=k\),则答案为 \(k\),否则答案为 \(k+1\)。即问题是要判断是否存在若干个 \(c_i\) 之和为 \(k\)。用普通的背包型动态规划需要 \(O(nm)\) 的时间复杂度,我们可以考虑将循环大小相同的放在一起成为多重背包问题,而用二进制拆分(比如 \(9=1+2+4+2\))优化转移。可以证明,这样复杂度为 \(O(n\sqrt{n})\)

证明:令复杂度为 \(O(nS)\),令循环大小为 \(k\) 的有 \(cnt_k\) 个,则
\[S=\sum_{k,cnt_k \not= 0} log(cnt_k)+1\]
又有\(log(x)+1 \approx \sum_{r \geq 0} [x \geq 2^r]\),而对于 \(cnt_{k_i} \geq p(i=1,2,\cdots,l)\)
\[n=k_1cnt_{k_1}+k_2cnt_{k_2}+\cdots+k_lcnt_{k_l} \geq p(k_1+k_2+\cdots+k_l)\]
又因为 \(k_i\) 互不相同,故 \(k_1+k_2+\cdots+k_l \geq \dfrac{l(l+1)}{2}\),从而 \(l \leq \sqrt{\dfrac{2n}{p}}\)。故
\[S \approx \sum_{k,cnt_k \not= 0} \sum_{r \geq 0}[cnt_k \geq 2^r] = \sum_{r \geq 0}(\sum_{k,cnt_k \not= 0} [cnt_k \geq 2^r]) \leq \sum_{r \geq 0} \sqrt{\frac{2n}{2^r}} = O(\sqrt{n})\]

时空复杂度:\(O(n\sqrt{n}) - O(n)\)

关键字:置换,动态规划,贪心

G. PolandBall and Many Other Balls (6s, 256MB)

题目大意:\(n\) 个棋子排成一行,现在将从这些棋子中选出 \(m\) 组,每组包含一个棋子或相邻的两个棋子,且每个棋子最多属于其中一组。求 \(\forall m \in [1,k]\) 有多少种分组方案数。答案对 \(998244353\) 取模。

数据范围:\(n \leq 10^9\)\(1 \leq k < 2^{15}\)

简要题解:考虑最简单的动态规划,令 \(f_{i,j}\) 为从前 \(i\) 个棋子中选出 \(j\) 组的方案数,则转移方程为
\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}+f_{i-2,j-1}\]
但这样复杂度不能满足要求,而注意到可以将前 \(c\) 个棋子分为前 \(a\) 个和后 \(b\) 个,其中 \(a+b=c\),那么转移过程分为两步

  • 若前 \(a\) 个和后 \(b\) 个间没有联系,则
    \[f_{c,i}=\sum_x\sum_y [x+y=i] \cdot f_{a,x} \cdot f_{b,y}\]
  • 若第 \(a\) 个棋子和第 \(a+1\) 个棋子被选为一组,则
    \[f_{c,i}=\sum_x\sum_y [x+y=i-1] \cdot f_{a-1,x} \cdot f_{b-1,y}\]

这启发我们将 \(f_{i,0},f_{i,1},\cdots,f_{i,k}\) 看作一个多项式 \(g_i\) 的各项系数,则上述转移过程将类似于 NTT 。那么只要维护 \(g_t,g_{t-1},g_{t-2}\),就可以递推出 \(g_{2t},g_{2t-1},g_{2t-2}\),从而倍增得到答案。值得一提的是,评论中有一种利用多项式开方的方法,可以借鉴。

时空复杂度:\(O(klognlogk) - O(klogk)\)

关键字:动态规划,倍增,NTT

转载于:https://www.cnblogs.com/lijingze8/p/6485804.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值