首页 > 代码库 > 提高组模拟赛总结(1)

提高组模拟赛总结(1)

T1 :

题意:给定一个连续的颜色序列,至多可以去掉k种颜色,问能得到的最大连续单个颜色长度是多少 n <= 10 ^ 5

做法:考试的时候十分斯波,在统计的时候写了线段树统计,实际上根本不用

维护了两个指针表示当前的序列,离散化后用桶维护每一个颜色的数量,如果颜色 <= k + 1就一直加颜色进来,不然就一直移动左指针删除颜色,每次改变某一颜色数量时更新一下最大值就好了

T2:

题意:(实在没办法总结一句话题意了ORZ,总之是个变种的Lis)有 n 个节目,其描述了在 Ti时 刻 Xi号社团会表演节目(持续时间忽略不计)。而 LMZ 在一单位时间内最多也只 能跑过 V 个社团的距离(比如从 1 号社团跑到 V+1 号社团),而最少则可以不动, 跑步的左右方向任意。他想知道: 1. 当他初始时刻是站在 0 号社团的情况下,他最多能看到多少节目? 2. 当他初始时刻可以站在任意位置的情况下,他最多能看到多少节目? n <= 10 ^ 5 

做法:部分分的做法就是将节目按照时间排序,然后做lis, F[i]表示以i结尾的最长选择节目数, F[i] = Max(F[j]) + 1,转移时满足(time[i] - time[j]) * v >= |a[i] - a[j]| a[i],a[j]表示坐标

将转移的限制稍作变形得 time[i] * v - a[i] >= time[j] * v - a[j] (1)time[i] * v + a[i] >= time[j] * v + a[j](2) 为了避免分类讨论,我们按照当中一个式子的值排序,然后按照另一个式子的值作为关键字,这样转移的时候就可以通过树状数组的方法维护之前的信息,将复杂度优化到n log n

T3:

题意:有n个格子,填1 - n, 第 i 格子不能放 i, i + 1, 第n格子不能放 n, 1,求方案数

做法:部分分..搜索/暴力容斥 后者不会orz, 正解容斥?(90) 100分做法貌似出题人也是OEIS的,%%%%手推大佬

总之涉及数学知识的就是我的知识盲区了, 另外我的dp也不是很好,还喜欢遇到题目乱打数据结构orz,然而提高组不会考

提高组模拟赛总结(1)