ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2 月做题记录

2022-02-07 19:32:40  阅读:192  来源: 互联网

标签:记录 题解 times mex 做题 考虑 转移 rightarrow


CF1608F MEX counting

Links

题解:

  • 首先显然考虑 DP ,设计状态:有一维显然是 \(i\),然后 \(k\) 表示当前的 mex 值 ,最后 \(j\) 表示已经选的数中 \(>k\) 的数的个数。
  • 然后就是很神仙的转移,考虑从 \(i\) 转移到 \(i+1\)。
  • 如果加入 \(a_i\) 对 mex 不产生贡献,即 \(a_i \neq k\) ,则有 \(f_{i,j,k} \times k \rightarrow f_{i+1,j,k}\)(在 \([1,k]\) 中选择 \(a_i\)), \(f_{i,j,k} \times j \rightarrow f_{i+1,j,k}\)(在 \(j\) 个数中选择 \(a_i\)),\(f_{i,j,k} \rightarrow f_{i+1,j+1,k}\) (选择了一个 \(>k\) 且没有出现过的数)。
  • 如果加入 \(a_i\) 对 mex 产生了贡献,即 \(a_i = k\),那么考虑枚举 \(k \rightarrow t\),\([k,t-1]\) 之间的数必须全部出现,转移则为 \(f_{i,j,k} \times \frac{j!}{{(j-(t-k+1))!}}\),相当于在 \(j\) 个数中选出 \(t-k+1\) 个数且要求有序。
  • 然年这样的复杂度是 \(O(n^2k^2)\) 的,瓶颈在于第二种转移。
  • 那么现在考虑优化,首先改主动转移为被动转移,然后令 \(T=j+k\),设状态为 \(f_{i,T,k}\),那么第二种转移就变为了 \(\sum\limits_{k < t} \frac{(j-k)!}{(j+1-t)!} \times f_{i,j,k} \rightarrow f_{i+1,j+1,t}\),然后这个可以前缀和优化,空间可以滚动数组,最后总复杂度为 \(O(n^2k)\),常数很大,需要卡常。

总结: 关键在于状态的设计以及 \(j+k\) 的发现。

Codechef DESTRUCT

Links

题解:

  • 一次操作分为两个人显然不太可做,于是考虑改成这个样子: B 先选一个堆,然后 A、B 轮流拿石子和给对方选堆。
  • 然后一个经典的考虑博弈论的手法是:如果当前必败,考虑能不能让对方接下来把自己的活干完。
  • 然后就很神奇:如果当前 \(a_i>1\) ,拿完必败的话,就拿剩 1 个,再选这个给对方,这样对方就陷入了自己刚才的处境;否则自己拿完。也就是说,第一个拿到 \(a_i > 1\) 的堆的人必胜(全为 1 特判即可)。
  • 所以一开始每个人肯定强迫对方拿 1,判断奇偶性即可。

标签:记录,题解,times,mex,做题,考虑,转移,rightarrow
来源: https://www.cnblogs.com/lgj-lgj/p/15868928.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有