摘要: 本来想按照日期写的,但是考炸了。 到考场,终于输入对了密码。 我天,怎么这个 Dev-c++ 是英文的。 这个补全括号在哪里调? 找了一会儿没找到这辈子也是有了。 先看 T1 直接秒。 完美开局,直接开 T2。 这不是水题吗,只有 \(m=2,2n-2,2n-1\) 的情况。 写。 怎么大样例过不了 阅读全文
posted @ 2025-12-06 15:39 huhangqi 阅读(19) 评论(0) 推荐(1)
摘要: 初赛 9.19 被CPP强行提早一天会学校,遂不爽。 被猫学长投喂了麻薯,拜谢猫学长%%%。 做了2020年真题,90.5pts,赢。 晚上整个寝室楼都只有OIer,为什么其它竞赛一个赛季那么短? 9.20 因为学校压根就没什么人,所以七点起来也是吃上了早饭。 早上本来是要写19年初赛的,但是早上刚 阅读全文
posted @ 2025-12-06 15:38 huhangqi 阅读(5) 评论(0) 推荐(0)
摘要: 定义 强联通分量:在有向图中任意两个节点连通的有向图(SCC) 点双连通分量:删除任意节点仍然连通(v-DCC) 边双连通分量:删除任意边仍然连通(e-DCC) 割点:删除这个点以后图的连通性会发生改变的点 桥:删除这条边后图的连通性会发生改变的边 Tarjan Tarjan 算法可以求出上面的所有 阅读全文
posted @ 2025-11-28 09:51 huhangqi 阅读(24) 评论(0) 推荐(0)
摘要: 常规莫队 莫队用来处理一系列离线问题,可以在较短时间内移动一步区间的操作可以使用莫队来解决。 时间复杂度 传统的莫队只需要解决区间上的问题,因此只包含左端点和右端点,一般是按照 \(\sqrt n\) 的块长,以 \(l\) 所在的块为第一关键字,以 \(r\) 为第二关键字。 这样在 \(O(1) 阅读全文
posted @ 2025-11-28 09:39 huhangqi 阅读(5) 评论(0) 推荐(0)
摘要: 洛谷 代码比较复杂,但是实际上所有操作难度其实都不是很高。 首先考虑操作 \(0\) 怎么做,不难发现我们其实就是需要把这个位置旁边且中间没有高度大于 \(h\) 的地方的高度都设置为 \(h\)。 那么就需要先找到修改的范围,然后进行区间修改。 显然可以使用线段树,在线段树上每个节点维护墙的高度, 阅读全文
posted @ 2026-01-01 13:10 huhangqi 阅读(6) 评论(0) 推荐(0)
摘要: 洛谷 题目要求我们求出至少有 \(k\) 个不同颜色的概率。 处理概率问题很容易想到 dp 处理,并且问题中的 \(n\) 很小,但是转移次数 \(t\) 很大,明显是一个矩阵乘法优化 dp 的问题。 那么方法有了就可以考虑转移式了。 如果按照常规的思路,以 \(dp_i\) 表示包含 \(i\) 阅读全文
posted @ 2025-12-07 13:09 huhangqi 阅读(9) 评论(0) 推荐(0)
摘要: 洛谷 首先进行分类讨论。 对于每个右上角的点,为了不让箭穿过箭靶,必须分配一只向下射的奶牛,即斜率为负数的奶牛。 右下角的点同理,只能选择斜率为正数的点。 对于左上角左下角,不管斜率为正还是负都可以射到。 那么无解条件明显就是斜率为正的和斜率为负的其中有一个不到 \(n\)。 但是我们的高度会受到射 阅读全文
posted @ 2025-12-07 13:07 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: 洛谷 看到 \(1\le N\le 40\) 甚至部分分 \(N\le 20\) 而且只有选和不选两种情况,这不是折半是什么? 那么直接考虑最板子的折半,前面一半从起点直接暴力搜索是否选择,得到最后的位置,另一半从终点往回走,最后统计是否有多少相等的数量即可。 但是分析一下时间复杂度,还是比较极限的 阅读全文
posted @ 2025-12-07 13:06 huhangqi 阅读(4) 评论(0) 推荐(0)
摘要: 洛谷 发现字母的范围比较小,但是也没有小多少,那么多半是需要对字母组合求解。 第一想法就是给计入的字母状压,确认是否相同。 但是字符串长度又太长了,并且不好优化,只能放弃。 那么该怎么组合? 我们发现影响两个字符串在选择这几个字符后的串是否相等需要看两点: 字符的数量 不同字符之间的位置关系 第一个 阅读全文
posted @ 2025-12-07 13:05 huhangqi 阅读(6) 评论(0) 推荐(0)
摘要: 洛谷 先考虑推导式子。 设我们选择的奶牛为 \(i\),选择的苹果是 \(j\)。 那么可以得到式子: \[|x_i-x_j|\le t_j-t_i \]直接拆掉绝对值,因为绝对值会取较大的值,所以不需要考虑二者大小关系的影响,然后即可推得两式: \[x_i+t_i\le t_j+x_j \]\[t 阅读全文
posted @ 2025-12-07 13:03 huhangqi 阅读(5) 评论(0) 推荐(0)
摘要: 洛谷 蒟蒻给一个时间复杂度较劣的线段树做法。 我们可以发现两个字符处理的结果和处理的顺序没有关系,那么我们可以先考虑将每一部分都尝试合成一个或没有字符,再进行合并。 那么我们其实可以考虑使用线段树直接维护每个区间内经过合成剩下了什么,即可判断是否正确。 代码: #include<bits/stdc+ 阅读全文
posted @ 2025-12-07 13:01 huhangqi 阅读(10) 评论(0) 推荐(0)
摘要: 洛谷 首先需要知道独立集是什么。 简单来讲独立集就是一个没有相邻的点的集合。 我们已经处理过比较多的独立集问题了。 比如常见的线性独立集。 代码: for(int i=1;i<=n;i++){ dp[i][0]=max(dp[i-1][1],dp[i-1][0]); dp[i][1]=dp[i-1] 阅读全文
posted @ 2025-12-07 13:00 huhangqi 阅读(8) 评论(0) 推荐(0)
摘要: 洛谷 提供一种在模拟赛上自己观察出来的方法。 由于树是递归定义的,并且每次加入一个值在这个子树中,左右儿子会调换,再将这个点加入左子树。因此我们每次加入一个节点,必须保证这个点未加入的左右子树的节点数量相等或者左子树未加入节点比右子树多一个。 这样的状态我们才可以做到选择完左右的节点。 以下我们称未 阅读全文
posted @ 2025-12-07 12:58 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: 洛谷 由于两个人都是绝对聪明的,所以每个人都只会做出最好的选择。 由于这个游戏在加完星门以后的情况已经确定了,所以开始时的树的形态以及开的星门就会直接导致游戏的胜负。 那么我们可以先处理出在根的胜负。 我们记录状态 \(dp_i\) 在 \(i\) 为 \(0\) 或者 \(1\),分别表示在这个点 阅读全文
posted @ 2025-12-07 12:57 huhangqi 阅读(6) 评论(0) 推荐(0)