7.19模拟赛总结
Posted Flame♡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.19模拟赛总结相关的知识,希望对你有一定的参考价值。
想T3代码的正确性想的脑阔疼
为什么不给大样例 这就是foi么(怒)
没有大样例我重拳出击 有大样例我唯唯诺诺
时间安排
8.00-10.00
感觉题目很怪 T1 看不出来是个什么 T2 想了半天只会50 T3 感觉好像可以三分 然后脑洞大开想了个错误性质怒冲T3
10.00-11.00
写T2 哈哈 广义sam套树上暴力跳结果把 j j j 打成las了
11.00-12.00
想了一个误以为是正解的T1正解
骗了50分 它数据还挺严格的
题目分析
T1
我想的是 所有的都可以被表示成矩形的拼接
然后状压子集枚举 f [ s , w ] f[s,w] f[s,w] 表示把 S S S 内的拼成一个矩形长度为 w w w 最短的宽是多少
upd
正解竟然是神奇暴搜
考虑每个矩形一定贴着某个矩形的右边界 然后从下到上找第一个能放下的位置
T2
考虑建广义sam 把询问串一起放进去 然后查询的时候暴力加树上路径 加完之后 把询问串在sam的dag上走 相当于是对每个点求到根的一条路径的最大值
upd
没有利用10的性质) 应该是要想到可以枚举字串查询的qwq
T3
嘎 最开始想了个三分(我恨 坚持这个想法就骗到100了
然后我莫名其妙的证出来了了一个错误的结论:一条边的两个端点到最远点的最短路一定经过这条边)
然后就抛弃三分写这个了
寄
其实比较好的应该是两个都写一下 对着拍 还是考试习惯不好) 不过三分也是个假做法(有大样例就好了
upd
这里分析一下代码的正确性
我们会发现 代码里没有算第一个点之前的 也没有算最后一个点(因为到这个两个点之后有一侧会没有点) 但为什么这样算出来的答案仍然正确呢
- 最左的点一定是以右边点为最远点形成的 最右的点一定是以左边点为最远点形成的
考虑点 x , y x,y x,y 到点 z z z 的距离 a b s ( d 1 − d 2 ) < = d i s ( x , y ) abs(d1-d2)<=dis(x,y) abs(d1−d2)<=dis(x,y)
- 若在两侧有答案 则答案一定最接近两个端点
两侧的位置 1.点都在右边 2.点都在左边
- 答案一定会出现在 d i s ( x , y ) = w ( x , y ) dis(x,y)=w(x,y) dis(x,y)=w(x,y) 的一条边上
否则可以发现 在这条边上选一点只会让答案变得更大
- 出现上述情况的时候 最左边和最右边一定都有点
因此得证 不用考虑最左和最右边的一段
以上是关于7.19模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章