AtCoder Regular Contest 174
1|0Preface
这场当时在和同学开黑打LOL都不知道有这回事,后面看徐神和祁神在讨论才知道有ARC
赛后补了下发现中规中矩,D题在已知是个打表题的前提下很好做,但如果真在比赛的时候是否能用有限的时间找到规律也是存疑
2|0A - A Multiply
找出原序列的最大/最小子段和,讨论下操作哪个得到的结果最优即可
3|0B - Bought Review
将题意稍做转化,令\(S=2\times A_1+A_2-A_4-2\times A_5\),我们现在的目标就是要将\(S\)变为\(\le 0\)
操作为花费\(P_4\)的代价使\(S\)减\(1\);或者花费\(P_5\)的代价使\(S\)减\(2\)
不难发现最优方案要么全部用其中一种操作,要么用一次减\(1\)用若干次减\(2\)(当\(S\)为奇数时)
4|0C - Catastrophic Roulette
经典ARC数数题,但这个还行闪总都会做
注意到\(n\)的范围可以枚举,因此一眼考虑DP,设\(f_{i,0/1}\)表示第一次出现\(i\)个数时,当前操作者是先手/后手的概率
对于状态\(f_{i,0}\)(\(f_{i,1}\)同理),直接来看它有\(P=\frac{i}{n}\)的概率转移到\(f_{i,1}\),并对先手产生\(1\)的花费;同时有\(1-P\)的概率转移到\(f_{i+1,1}\)
注意到这个DP转移的时候会在\(i\)相同的两个状态间循环转移,乍一看感觉不好处理,但仔细一想会发现贡献其实都是等比数列形式
以\(f_{i,0}\)的转移为例,在经过了无限次操作后显然它必然会到达\(f_{i+1,0/1}\)中的一个,手玩一下概率会发现有:
- \(f_{i+1,1}\leftarrow f_{i,0}\times \frac{1}{1+P}\),同时对于先手的花费期望贡献为\(f_{i,0}\times \frac{P}{1-P^2}\)
- \(f_{i+1,0}\leftarrow f_{i,0}\times \frac{P}{1+P}\),同时对于后手的花费期望贡献为\(f_{i,0}\times \frac{P^2}{1-P^2}\)
对于这类状态可能重复多次的问题,不妨稍微修改定义,只统计第一次遇到某个状态时的概率/期望,问题就迎刃而解了
5|0D - Digit vs Square Root
看到题目直觉告诉我们符合条件的\(x\)感觉不会很多,手玩一下会发现确实如此
因此考虑打表来找合法的\(x\)是否存在某些规律,不过直接暴枚\(x\)的话复杂度会有点炸(虽然感觉来了一样能看出规律),故考虑枚举\(y\)来判断其合法的区间
首先\(x\in[y^2,(y+1)^2-1]\)是trivial的,考虑要满足\(y\)是\(x\)的前缀的性质,这个只要找出\(\le y^2\)且以\(y\)为前缀的最小数以及\(\le (y+1)^2-1\)且以\(y\)为前缀的最大数即可
前者很好处理,我们在\(y\)后面补\(0\)直到其值\(\ge y^2\)即可,后者的话需要一点小讨论,具体可以看打表代码
把表打出来后就会发现显而易见的规律,即除了\([1,1]\)合法的区间就两种形式:
- 单个数:末尾\(i\)个\(0\),开头是\(i-1\)个\(9\)再接上一个\(8\),如\(\{998000\},\{99980000\}\)
- 一段区间:左端点为\(i\)个\(9\)接上\(i\)个\(0\);右端点为\(10^{2i}+10^{i}-1\),如\([999000,1000999],[99990000,100009999]\)
不难发现合法的区间个数很少,预先处理出来后询问的时候直接枚举每个区间即可
6|0Postscript
后面E题虽然过的人挺多,但看到Counting一眼寄,还是去准备准备DS专题的搬题吧
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/18083264.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
2023-03-19 Codeforces Round 858 (Div. 2)