07 2022 档案
摘要:一、单目运算符 作用域解析 :: 后缀运算符、各类括号 (),[], ++, --, . ,-> 前缀运算符 ++ ,-- ,! ,~ ,- ,+ ,* ,& ,(type),sizeof 注:+ ,- 是正负号,(type) 是类型转换运算符。 二、双目运算符 乘除模 * , / , % 加减法
阅读全文
摘要:思路 先前缀和一遍,然后就转化成为了区间加,区间查询最值以及区间的最大子段和。 直接上线段树,维护的时候处理一下最大子段和就行了。 代码 #include<bits/stdc++.h> using namespace std;typedef long long ll;const int N=1e5+
阅读全文
摘要:思路 十分板,直接上线段树分裂就行了,加上一个并查集维护一下联通情况就行了。 代码 #include<bits/stdc++.h> using namespace std;typedef long long ll;const int N=1e5+10,P=1e7;char op[5]; int n,
阅读全文
摘要:思路 直接 dfs 一遍。 首先,一个子树内的点都是一遍 dfs 到的,那么直接差分一下,到达 的时候记录当前的 的个数,然后 dfs 完 的子树的时候,记录 的个数,相减即为 的答案。 代码 #include<bits/stdc++.h> usi
阅读全文
摘要:思路 一道很妙的反悔贪心题。 考场上打的是 的 ,其中 是 的种类数。 考虑贪心,先从大到小枚举 ,把相同的 一起处理。 当前可以白嫖的直接白嫖,如果不能再白嫖了,再看看如果前面白嫖了一个 ,当前的为 。 若
阅读全文
摘要:思路 模拟赛的题,有点板。 直接建出原图的 Kruscal 重构树,然后发现询问变成了一个子树内区间第 K 大。 直接转化到序列上然后主席树即可。 代码-P4197 Peaks #include<bits/stdc++.h> using namespace std;typedef long long
阅读全文
摘要:思路 很显然直接用最小割处理这种问题(列个方程解一下,注意两点中间的边要用正权,其他的边的权值可以任意变换)。 发现现在的问题是求最大的方案,于是我们把边权取相反数,就转化为最小割问题了。 然而现在有一个问题,就是边权是负数,不能跑最小割,所以把其他的边权加上一个值变成正数,最后减掉去,就可以了。
阅读全文
摘要:重要结论 一般图中,最大流最小割 对于不存在孤立点的图,最大匹配最小边覆盖; 一般图中,最大独立集最小顶点覆盖,最小顶点覆盖与最大独立集互补; 一般图中,负点向汇点连边,正点从源点连边,则新图中,最大权闭合图权值=正点
阅读全文
摘要:思路 这道题网络流建模十分妙妙。 首先从源点 连一条流量为 的边到 ,从 连一条流量为 的边到汇点 。 把答案当做这张图的最小割,如果加了一条限制 ,那么也就是如果割掉了两个点同侧的边就不用其他费用,否则要加上费用。 发现要加上费
阅读全文
摘要:思路 显然直接建图跑个最大流,答案就是总蜥蜴数减掉最大流。 但是由于有高度的限制,也就是每个地方只能被走一定数量,还要加一些限制。 所以把每个点拆成入点和出点,从入点向出点连一条流量为 的边。 再枚举出每个格子能跳到的其他格子,从当前格子的出点向其他能跳到的格子的入点连一条 $+
阅读全文
摘要:思路 这题的转化很妙,我看了一下题解才想明白。 首先显然往返不需要走一个环,直接原路返回可以达到最优,所以危桥至多只能走 次可以和往返直接抵消掉。 变成危桥最多只能走 次,不需要往返,只要过去就行了。 那么想到用网络流,从超级源 向 源点 连边,从汇点 $
阅读全文
摘要:思路 先考虑二维的怎么做,发现选了一列要填,那么肯定是这一列都填一遍,然后发现如果有一个点要被填,也就是这一列和这一行只要要填一个,建出二分图,直接跑个最小点覆盖(也就是选出最少的点使得每条边都至少有一个点被覆盖,数值上等于最大匹配)。 然后转化到三维上去,就是直接枚举一维的覆盖情况,然后转化到二维
阅读全文