摘要: #include<bits/stdc++.h> //#include<iomanip> #define int long long #define fore(i, a, b) for( int i = (a); i <= (b); ++ i) #define repe(i, a, b) for( i 阅读全文
posted @ 2026-04-14 22:14 wmq2012 阅读(4) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2026-04-12 13:40 wmq2012 阅读(1) 评论(0) 推荐(0)
摘要: P3379,P2590, P3384 阅读全文
posted @ 2025-12-29 22:11 wmq2012 阅读(10) 评论(1) 推荐(0)
摘要: P3870 [TJOI2009] 开关 分块和线段树都可以, 我用的分块 修改 散块: 直接根据每一个位置的数该区块内的 \(1\) 个数 整块: 打上标记(标记两次等于没标记) 查询 散块: 加上每一个位置的数,注意每一个位置上实际上的数应该是它自己位置上的数在异或上所处块内的标记 整块: 有标记 阅读全文
posted @ 2025-12-27 17:01 wmq2012 阅读(11) 评论(0) 推荐(0)
摘要: 差分约束进阶 三步法求解差分约束 找不等式关系,确定是最短路还是最长路 将不等式转换为熟悉的式子建边 跑最长路或最短路 T712556 AT_abc216_g [ABC216G] 01Sequence 找到一个长度为 \(n\) 的 \(01\) 数列,是的满足 \(m\) 个条件 \(L_i\) 到 \(R_i 阅读全文
posted @ 2025-12-21 13:34 wmq2012 阅读(16) 评论(2) 推荐(0)
摘要: P1562 还是 N 皇后 暴力很简单, 无法通过本题, 但是从简单的暴力中可以发现 : 每列只能放一个 每行只能放一个 每条从左至右对角线只能放一个 每条从右至左对角线只能放一个 第一点, 每行的限制, 可以一行一行的考虑每行棋子的位置, 每行只放一个,就只用考虑后三个的限制 正解方法, 用 \( 阅读全文
posted @ 2025-12-12 22:20 wmq2012 阅读(11) 评论(0) 推荐(0)
摘要: 割点 割点:在一个无向图中,如果删除这个顶点,这个图就不再连通 和之前的割边类似 图可以看成一棵树上在连上一些边,分为原有的树边,和非树边 用 \(dfn\) 记录时间戳,当前点的访问时间 用 \(low\) 记录当前点可以回到的最小的点的编号 \(tarjan\) , 一个点去遍历他的出边 如果目 阅读全文
posted @ 2025-12-08 22:25 wmq2012 阅读(11) 评论(0) 推荐(0)
摘要: 割边(桥) 一条边是割边,是因为,一个点能回到的最小的点编号始终大于另一个点,所以这条边隔断之后,这个点就会不到上面了,因为无向图会建两条边,所以如果是同一条边的话,就不能更新能回到的最小点编号,所以可以把相同的边相邻编号,用异或 \(1\) 来判断是否可以更新 边双连通分量 把割边标记,按照定义, 阅读全文
posted @ 2025-12-02 21:44 wmq2012 阅读(14) 评论(0) 推荐(0)
摘要: P3871: 平衡树模板,每一次加入一个数,然后直接用排名求出中位数 P1503: 平衡树模板,将修复摧毁视为添加删除,答案是前驱后继的差\(+1\) P4145 开不了多少就会变成1,多出来的开根操作没有意义,直接分块暴力对每一个块开根,同时如果和等于区间长度,说明该区间已经全部为1,不在进行之后 阅读全文
posted @ 2025-10-23 09:36 wmq2012 阅读(4) 评论(0) 推荐(0)
摘要: dfs序基础1 给一棵有根树,这棵树由编号为 \(1\dots N\) 的 \(N\) 个结点组成。根结点的编号为 \(R\)。每个结点都有一个权值,结点 \(i\) 的权值为 \(v_i\)。 接下来有 \(M\) 组操作,操作分为两类: 1 a x,表示将结点 \(a\) 的权值增加 \(x\) 阅读全文
posted @ 2025-09-13 21:10 wmq2012 阅读(31) 评论(0) 推荐(0)