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

这里分析一下代码的正确性

我们会发现 代码里没有算第一个点之前的 也没有算最后一个点(因为到这个两个点之后有一侧会没有点) 但为什么这样算出来的答案仍然正确呢

  1. 最左的点一定是以右边点为最远点形成的 最右的点一定是以左边点为最远点形成的

考虑点 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(d1d2)<=dis(x,y)

  1. 若在两侧有答案 则答案一定最接近两个端点

两侧的位置 1.点都在右边 2.点都在左边

  1. 答案一定会出现在 d i s ( x , y ) = w ( x , y ) dis(x,y)=w(x,y) dis(x,y)=w(x,y) 的一条边上

否则可以发现 在这条边上选一点只会让答案变得更大

  1. 出现上述情况的时候 最左边和最右边一定都有点

因此得证 不用考虑最左和最右边的一段

以上是关于7.19模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章

2021 7.19 ~ 7.20 纪中 Day 8 ~ Day 9 总结

7.19总结

7.19PHP所学知识总结

7.19考试总结

6.29模拟赛总结

广义表总结