ICode9

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

USACO 2022 February contest

2022-02-28 19:33:24  阅读:191  来源: 互联网

标签:February 排列 sum 位置 合并 USACO 次数 枚举 2022


Cu

忘存代码了,看个乐就行。

T1 Sleeping in Class

给出 \(n\) 个数 \(a\),任意合并相邻两个数,问使合并到最后全部相等的合并次数最小值。

\(n\le 10^5,\sum a \le 10^6\)

因为合并到最后的数一定是 \(\sum a\) 的约数,所以枚举 \(\sum a\) 很少的约数然后 \(O(n)\) 判断即可。Orz huaruoji。

因为我没有注意到 \(\sum a\) 的范围,所以我直接暴力枚举第一个数合并到的位置,同样的判断。但加了个优化,如果答案比当前位置合并所花次数还小就 break。

\(O(n*玄学)\)。

T2 Photoshoot 2

给出两个排列,一次操作可以把第一个排列中的一个数任意左移,求最小操作次数把第一个排列变成第二个排列。

首先把第二个排列当做 \(12345\)。注意到一次操作只能左移,所以要把第一个排列的 \(5\) 归位,位置在 \(5\) 右边的数全都要动,我们发现因为这些数是任意动,所以它们一定可以在左边排好后依次插入,所以我们就只需要看左边的。这样有点像递归,但实际上,我们只需要从大到小枚举数的位置,维护之前最靠左的位置,如果新枚举到的在维护位置的右边就不用管了,把新枚举到的数与维护的位置中间的数计入操作次数并把当前位置作为新的最靠左的位置。

\(O(n)\) 即可。

T3 Blocks

随便dfs一下就行。

标签:February,排列,sum,位置,合并,USACO,次数,枚举,2022
来源: https://www.cnblogs.com/llmmkk/p/15947123.html

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

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

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

ICode9版权所有