• 2018 ACM-ICPC 青岛网络赛


    最近打比赛不知道为什么总是怀疑自己

    写完之后不敢交,一定跟学长说一遍自己的思路

    然后发现"哦原来我是对的"

    然后就A掉了……

    所以还是要有自信

    Problem A

    最大值直接输出m,最小值二分答案就可以了 。

    Problem B

    现场没过这个题……

    原因是……ZJH的代码写错了一个细节(看起来很对)

    所以有的时候并不能想当然。

    我们的思路是这样的,首先把原来的树分成若干子树。

    记录每个点管辖它的最近的红祖先。然后分离出来。

    对于每个询问得到若干个子树,每个子树若干个被询问的点。

    我们发现答案肯定不会小于第二大的子树的那个答案。

    那么要做的事情就是在第一大的子树里面添加红点。

    把第一大的子树里面的询问的点按照距离降序排序。

    然后前缀LCA求下来更新答案,跟后面的没有减小答案的求个较大值然后更新答案。

    时间复杂度$O(nlogn + ∑klogk)$

    Problem C

    简单的模拟题,按照题意走下一步。

    开个数组标记一下,如果之前走到过这步那么结果是No。

    Problem D

    Problem E

    Problem F

    Problem G

    这个题我们要对每个数实时维护他所在的那个连通区间(最左端,最右端)

    我用了线段树实现。

    首先有个结论:每次把一个序列拆成两段,小的那段的规模加起来级别是$nlogn$的。

    那么每次假设我们知道了$[L, R]$的逆序对个数,现在要把他拆成$[L, x - 1], [x + 1, R]$,

    那么枚举小的那段的每个数,求出另一段有几个数大于或小于他,这个用主席树实现。

    同时求出小的那段的逆序对数,这个跟上面那个类似。

    然后还要求出$x$这个位置的数对两边分别的影响(也是主席树上查询)

    那么这样就可以求出两段各自的逆序对数,套个堆就可以了。

    Problem H

    Problem I

    Problem J

    Problem K

  • 相关阅读:
    pandas
    高性能的异步爬虫
    组件推荐Forloop.HtmlHelpers 用来实现MVC的js加载顺序
    MVC 表单防伪,自定义提示(AntiForgery.Validate)
    Dapper 多表(三表以上)查询小技巧
    layui记录
    java websocket中的ping-pong 机制
    图像读取Exif小知识,图像扶正,还原拍摄时的角度
    关于人脸识别引擎FaceRecognitionDotNet的实例
    .NET的关于人脸识别引擎分享(C#)
  • 原文地址:https://www.cnblogs.com/cxhscst2/p/9661465.html
Copyright © 2020-2023  润新知