zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    mysql事务
    mysql函数
    mysql自连接
    MYSQL添加外键关联
    SQL多表查询
    SQL数据完整性
    SQL limit
    SQL分组查询
    升级GCC 6.2编译LLVM的问题
    Quartz时SLF4J错误
  • 原文地址:https://www.cnblogs.com/cxhscst2/p/9661465.html
Copyright © 2011-2022 走看看