10 2022 档案
摘要:Distance to the Path 思维 + 树链剖分 首先与树链剖分无关,先考虑如果只更新一个点的情况 因为更新一个点,它既能向根的方向更新,又能向子树方向更新,非常难维护,于是我们只考虑维护一个节点的子树结点的增值 设数组 为与 结点距离为 的 $j
阅读全文
摘要:Wish I Knew How to Sort 概率dp 设计一个 表示还需要进行 次有效移动的期望次数 何为有效移动?最后的数组是 在左边, 在右边 因此只有把两个在错误位置的交换,才算一次有效移动 因此计算出处于左边(本应该是 的位置)的 ,然
阅读全文
摘要:Factorial Divisibility 模拟 合....合成大西瓜? 枚举每个阶乘因子,提取公因式之后有很多散着的 ,然后判断能不能合成当前倍数 #include <iostream> #include <cstdio> #include <algorithm> #include <ve
阅读全文
摘要:Counting Arrays 素数 有歧义的数组很难求,但是没有歧义的数组很好求 要使 到第一个位置之前都不能被删掉,则 到 的所有数字和 的 gcd 不等于 满足这样的条件,代表包含其 到 的所有素数因数即可,因此设 到 $
阅读全文
摘要:Cactus Wall 其实按照题目的意思,就必须要有一条 # 的最短路,从最左边的一列到达最右边的一列,然后是只能是斜着走,并且要保证新添加的 # 最少,而且添加的地方,其上下左右都没有 # 带着这些约束跑一个多起点多终点的 就行,因为权值的增加只有 和
阅读全文
摘要:Good Subarrays (Easy Version) 双指针 显然 往右走一步的时候, 一定是在更远的地方 因此直接双指针求解答案即可 #include <iostream> #include <vector> using namespace std; typedef long
阅读全文
摘要:Equal Binary Subsequences 构造 赛中一直卡在 ,没看到这题 显然数字出现的次数为奇数的无解 考虑偶数的情况,可以将数字相邻两个组合在一起, 如果两个都是 或者 ,两个分到两边去就行了 如果两个是
阅读全文
摘要:Root M Leaper 模拟 先把能走的矩阵预处理出来,然后直接跑 要注意各种边界 #include <iostream> #include <cstdio> #include <array> #include <queue> using namespace std; #
阅读全文
摘要:鸽子的浮点运算 模拟 就跟着题意模拟就好了 先读入,然后转成二进制,截断成 位,然后转成十进制 ,最后计算,计算结果转成二进制截断成 位,然后输出 #include <iostream> #include <cstdio> #include <vector> #i
阅读全文
摘要:Largest Submatrix of All 1’s 单调栈 感觉很经典的题目,不知道为啥就没做出来 从第 行来说, 可以抽象成一个高度为 的山峰, 取决于在第 列,从第 行开始往上数,有多少个连续的 4 4 0 1 0 1 0 1
阅读全文
摘要:Sightseeing tour 网络流 - 最大流 考虑欧拉图,无向边:度数全为偶数,有向边:出度和入度相等 对于有向边来说,已经不可更改;对于无向边来说,可以更改其指向 因此这题最终就是想找一种合理的方案(调整无向边的方向),使得所有点的出度等于入度 首先要判断是否是一个连通图,还要判断,所有点
阅读全文
摘要:Mountain Walking 二分 + 最终要求的最低差 二分答案,枚举最低海拔,这样就有一个能够接受的海拔范围 根据这个范围,看看 能不能搜索到 #include <iostream> #include <cstdio> #inclu
阅读全文
摘要:Euclid's Game 博弈 很经典的博弈了 首先明确每个状态必然都对应着一个局面,先手必败 先手必胜 如果当前局面对于先手来说是能够选择的,也就是 ,对于一个最终局面 ,如果先手必败,此时先手可以把这个局面丢给对方,否则可以让局面变成 $b'
阅读全文