• 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. 出现上述情况的时候 最左边和最右边一定都有点

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

  • 相关阅读:
    安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识
    java:接口、lambda表达式与内部类
    SQL Server教程 - SQL Server 复制(Replication)
    亚马逊云科技,引领生成式AI的新时代
    【路径规划-VRP问题】基于混合K-Means和蚁群算法求解带容量车辆路径规划CVRP问题附matlab代码
    十四、内置模块path、邂逅Webpack和打包过程、css-loader
    【学习笔记31】JavaScript冒泡排序和选择排序
    AXI协议详解(7)-响应信号
    【前端面试必知】对插槽(slot)的理解
    数据结构之希尔排序
  • 原文地址:https://blog.csdn.net/m0_50170681/article/details/125884663