oi priblems
我要写代码,我要贴代码。
CNOI
联合省选
2025
追忆
给的是有向图,有向图可达性是 NP 的,只能使用 bitset 做,这样分析复杂度可以除一个 。
对于 a 或 b 没有修改的情况我们都有 poly n 的做法,拼起来的时候考虑分块平衡复杂度。对 a 和 b 分别值域分块,整块维护编号集合的 bitset,散块直接维护对应编号,对于查询,假设可达点集为 S,那么找到 a 值域在 [l,r] 中的集合和 S 与起来,然后在 b 的值域中找到最后一个与 S 有交的块,在块中暴力就可以。
计算复杂度,设块长为 B,分析可得 时有最优时间复杂度 。
抄了个手写 bitset, 如下。
1 | |
发现这并不好用,所以我这道题改用普通 bitset。
1 | |
POI
可以从 szkopul 上找,qoj 也很全但是没有 spj,更推荐直接从洛谷上搜。
2001
绿色游戏
对于 Ann 的点,如果能称为必胜点那么其出边中存在一个绿点;对于 Bily 的点,如果能成为必胜点则其后继点必然全部是绿点;绿点不一定是必胜点。我们不妨假设绿点都是必胜点,从绿点开始跑来 check 上面的条件,如果有绿点不符合那就把这些绿点扔了继续跑,可以说明最多跑 遍,对于本题是可以接受的。实现的时候可以从后继点到当前点连边,每次 check 可以执行一个类似 bfs 的框架。代码:
1 | |
2004
Bra
神秘。考虑一个点点值的范围,两端不同就是未知了。贪心地假设每个点点权都是 1 然后如果有点不满足约束就把它改合法这样就能求上界,求下界同理。
1 | |
2005
PUN-Points
把重心平移到一块,最远点放缩到一起向两个方向判断就行。困了写不动了。不行得写。现在先不写,实在困。
SAM-Toy Cars
直接猜每一次撤销 最大的那一个。
1 | |
SKO-Knights
记 表示 内集合 整系数线性组合得到的线性空间(张成),即
考虑合并三个向量 ,发现倍加操作对张成没有影响,将 在 维上辗转相减, 在 维上辗转相减这样 就共线,取 即可三变 2, 变 2 也就可以 做了。
1 | |