9 月做题记录

CF1630D *2400

B 表示所有能翻转区间长度的集合。那么对于任意 x,yB,都满足 xyB。所以 gcd(b1,b2,,bn)B。考虑长成什么样的序列满足要求。考虑记 gi 表示第 i 个数是否翻转。记 fi 表示 i=xmodggx。 只有当所有 f 都相等时才满足要求。
然后 dpi,j 表示前 i 个数,f 的异或值为 jai 的最大值。

CF1619H *2400

首先这东西一定是个置换环。如果没有交换操作很 naive,考虑怎么维护这个交换操作。
nxti 表示 iB 次后的结果。然后只会影响 Bnxt,暴力维护即可。
单次查询是 O(Bn) 的。
B=n 可以做到 O(nn)

CF1585E *2400

link

CF906C *2400

这个题没有 2400 吧。
直接记 dps 表示认识的人的集合为 s 时的最小步数,暴力枚举每个人认识人的状态转移即可。

CF342E *2400

考虑两种暴力。
第一种是把所有红点取出来进行 bfs。
第二种是把和所有红点就行bfs。
考虑对操作分块。
对于之前的整块,进行第一种暴力。单次 bfs O(n)。总共操作根号次。
对于当前的散块,取块内所有红点进行 lca。
最后的复杂度 O(nn)

P5443 紫

跟上题一样,都是按操作分块然后暴力维护。

CF1083E *2400

多选一个矩形增加的贡献只与前一个相关。
然后直接 dp 就行,斜优一下就行了

CF145E *2400

维护一下 47 的个数和不下降不上升。翻转相当于交换。

CF444C *2400

看到区间推平操作直接考虑珂朵莉树。线段树维护一下权值即可。

CF1340C *2400

考虑记 fu,i 表示到了 du,绿灯还有 i 的时间。
直接 01 bfs 即可。

CF815C *2400

首先那个关系建出来必定是棵树。
那么 dpu,i,0/1 表示以 u 为根的子树里选了 i 个并且有没有使用优惠券的方案数。
树上背包即可。

CF379F *2400

考虑两棵树合并只要查 4 个点就可以得到新树。直接做就行。

CF632E *2400

看这个数据范围和时限感觉 n3 能卡的过去。那考虑背包。
因为要满足恰好 k 个所以先把最小的价值减掉,把他当 1 进行处理就可以了。

CF220E *2400

发现区间长度越大越容易满足条件。那么对于左端点找一个最近的右端点即可。双指针扫一遍树状数组维护一下。

CF915F *2400

感觉这个 dsu 很难想到阿。思维还是太烂了。
考虑把式子的贡献拆成 maxmin。然后维护 max 的话就从小到大考虑每个点,把他的访问过的儿子的贡献算进去。min 同理。

AGC002D *2514

首先两点间最大值最小这个很容易想到重构树。
把边的编号当边权建出重构树,查一下最高能跑到的点即可。

CF1637F *2500

首先,所有塔必然在叶子节点。
然后以 h 值最大的为根,这样必然是从两棵子树里挑塔。
然后直接 dp 就行。

CF1310D *2300

考虑给每个点随机染色。然后跑一遍 dpi,j 表示走了 i 个点到 j 的最短距离。
然后你发现重复上述过程一定次数出错的概率就非常小了。

ABC219G *2287

很妙阿,完全想不到。
对每个点的度进行根号分治。
若度数 <B 那么暴力修改。
若度数 >B 那么对这个点打个标记并记一下时间戳,在之后进行覆盖。

CF338E *2600

bi=hbi,那么条件变成 aibj 就能匹配。
考虑开一个 w 数组。对于一段区间,wai1wbi+1
那么这段区间满足要求的情况就是对于任意前缀和都不小于 0
离散化 + 线段树。

CF1717E *2200

推式子。

CF1715E *2400

dpi=disi+(ij)2
直接转移复杂度是 n2k 的,斜优一下就是 nk 的了。

posted @   dd_d  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示
主题色彩