luogu5894 robots 题解分析 二分答案,设 \(check(x)\) 为能否在 \(x\) 的时间之内完成。 一个很显然的贪心策略就是,对于每个弱机器人,从 \(X_i\) 最小的开始,在不超时的前提下,尽可能拿走重量小于 \(X_i\) 且没有被拿走的玩具,优先选择体积最大的。而小机器人则用来收拾烂摊子,从 \(Y_i\) 最大的开始,在不超时的前提下,尽可能拿走能够拿走且没有被拿走的玩具,优先选择体积最 2022-07-25 题解 #贪心 #二分答案
夏令营的一些图论题 题解这篇文章收录了一些夏令营期间写的不是那么复杂的图论题目。 CF715B Complete The Graph 分析 注意到如果改权值为 \(0\) 的边,那么把它改成 \(1\) 一定收益最大。 于是乎用 Dijkstra 算法求出以 \(s\) 为起点,不含 \(0\) 边情况的最短路。 如果此时 \(dis(t) < L\),那么由于改边不会让这时候的最短路更大,所以一 2022-07-25 题解 #图论 #拓扑排序 #最近公共祖先 #最短路
luogu4678 全排列 题解分析 显然统计贡献。 题面有个描述不清楚的地方,“相似”的不一定是一个完整的“排列”,否则这题就没法做了。不过这个笔误也启发我们思考这个东西的本质,注意到 \(A\) 与 \(B\) 相似,当且仅当对于任意 \(i\),\(A_i\) 在 \(A\) 中的相对大小与 \(B_i\) 在 \(B\) 中的相对大小相同。 说人话就是,\(A\) 与 \(B\) 离散化后是相同的。 那么最终答案 2022-07-25 题解 #DP #组合数学
SDSC2022 游记Day 0 坐车去日照。 和来自烟台的 ZYC 交换了名额,来到了高级算法班。 晚上不让出去,等着派送晚餐。和来自烟台的选手们分到一个宿舍,不得不感慨自己实在是太弱了,orz。 看了一些课件,贪心啥的。 天气并不好就是了。 Day 1 上午去高级算法班上课,讲师是 hywn。 分块数据结构、数论分块、莫队啥都不会,全程掉线 qwq。课后与朋友交流发现这个夏令营貌似不是让我们去 2022-07-25 游记 #2022的暑假
「Codeforces Round」#806 (Div 4)CF1703. 自从前几天开始,我就一直用 #define int long long 了。 A. YES or YES? 分析 直接判断即可。 CODE #include<bits/stdc++.h> using namespace std; #define int long long int t; int read() { int a=0, f=1; ch 2022-07-13 题解 #构造 #Codeforces #贪心
ABC259G Grid Card Game 题解分析 既然可以不选择任何一行和任何一列,那么最大收益的最小值为 \(0\)。 设 \(r_i = \sum_{j=1}^m a_{i,j}\),\(c_{j} = \sum_{i=1}^n a_{i,j}\)。如果 \(r_i <0\) 或者 \(c_j < 0\),那么选择 \(i\) 行或 \(j\) 列一定不优,可以直接无视。 选择 \(i\) 行 \(j\) 列的收 2022-07-13 题解 #图论 #网络流 #最小割
「网络流 24 题」#1网络流 24 题,很多都是与二分图相关,「能用网络流算法求解」的题目,所以下文叙述时会更多地讨论题目的本质。 只能说,24 题毕竟也仅仅是比板子要复杂一些,就将就着看个乐呵吧。 luogu2756 飞行员配对方案问题 分析 显然,将英国飞行员和外籍飞行员分别作为二分图的左右节点,一个英国飞行员只能和一个外籍飞行员配合,满足「每个集合内部有 \(0\) 条边」的 0 要素和「每个点最多与 2022-07-11 题解 #图论 #网络流 #最小割 #最大流 #二分图 #费用流
CF1542D Priority Queue分析 大佬们都说是显然题,套路题,可是我一开始连这是个 DP 都想不到qwq。 状态数量太多,要求的值是所有状态的和,那么可以尝试统计贡献。 \(b\) 是 \(a\) 的子序列,说白了就是,对于每一个操作,都能选,或者不选。那么可以对于每一个元素计算能够让它保留到最后的方案数,从而统计贡献。 设 \(f(i,j)\) 为在当前基准的一个下标 \(p\) 之下,考虑了前 \(i\) 个 2022-07-09 题解 #DP
CF1540B Tree Array 题解分析 逆序对是由两个元素构成的,所以对于逆序对的期望个数,可以看作是每一个数对能够成为逆序对的期望的和。 直接做很不可做,而每个逆序对只与两个数有关,一般这时候就要考虑计算贡献了。 由于是在树上操作,而所有操作都要跟在第一次标记后面,且根是不固定的,所以可以枚举每一个点作为根的情况,求出所有情况的和之后再乘 \(\frac{1}{n}\) 就好了。 考虑 \((i,j)\),其中 \(i 2022-07-09 题解 #DP #概率论
「Edu Codeforces Round」#131 (Div.2)CF1701. A. Grass Field 分析 有 \(0\) 个草地,答案为 \(0\)。 有 \(1 \sim 3\) 个草地,答案为 \(1\)。 有 \(4\) 个草地,答案为 \(2\)。 CODE #include<bits/stdc++.h> using namespace std; #define ll long long int t, a[5][5] 2022-07-09 题解 #构造 #Codeforces #贪心 #二分答案