Loading

校内阴间 NOIP 模拟赛一句话总结 Part I

大规模口胡现场,无关人员迅速撤离

10.29

ljh

题意:给若干个不相交的矩形,求有多少对矩形内整点满足距离为 \(\sqrt{2}\)

嗯,一道很容易写假的题。GQY 直接被我造的数据叉爆

矩形内很好统计。只是矩形间不太好搞。

考虑竖着的边之间的贡献。先按 \(x\) 排个序,然后看相邻的 \(x\) 的贡献。

为了避免复杂度爆炸,还要用个 set 维护纵坐标。横着的边同理。

kat

组合数入门题。

ac

有一棵树,每个节点上有一个桶,可以容纳若干个球。每次可以给一个节点到根路径上的所有节点的小桶内放一个小球(放满则跳过)。求最后每个节点的小桶内的小球颜色数。

感觉很神。一开始想的线段树合并,然而并不能做,因为有这该死的桶

题解给的是线段树二分+启发式合并。线段树维护时间轴上加入的小球及其对答案的贡献。

启发式合并(小合大)合并子树的放球信息。

最后线段树二分在时间轴上找到球满的时候,然后求一波贡献和。

10.30

railway

题意:给个无向图,对于每条边 \((u,v)\),求出删去 \(e(u,v)\)\(u->\) 的最短路。使用 \(O(nm)\) 解。

暴力的话就每次 bfs 一下,\(O(m^2)\)

考虑优化。其实我们可以每次删除一个点及其所有相连的边。然后就跑一个不经过指定边的次短路。

intersec

线段树维护一个像扫描线的玩意儿。

sort

题意:给一个数,把它重排后使得其为 \(11\) 的倍数且尽量大

真就神仙 dp。记 \(\text{dp[i][s]}\) 为在剩余的数中选出 \(i\) 个使得和为 \(S\) 的方案数。

然后每次模拟选走最大能选的数,看剩下的数的 dp 值是否大于零。不行就再给它丢回去(反悔)。

注意被 \(11\) 整除的数的性质:奇和偶的数位和对 \(11\) 同余。

10.31

这波大联考直接身败名裂

grace

很快想到贪心策略,然后发现就是区间众数

sum

二进制题目,按位考虑传统艺能。

需要注意这道题要开 ULL,然后就要注意减法运算要提前 +MOD(100->50)

还要用龟速乘

cactus

题意:求仙人掌图任意两点间的简单路径方案数。

先 tarjan 缩点,然后就是个树上的区间修改单点查询(最后才查询)。

在 dfs 序差分就好了。考场写错差分 100->5...

flow

傻逼贪心题,std 还用的线段树优化 dp,我???

11.2

jolyne

题意:求环上满足 中间的数都不大于两侧最小值 的点对个数。两条弧其一满足就有贡献。

  • 断环成链
  • 单调栈

单调栈维护数对 \((x,y)\),满足对于 \(x<k<y\)\(a_k<a_x,a_k<a_y\)

断环成链讲究技巧——从哪里断开。发现从最高点断开后面的讨论最方便,一个需要记住的 trick

coin

  • 有依赖的背包、完全背包方案计数

考虑对于两种物品 \(a,b\),其中 \(a\) 的数量大于 \(b\) 的数量,我们可以通过把其体积(价值)转化为 \(a,a+b\) 变成一般的背包模型。

还有这翻译是真的坑

rideon

反复横跳问题,随便推个递推式就好了

johnny

题意:删去 DAG 上一个点,最小化剩余图的最长路。

写完再来填

11.3

building

Meet in middle,都是老套路了

pestc

二分答案,tarjan 判环(当然也可以 topsort)

可以证明,把一条边方向其实等价于删掉此边。

ginkgo

搞个 dfs 序,然后就是个主席树

equation

CF 原题名称 unsolvable...

真就不可做题,简化之后就是求第 \(n\) 个梅森素数,我???

阴间度拉满,lzw 一天到晚找的啥子题

11.4

factor

小学数学题,就拆数

buffet

线性 dp,按照题意推就是了

gun

题意:\(n\) 个人围成环,初始枪在 \(1\) 号位。一共有 \(c\) 个弹孔,初始 \(n-1\) 个弹孔里有子弹。
随机选择一个弹孔向右边的最近活人来一火,如果空枪则把枪给左边第 \(K\) 个活人,反之给左边第 \(1\) 个活人。
求每个位置获胜概率。

神仙 dp

考虑 \(f_{i,j}\) 表示剩下 \(i\) 个人,枪在 \(1\) 号位右边第 \(j\) 个活人手上,\(1\) 号位的人胜出概率(此时他还没挂)。

$f_{i,j}=\frac{i-1}{c} f_{i-1,left(j,1)} + \frac{c-i+1}{c} f_{i,left(j,K)} $

发现这个 dp 方程会成环,可以用高斯消元暴力干掉

然而复杂度就 \(O(n^4)\)

可以优化。发现这个 dp 方程成环是有周期性的且若干个环不交。考虑暴力展开方程,得到一个可以 \(O(n)\) 计算,每次转移 \(O(1)\) 的柿子(Trick to remember)

总复杂度 \(O(n^2)\)

repeater

只会 70 分:对于 \(a<b\) 的情况复读关系是个树,然后用平衡树维护 dfs 序(区间平移操作)

100 分就成了个基环树,留个坑如果 CSP 没退役就找时间写了

11.5

The last contest or not?

Comb

信心题没啥可说的,Lucas 板子

game

简单推规律。可以推出当所有 \(a_i=-1\) 的柿子,然后一个很显然的想法就是中间期望步数 = 终态期望步数 - 初态期望步数,然后就过啦

flower

憨子 dp

excel

神仙数据结构,还没来得及调

要是我 CSP 还没退役就来填坑,CSP 2020 R2 Bless All

11.18

credit

线段树维护前缀和。

cut

神仙 dp。dp 值是一个类似字典序的东西。

要用记忆化搜索而不能用一堆 for 做,不然会多出很多无用状态,因为这个我 MLE 了一下午……

recover

正解是 dp,但直接被 Meet in middle 乱搞过了

divisorful

Fact:一个 divisorful 的数绝对由一个 divisorful 的数乘一个质数所得。

因此我们枚举较小的质因子,每次和当前 divisorful 集合中本身有的数相乘,得到一个更大的集合并实时维护其中哪些数是 divisorful 的,不是的话就从 set 丢出去。

筛他个几千答案就出来了。

11.19

最近改题咋这么慢啊……

voltage

考虑建一颗 dfs 的生成树,然后添加返祖边,看形成的环是奇还是偶,然后就是树上差分

parentheses

tmd 又改一天

考虑单个括号序列要让其合法,就是贪心的思路:先区间内部互换、然后区间间互换、最后区间内外互换。

如果有多个括号区间,分两种情况:

  • 交叉:例如一个 ABC 要求 ABBC 都合法,显然 ABC 都得合法。

  • 嵌套:例如一个 ABC 要求 ABCB 合法,显然让 BAC 合法即可(这形成了树的关系)。

于是考虑事先预处理出全部要求合法的区间,这个可以用 set 进行维护。注意这些区间是两两不交的,这提供了复杂度保证。

然后在这个区间树上乱搞就可以了。

posted @ 2020-11-03 20:45  Sqrtyz  阅读(160)  评论(0)    收藏  举报