AGC做题记录
2022/6/7 23:21:16
本文主要是介绍AGC做题记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
估计不到10题就弃坑了
AGC054B
如果最后 Takahashi 取走的橘子的下标依次是 \(a_1,a_2...a_k\),Aoki 是 \(b_1,b_2...b_{n-k}\),那么如果 \(a,b\) 确定,\(p\) 也就唯一确定了。
数 \(a,b\) 很简单。考虑这个结论的正确性:
首先第一个该 Takahashi 选,所以 \(p_1=a_1\)。
之后如果该 Takahashi 选就让 \(p=a\),否则就让 \(p=b\)。
由于双方取的橘子质量都是 \(\sum w/div 2\) ,所以也不可能出现该某个人选但这个人已经选完了的情况(如果选完了那么接下来全部橘子显然都该另一个人选了)。
AGC054C
考虑对于 \(P\) 如何求出最小交换次数。令 \(P_{pos_i}=i\)。
容易想到一个贪心策略:依次考虑 \(1,2...n\),如果当前 \(pos_i\) 前面比 \(i\) 大的数不超过 \(k\) 就不管,否则暴力往左边调整直到前面比 \(i\) 大的数不超过 \(k\)为止。
最优性:这个比较显然,因为我们每次选最小的一个数调整,如果先调整大的肯定不会更优。
正确性:这不更显然吗,显然后面调整的数不会把已经调好的数往右边挤,所以正确性显然。
然后我就开始各种数数,发现数 \(pos\) 数不出来,数其它的也数不出来,但就是没想到直接数 \(x_i\)(菜是原罪)。
设 \(x_i\) 表示排列 \(P\) 在 \([1,pos_i)\) 内比 \(i\) 大的数的个数,\(x^{\prime}_i\) 表示 \(P^{\prime}\) 的。那么有 \(x^{\prime}_i=\min(x_i,k)\)。
\(x^{\prime}\) 是可以直接求的。如果 \(x^{\prime}_i<k\),显然 \(x_i\) 唯一确定。否则,\(k\le x_i\le n-i\)。
显然可以归纳法证明每个 \(x\) 唯一对应一个排列 \(P\)显然确实显然但我就是注意不到。于是答案即为 \(\prod\limits_{cnt_i=k}(n-i-k+1)\)。
这种数排列的题 agc 貌似还挺喜欢出的,agc056b 也是。基本上这种题目都需要先分析一堆性质和结论,然后找到一个对应且唯一对应一个排列的东西,并且要求这个东西是好数的,最后把这个东西数出来就好了。
这篇关于AGC做题记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享