zoukankan      html  css  js  c++  java
  • NOI2021训练记录

    NOI2021训练记录

    week1(4.19~4.23)

    4.19

    LOJ3504「联合省选 2021 A」支配
    需要利用支配关系是一棵树这个结论

    LOJ3503「联合省选 2021 A | B」滚榜
    把贡献拆到相邻两个人身上就能直接状压dp了

    LOJ3501「联合省选 2021 A | B」图函数
    很暴力的一道题,需要一点转化

    写了LOJ3500「联合省选 2021 A」矩阵游戏的50分

    4.20

    上午校内模拟赛

    T1 发现强制在线之后前四十位和原来一样,把这个拿出来开哈希表,枚举1~n查询。打表发现这样做除开前1000个数不会有三个以上的数冲突在一起,就做完了。

    T2 列出式子发现是个简单的凸包题,用超哥树写掉了。

    T3 想出贪心之后可以直接按位确定,考场上的写法不太对,对不能达到最优的位的处理不太恰当,靠着数据水骗了50分,考后补掉了。

    LOJ3500「联合省选 2021 A」矩阵游戏
    构造题,考虑先构造出满足加起来=b的条件,再在不改变第一个条件的情况下构造出任意的矩阵。利用奇偶性分配正负号加上一个相同的权值,使得矩形内增量为0,转化为差分约束

    LOJ3505「联合省选 2021 B」数对
    暴力的复杂度是调和级数

    4.21

    LOJ2720「NOI2018」你的名字
    最开始想的是把两个SAM拼一起,就想歪了。其实直接把T在S上匹配,用线段树合并判断是否合法,类似于一个双指针的过程,最后用SAM去重就做完了。

    LOJ2721「NOI2018」屠龙勇士
    用multiset简单处理出攻击力就是一个EXCRT裸题

    LOJ2302「NOI2017」整数
    按题意用set模拟了一下碾过去了...复杂度不会证,修改均摊(O(1))的话应该是个(log^2)
    正解是把加和减分开统计,比较后缀大小,就能压位了。

    想了下 LOJ2305「NOI2017」游戏 的思路。

    4.22

    LOJ2303「NOI2017」蚯蚓排队
    想了个hash本来以为是(nk^2),看题解发现这样是(nk)的。写了个双hash一遍过了

    LOJ2305 「NOI2017」游戏
    (2^d)枚举之后2-SAT

    LOJ3345「APIO2020」粉刷墙壁
    暴力枚举当前位计算出往后能刷多少次,最后单调队列转移

    LOJ3346「APIO2020」交换城市
    求次小瓶颈路,讨论一下发现要么成环要么有一个点度数>3。在kruskal重构树上考虑,如果一个点的子树里有横叉边或者有点度数>3就满足条件,可以倍增求出深度最深的这样的点。

    LOJ3144「APIO2019」奇怪装置
    列式子发现是统计模(frac {ab}{gcd(a,b+1)})下本质不同点个数,可以扫描线。

    4.23

    上午模拟赛

    T1 不会,写的暴力
    题解做法是利用2n条边的二分图的一个性质,把链删掉就只剩偶环了,然后把偶环的权值拿出来背包。

    T2 费用流模型比较简单,随了组数据发现连向s和t的边都没有退流,可以直接模拟费用流,但是不会线段树维护这个东西,所以写了个 (n^2) 的暴力模拟费用流。题解里的线段树确实比较复杂。

    T3 用斯特林数拆成下降幂,转成组合意义就是连通块内选j个点的方案,可以dp。
    题解里没有拆,组合意义变成可重有序地选k个数,用EGF直接做也行。

    week2(4.25~4.30)

    4.25

    LOJ3146「APIO2019」路灯
    转化为二维数点

    LOJ3145「APIO2019」桥梁
    分块

    LOJ2585「APIO2018」新家
    multiset的麻烦操作+二分

    4.26

    LOJ2586「APIO2018」选圆圈
    暴力+kdtree剪枝

    LOJ2308「APIO2017」商旅
    明显二分,但直接拆点找负环是((nk^2)log w)的,显然无法接受。考虑优化掉 (k) ,即对于一次固定起始点的买卖可以预处理出最优策略,然后再最短路可以做到 (n^3+n^2k+n^2log w)

    4.27

    上午训练赛

    T1 线性代数不会,写了个常数巨大的矩阵快速幂。

    T2 发现分块可以不带 (nm),复杂度 (1e8),实际跑的飞快。标程是线段树。

    T3 神经网络提答,寄了。

    LOJ576「LibreOJ NOI Round #2」签到游戏
    结论+线段树上二分

    4.28

    LOJ6437「PKUSC2018」PKUSC
    把贡献拆开,发现是答案是圆在多边形内的圆弧长度之和除以2PI。

    LOJ6436「PKUSC2018」神仙的游戏
    考虑一对字符对匹配失败的贡献,显然一个border里只要出现0和1匹配就不成立,否则成立,那么把正串1的权值设为1,反串0的权值设为1,然后NTT。

    LOJ6435「PKUSC2018」星际穿越
    首先有个结论是往右跳只会最开始跳一次,然后倍增

    LOJ6432「PKUSC2018」真实排名
    D1T1签到题,注意判0

    LOJ6433「PKUSC2018」最大前缀和
    D1T2签到题,不过WA了好几发才过。转化成一边前(后)缀和>0,另一边<=0,直接状压就行了。

    剩下一道斗主地没看,晚上看PKUSC2019题解,自己编了下。

    4.29

    模拟赛

    T1 在ZR做过原题,转化成左儿子个数<m-1,容斥下可以(O(nm)),也可以dp。

    T2 发现 (i) 的答案要么是 (i) 要么是 (ans_{nex_i}) ,剩下的就是SCOI2016萌萌哒了。

    T3 先二分,树可以直接点分治,基环树的话可以断一条边,不选就是点分治,选就是在剩下的环上取一段前缀和后缀,可以用线段树做。

    4.30

    LOJ2538「PKUWC2018」Slay the Spire
    D1签到题,讨论一下发现有两种情况:

    1. 只选一张攻击
    2. 不选的m-k张里全是攻击

    然后发现 (n^2) 就能过,随便写了个dp。调了很久样例,还WA了一发k=1一发多测清空。

    LOJ2540「PKUWC2018」随机算法
    直接状压和存独立集大小是(2^nn^2)的,有点卡。可以转化成每次加一个点,然后转移枚举加的最后一个点,状态是得到集合内的最大独立集概率。

    还剩一道斗地主不看了

    week3(5.6~5.8)

    5.6

    上午正睿模拟,没啥状态有点摸

    T1 构造一个有向图满足内向生成树个数为给定的C,C是个没啥性质的(1e18)的常数。这种一般就二进制考虑了,然后有一种构造可以使加一条边方案数加(2^i)

    T2 发现删掉的串的后缀串是没用的,用trie处理,维护下可以自由生长节点的个数,可以生长出一个节点的节点数和总结点数。

    T3 大poly,寄。

    LOJ2071「JSOI2016」最佳团体
    二分+暴力dp

    LOJ2072「JSOI2016」独特的树叶
    树Hash,加个换根

    LOJ2075「JSOI2016」位运算
    状压之后矩阵快速幂

    5.7

    正睿模拟

    T1 模数为3的二项卷积。
    用lucas拆开组合数,发现下标(mod 3) 加起来>=3时就为0,否则把下标除以三,按新的下标继续分类,题解说复杂度是 (n^{1.6})

    T2 一个二分图,每条边有(1/2)的概率出现,求两边各随机一个点他们之间最短路的期望。
    用dp维护bfs的过程,有点卡常。

    T3 求数字互不相同,且异或起来不为零的序列的数量。
    如果容斥异或起来不为0(枚举相同的数字对数)是没法做的,因为相同的数对和原序列里的数字相同时会被算重,那么容斥异或起来为0的序列,发现我们可以轻松构造出前 (i-1) 个互不相同且前 (i) 个异或起来为0的序列,剩下的一个稍微讨论下就好了。

    下午学校模拟 没题解,不知道T1咋做

    T2 把贡献拆开再算下概率就能 (O(n))

    T3 讨论下大小发现贡献是(n)条折线加起来的形式,扫描线维护。

    5.8

    LOJ2073「JSOI2016」扭动的回文串
    观察到一个性质之后直接二分+hash

    LOJ2074「JSOI2016」灯塔
    决策单调性优化贪心(甚至dp都不是,有点裸)

    LOJ2077「JSOI2016」飞机调度
    转化成最小链覆盖,网络流解决

    下午写了两道CF水题(AB),C看了题解。

    week4(5.9~5.14)

    5.9

    晚上来学校vp了一场div1,写了ABC

    5.10

    上午模拟赛

    T1 有个结论是一棵树上距离一个点最远的点一定是直径的一个端点,然后动态维护连通块直径

    T2 发现排遍序之后贡献就是凸函数了,并且上凸可以直接分治。

    T3 线性代数,寄

    下午开会,写了CF1483的ABCD

    这之后就是PKUSC了

    week5(5.18~5.21)

    5.18

    今天的题有点毒瘤,姑且只订正了一道

    ZROI1869 匹配 考虑找出gcd个循环节,按轮廓线dp。具体的位运算有点麻烦

    5.19

    ZROI598 方格
    二分答案+高超的dp技巧

    ZROI599 凸包
    求一堆点的子集的凸包大小的最大值,先把点按极角排序,再对边排序,这样dp转移的时候一条合法的凸壳一定是能被表示成边的上升序列的,反之则不行,那么枚举起点直接dp(注意按扫描法的话要去掉点的顺序在起点之前的边)。

    ZROI600 组合数学
    这种凭空列一个奇奇怪怪的式子可以考虑组合意义

    [frac{m!}{prod_{i=2}^n s_i}=frac{m!*a_1}{prod a_i}frac{prod_{i=2}^na_i}{prod_{i=2}^ns_i} ]

    前面的可以枚举(a_1)直接算,现在考虑求后面的。倒着看,相当于有 (n) 种颜色的球,每种 (a_i) 个,每次选一个,并且删掉所有这种颜色的球,一共选 (n-1) 个。可以先枚举哪个没被选,求出它最后选(第n个)的概率,那么容斥一个集合 (S) ,它在 (S) 之前选的概率是 (frac{a_i}{a_i+sum_{jin S} a_j}),和容斥系数一起用背包求就好了,就是猎人杀那题的套路。

    5.20

    ZROI506 字符串拼接
    发现dp对2取模后永远只有两个位置是1,直接状压。

    ZROI507 那个序列
    字典序一般按位确定,需要一点高超的均摊check技巧。

    ZROI508 那棵树
    每次修改一个颜色,求所有虚树大小之和
    发现虚树大小就等于按dfs序相邻两个点距离和除以2,用set直接维护。

    这之后就是APIO了

    week6(5.24~5.28)

    5.24

    校内模拟了三道noip题,就不写了

    晚上div1,C写假了,掉了5分。

    5.25

    补了昨天的C题

    曼哈顿转切比雪夫:

    [A(x,y)Rightarrow A’(x+y,x-y) ]

    切比雪夫转曼哈顿:

    [A(x,y)Rightarrow A’left(frac{x+y}{2},frac{x-y}{2} ight) ]

    正睿模拟赛T1是原题,T2数据结构需要用到上面的技巧。

    5.26

    正睿模拟赛三道djq题,写了两个暴力有一个还挂了,成功垫底

    下午vp了场div1

    5.27

    正睿模拟赛,都是数据结构板子题,切了个LCT(T2)

    T1是可持久化fhq,不会

    T3我写了树上莫队但是卡不过去

    5.28

    学校模拟赛T1是简单题压个(3^n)状态,T2是01trie合并+贪心

    晚上CFdiv2,E看题解不是很难但没想出来,可能对SA和插板不太熟悉

    week7(5.31~6.4)

    5.31

    凌晨CFdiv1+div2,还剩一个半小时的时候先去写D,结果假了,最后40分钟想到E就是个插板,结束后20分钟比较冷静的时候才把细节想完写出E,还好我手速够快没掉分。

    学校模拟赛写了200,实际80

    T1 计算几何,精度开的(1e-5)只有80,开(1e-9)就A了

    T2 广义SAM+线段树合并,算空间的时候没把SAM算进去,结果MLE了。以后记得线段树合并开20N就行,最后算一遍总空间。

    6.1

    正睿模拟

    T1送的

    T2 求删掉每个点的最小生成树(权值取max)

    想到在原最小生成树上做这个问题就很简单了

    6.2

    T1 构造排列的题可以从最值(最小/最大),相对顺序等入手

    T3 至少被一个元素满足条件->容斥,赛时没想清楚。优化可以减少状态/dfs

    AGC033C 删叶子删到空可以转化成直径减少

    AGC014D 无言投下

    ARC063F 矩形周长有一些性质

    6.3

    正睿三道不可做题,T1找了找规律,和题解大部分是一样的,加了个数据分治过了。

    vp了CF1525,写了ABCDE

    CF1525E 要求至少一个满足条件,除了容斥还可以枚举首个/最后出现的。如果枚举的是最后出现的那么前面可以任意,后面都不能出现,分别统计。

    6.4

    上午学校模拟赛,T1是大字符集的AC自动机,用主席树模拟转移数组。

    T2的题面/样例有点问题,T3不会,也没有题解。

    晚上CFedu,同样是5题,有人30多,有人200+(我),花了半个小时对拍结果是倍增变量写错了??

    wee8(6.6~6.11)

    6.6

    晚上div2,每个题都WA过,最后20分钟看了E但是没想出来,rank700多

    6.7

    CF1439C 注意到一共只有log段,线段树上二分暴力找

    CF1439D 考虑最后的分配方案,连续段之间是不影响的,枚举最后一段的长度然后dp。

    CF1536E 降智题

    6.8

    正睿模拟 T1题意不明

    T2要把树上的一段权值往下移一位,移完是个小根堆,树链剖分后注意到一段链最多只会改变两个权值,一共 (log) 段,就做完了。

    T3讨论下然后预处理一些东西的前缀和就能 (n^2)

    看了看THUSC的题解,没地方交。

    CF1148G 巨大讨论题

    6.9

    正睿T3 选一个权值和最大的点集使得在两棵树上都是连通块

    刚开始想的是把边抽象成点跑最大权闭合子图,结果不好赋权,而且可以选出多个联通块

    后来想到直接枚举一个点强制在连通块里,其他点向父亲连边跑最大权闭合子图就好了。

    ARC068F dp

    ARC078F 发现每次选一个团,直接状压。

    6.10

    ZROI509 发现答案最多只有100多位,枚举最高位的1后发现对后面的不影响(至少有当前位数个2),那么再枚举之前的一个答案判断能否构成新答案即可。复杂度(100^2 imes 6000)

    ZROI510 分治

    ZROI511 中位数有个套路,把小于它的赋为-1,大于它的赋为1,那么一条合法的路径权值和为0,可以搞个dp。发现树高(sqrt n),那么直接暴力修改。注意随机树高数值上可能比 $sqrt n $ 大,数组要开大一点。

    6.11

    学校模拟,考了套好题

    T1 树上选 (K) 条路径权值和为 (S) ,得分为 (frac S{K+1}) ,且你可以把所有点权加上一个 ([0,T]) 的常数模 (LIM) ,最大化得分

    分数规划+dp我还是会的,不过只有30分(甚至因为没有spj爆零)

    注意到加的常数可以分成n段,每段取最大的就只有n个,(n^2log n) 就有60分了

    正解是随机化。我们把这n个要加的常数随机排列,每次二分前 (O(n)) check 一下当前答案是否可行,复杂度 (n^2+nlog ^2n)(随机排列每次找比当前元素值大的元素,期望次数 (log n)

    T3 两边取对数之后转化成找第一个在这个点上方的直线,整体二分+超哥树是两个 (log) 的(偷懒写法),改成斜率优化+归并排序就是一个 (log)

    week9(6.18~6.20)

    6.18

    学校模拟 T1容斥+根号分治,其实这种插板法前不久在CF才自己做出过一道,场上脑子寄了

    T2 统计不完整的链用斯特林数拆成组合数维护只能dp,转化成统计完整的链+二项式定理拆出来用树状数组维护要好一点。

    T3 申必结论

    6.19

    T1 发现按贪心策略对于每个点答案改变量是定值,那么上数据结构维护

    T2 缩点之后跑dp,有点麻烦

    T3 这类题(求最小数的 (n),使得前 (n) 个数中满足某一性质的数的比例大于等于 (p) )通用解决方案:

    ​ 假设现在考虑的是前 (B) 个数字,其中满足性质的数的比例为 (A),并且满足 (frac A B < p),我们找到最小的 (C) 使得 (frac{A+C}{B+C} ge p),然后把 (C) 加到 (B) 上去,重新计算 (A) ,迭代这个过程,直到 (frac A B ge p)(B) 即为答案。

    复杂度我暂且蒙在古里,这题好像很快,主要看这个性质咋样吧。

    week10(6.22~

    来金华一中了

    6.22

    ZROI604 按位确定+模拟

    ZROI605 按位确定+猜结论

    6.23

    ZROI537 贪心题 申必最小割

    下午模拟赛 T1 发现一个格点只有两种选择,于是最小割

    T2 构造题,各种乱搞

    T3 场上写的 (m2^{frac n 2}) 讨论+fwt+容斥竟然过了,正解还要再加个枚举,复杂度(m2^{frac n 3})

    6.24

    学习了一下待修莫队(三维莫队),把块长开成 (n^frac 2 3) 就好了

    the end

    后面都在正睿了 教练也不催我交总结 懒得写了

  • 相关阅读:
    git 提示error setting certificate verify locations 解决方案
    检查性异常和非检查性异常
    Intellij IDEA 代码格式化/保存时自动格式化
    IntelliJ IDEA 如何设置类头注释和方法注释
    IntelliJ IDEA 创建 Java包
    python列表的增删改查用法
    我的第一篇博客
    Python全局变量和局部变量相关知识点
    学生管理系统(改进版)
    Python---函数的相关知识点总结一:
  • 原文地址:https://www.cnblogs.com/lcyfrog/p/14678903.html
Copyright © 2011-2022 走看看