根本不知道有ARC。然后unrated register。然后一直在聊天,只写了A。难蚌。
按照pog的说法,这场应该不看题直接写代码!!1这样才能写的飞快。
摆了一上午。我好像一直在贺题,所以还是记录一下。

A – Seat Occupation

你发现就 \(L\) 个人,单独来的他肯定能找到自己的座位,所以只有加入俩人的时候才有可能无解。那么我们考虑最坏情况,间隔一个位置就坐,直到两人组没地方坐为止。

\(O(n)\)

另:Echo问我为什么不可能是放中间最劣,我说不清楚。。

B – Pass on Path

我不会小学追及问题。。直觉pass次数越少越好。一般会pass两次,但如果从某个起点i开始背向出发只会pass一次。在时间 \(2l\) 的基础上加上这俩人等来等去的时间。
假设在j的地方pass。
\(ans = 2l+2|2L-2a[i]-2a[j]|\) 固定i,那么显然在a[j]最接近 \(L-a[i]\) 的时候最优。考虑<= 和 >= 的最近的情况即可 \(O(n)\)

C – Pivot

一次操作实际上相当于在数轴上把一条线段关于 \(s\) 对称。
那么实际上两数之间的相对位置是不改变的,最大值最小且所有数大于0,就是让最小值最小且大于0。
设开始的最小值和最大值分别是mn,mx
如果s=mn/mx,设d=mx-mn,d始终不变,那么最小值会+d或-d,次数任意。(看成线段在数轴上翻转)
那么最小值可以最终变成 \(mn%d\)\(mx%d\)。那么此时我们思考怎么再减小最小值。
如果选中的数是s,开始的最小值是 \(r\),操作一次后 \(r\) 变为 \(2*s-r\),也就是 \(+2(s-r)\)。再重复操作是会 \(-2(s-r)\),因为此时的s已经改变。可以操作一次最大值,之后再操作,就会是 \(+2(s-r)\) 了。那么也就是说我们也可以+-任意次 \(2(s-r)\)
我们发现s=mn/mx的可以归到一般情况里。
\(g=gcd(2*(a[i+1]-a[i]))\)。答案就是 \(min(a[1]\%g,a[n]\%g)+a[n]-a[1]\)

D – Halftree

https://www.cnblogs.com/closureshop/p/16910404.html
构造题。。这位神仙写的够清楚了。。

原文地址:http://www.cnblogs.com/zdsrs060330/p/16911387.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性