ICode9

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

Atcoder做题总结

2022-03-02 21:31:42  阅读:254  来源: 互联网

标签:总结 Atcoder 题目 4x 差分 凸包 做题 取整 贡献


ARC058C

发现 \(x+y+z\) 最多只有 \(17\) ,考虑状压,状态中第 \(i\) 位表示是否可以得到和为 \(i\) 的后缀。
注意一下每个位置是放 \(1\) ~ \(10\) 而非 \(0\) ~ \(9\) 。

ARC133D

区间异或和不好搞,差分一下设 \(w_i = XOR_{k=1}^i k\) 。
容易发现规律: \(w_{4x}=4x\) , \(w_{4x+1}=1\) , \(w_{4x+2}=4x+3\) , \(w_{4x+3}=0\)
于是就可以快速计算了。

ARC129D

令 \(a_i\) 是在 \(i\) 处的操作次数,则有

\[2a_i - a_{i-1} - a_{i+1} = -A_i \]

注意到这个形式类似差分,所以设 \(b\) 是 \(a\) 的差分,由上述式子可以得到 \(b_2\) ~ \(b_n\) ,又因为 \(\sum b_i=0\) 可以算出 \(b_1\) ,接下来找一个最小的 \(a_1\) ,使所有 \(a_i\) 都非负即可。

ARC130F

有些许恶心。
跟“鱼戏团表演”可以说是非常相似了。
观察题目性质,当操作次数趋于无穷时,最后的结果会像是一个凸包的形式。
如果只是这样就没有什么恶心的地方了,直接求凸包算就行。
但是!
问题在于题目是取整的,这就导致了得到的结果实际上应该是折线。
对于“凸包”上的两个点,如何算他们之间的贡献呢?
很容易犯的错误是直接把直线画出来,然后对每个点下取整。
我们发现的问题在于,“下取整”这一操作会使直线发生改变,从而影响后面的答案。
稍微玩一下就能确定算贡献的过程,如果区间是 \((l,r)\) ,且 \(a_l < a_r\) ,就应该从 \(l\) 开始向右一个一个求贡献, \(f_i\) 应该由 \(f_{i-1}\) 和 \(f_r\) 得到,而非 \(f_{l}\) 和 \(f_r\) 。
正因为这一奇特的求贡献方式,我们要求的“凸包”长歪了。
联系题目性质,知道求凸包时斜率应下取整

标签:总结,Atcoder,题目,4x,差分,凸包,做题,取整,贡献
来源: https://www.cnblogs.com/Kelvin2005/p/15957245.html

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

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

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

ICode9版权所有