• 2017多校游记3~4


    Day 3

      这次连我省队长都跑了,加上pear要选课,大概后半场是稳稳地要单打了,感觉药丸...

      被那个sb的移动网折腾地快1h才上线,幸亏吴核心给我看了1005,上去就先过再说,这时候队友也上线了,切了08,11两个签到题,开始卡02...

      后面真就变成了一个人单打,也不想说啥了,做的不是结论就是sb题,要不是开黑弄来02,怕是这个07调不出来要把整场多校给废了...

      4h写了7题(算上07),这在我校多校模式下也是罕见的吧...

    部分题解(待更):

    1002:

    1003:

    1004:

    1005:

    1006:

    1007:

    1009:

    1010:

    Day 4

      虽然我省队长还是没回来,但今天配合的还是蛮好的

      上来先开了06(不过还是比开01好写),仔细想了半天啥也没想出来,扔了算了(你妈的谁能想到哪个询问的m是用来卡常的,wori)

      又开了07,发现是sb基环树题,赶紧写了,又有一血啦...看了04发现是略复杂的分数规划,但发现和czy撞题了,就去看13了

      想了会儿13,刚动手写树套树就发现好像不好传懒标记,就感觉只能分块了,决定先放一边再说。回来看小朋友们过了02,想了一下是不算复杂的字符串,我居然把独立贡献乘起来算答案(谁叫样例给了等于没给),简直不知道说什么好...

      pear给我讲了05做法,顺手写了烦人的讨论题,回来一看12过了,进前三了...

      然后一群人就开始卡10了,本来都以为答案不会太大,但写了就是过不了,然后发现可以splay维护dp数组,写着写着发现连splay都不要,写个deque就行了,于是折腾了快一个小时才过。

      最后看了08,发现是个裸的最小生成树,只要点奇怪的优化就行了,可是罚时太大,最后就只有rk6了...

    部分题解(待更):

    1001:

    1002:把询问改为从不超过$L$个字符的前缀和不超过$R$个字符的后缀并在一起。考虑两个串并在一起对答案的贡献是两端上面个数之和,加上左边$i$和右边$m!-!i$并起来可行的数量。用kmp分别处理出来正反方向的每个$i$个字符的后缀能否匹配目标串的前$j$个字符后,对$i$求一下前缀和$l(i,j),r(i,j)$,在对可以匹配整个目标串的部分再求一下前缀和$sl,sr$,那么答案就为$Rcdot sl(L)+Lcdot sr(R)+sumlimits_{i=1}^{m-1}sl(i)sr(m-i)$。复杂度$O(nm)-O(nm)$

    1004:考虑二分答案,每个点均减去$mid$,最后一次出现的点加$1$,如果最小部分和小于$0$,那么就存在更小的。从前往后枚举右端点,利用线段树维护当前情况下每个左端点对应的部分和即可。复杂度$O(nlog\,n;log\,frac{1}{eps})-O(n)$

    1005:如果有一条边经过奇数次,那一定绕整个环走了奇数次,先枚举是否存在这样的情况。对于剩下的情况:枚举边使用的情况(经过$2$个点$2$种,$3$个点$3$种,$4$个点$5$种):每条边必然再使用$2$次,初始值即可算出,这样就变成了经典的最短路问题(算出对最大取模下的最小可行数值)。复杂度$O(20n)-O(n)$

    1006:

    1007:由于左边每个点度数为$2$,根据Hall定理,每个联通块左右点数必然相同,那么就形成了若干个点数=边数的联通块(即基环树)。搜出每个联通块的环后对剩下每棵树跑一边匹配,若环上点都剩下来了,那么就存在奇偶两种情况,否则根据已匹配的点把环切成若干链,就可以简单计算了。复杂度$O(n)-O(n)$

    1008:类似kruscal,每次加入一种线路之后,令相关的点连通,由于之前做完之后连通性是固定的,无论怎么连边数都一样。那么用一个并查集维护整张图的连通性,再拿一个并查集维护每个点向上(包括自己)最近的没和他的爸爸连边的点(如果搜到一个点一个和他的爸爸连通,假装新和爸爸连了一条权值为$0$的边,跳过即可)。对于每条线路分别把两条路径上每个点(除了lca)和他爸爸连上,最后把这两个路径合在一起即可。复杂度$O(nlog\,n)-O(nlog\,n)$

    1010:如果两个点能一起过,那么一定一起过。考虑二维dp,$!mid a_i!-!b_j!mid >!k:dp(i,j)!=!dp(i!-!1,j!-!1)!+!1$ otherwise:$dp(i,j)!=!min{dp(i!-!1,j),dp(i,j!-!1)}!+!1$。考虑对于每个i如何维护这个dp数组:把$dp(i,j)$都减去i,把整个数组拷贝右移一位,再前面填上一个0,对于特殊的O(k)个点,按位置p从前往后取$min{dp(p!-!1)!+!1,dp(p!+!1)}$即可(因为$dp(i,0)$~$dp(i,p!-!1)$此时已是正确数值,$dp(i,p!+!1)=dp(i!-!1,p)$)。对于移动操作,用个deque维护一下即可。复杂度$O(nk)-O(nk)$

    1012:考虑二维dp:$dp(i,j,k)$表示第一个做完了$i$个,第二个做完了$j$个,现在$a$数组是否是用了偶数个,其中若$a(i)!=!b(j)$表示两个数组都转移完了,否则表示只转移了$a$数组的情况。那么$a(i)=b(j)$时$dp(i,j,k)!=!sumlimits_{j_2=1}^{j!-!1} dp(i,j_2,k)$否则$dp(i,j,k)!=!sumlimits_{i_2=1}^{i!-!1} dp(i_2,j,k!oplus!1)$。两种情况均可以用前缀和优化。复杂度$O(n^2)-O(n)$

  • 相关阅读:
    iOS书写高质量代码之耦合的处理
    下载历史版本App超详细教程
    iOS-申请邓白氏编码的超详细流程介绍
    AFNetworking之于https认证
    iOS时间问题
    AFNetworking到底做了什么?(二)
    AFNetworking到底做了什么
    iOS7中的ViewController切换
    iOS 视图控制器转场详解
    关于如何写UI及屏幕适配的一些技巧
  • 原文地址:https://www.cnblogs.com/rqgao2014/p/7281323.html
Copyright © 2020-2023  润新知