摘要:
POI #Year2010 #二分 #Dinic #欧拉回路 看到最小值,具有单调性,考虑二分 对于一个 \(mid\) 如果一条边两个方向都不能走,那么必然不合法 如果只有一个方向可走,那么变为有向边 否则为无向边 考虑有向图欧拉回路存在的充要条件,需要这个图中每个点的 \(indeg=outde 阅读全文
posted @ 2024-04-15 23:14
xiaruize
阅读(14)
评论(0)
推荐(0)
摘要:
网络流 #二分 #POI #Year2005 考虑二分答案,用 \(Dinic\) 来 \(check\) 具体来说,就是对每一个人限制流量,然后检查能不能把所有场全部流满 #include <bits/stdc++.h> using namespace std; #define int long 阅读全文
posted @ 2024-04-15 19:43
xiaruize
阅读(15)
评论(0)
推荐(0)
摘要:
POI #Year2006 #妙妙题 #贪心 考虑从下往上按照拓扑序分层,对于每一层,这一层最多可以选择 \(min(2m,cnt)\) 个 考虑这个上界是否可以达到,这是一定可以的,通过将在下面结束的路径向上,可以做到每个点都被经过 所以直接统计 // Author: xiaruize #ifnd 阅读全文
posted @ 2024-04-15 19:42
xiaruize
阅读(11)
评论(0)
推荐(0)
摘要:
POI #Year2006 #dp \(dp_{i,j}\) 表示考虑到第 \(i\) 个单词,当前行长度为 \(j\) 的最小代价 暴力转移是 \(\mathcal{O}(n^3)\) 的 然后观察到,其实合法的转移不能卡满,具体来说,有至少 \(\frac{1}{16}\) 的常数,因为 \(d 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(15)
评论(0)
推荐(0)
摘要:
二分 #单调队列 #bfs #POI #Year2006 具有单调性,二分 从上往下考虑每一行,对于每一列维护一个单调队列,考虑维护一个覆盖的区间,表示这一列的最近的圆的位置,然后就可以计算它的覆盖区间 用差分计算每个位置是否被覆盖,处理当前长度下每个点是否被覆盖 然后 \(bfs\) 即可 // 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(6)
评论(0)
推荐(0)
摘要:
费用流 #POI #Year2006 费用流模板题,暴力建图,限制一下流量 // Author: xiaruize #ifndef ONLINE_JUDGE #define debug(x) cerr << "On Line:" << __LINE__ << #x << "=" << x << en 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(9)
评论(0)
推荐(0)
摘要:
缩点 #dp #POI #Year2006 建反图, \(tarjan\) 缩点,在有向无环图上跑 \(topsort\),\(dp\) 计算方案数 超过 \(36500\) 的直接与 \(36501\) 取 \(min\) 就可以避免炸 \(long\ long\) 特判 最大方案数为从最后一个点 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(5)
评论(0)
推荐(0)
摘要:
POI #Year2006 #字符串 #妙妙题 #hash 结论 对于两个回文串,当且仅当两个串的最小循环节相同,这两个串拼起来是一个回文串 那么就可以用 \(kmp\) 维护,最短循环节的长度为 当 \(m\mod nxt_m=0\) 时为 \(m-nxt_m\) 否则为 \(m\) 然后 \(h 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(10)
评论(0)
推荐(0)
摘要:
POI #Year2006 #贪心 #暴力 如果将所有的列干掉,那么贪心的如果可以删除一列就优先删除一列 当左右列不可以删除时,考虑上下行先删除谁不好判断 考虑在操作之前先枚举上面删除多少行,这样在操作时就可以贪心的使得下面删掉的行尽可能少 也就是贪心先删除上面 // Author: xiaruiz 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(7)
评论(0)
推荐(0)
摘要:
最短路 #状压dp #滚动优化 #POI #Year2007 从前 \(k\) 个跑 \(dijksta\) ,对这 \(k\) 个点到达的状态状压 会 MLE ,考虑每次转移都只会增加一个状压下的 \(1\) ,按照 \(popcount\) 分组做滚动 // Author: xiaruize c 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(8)
评论(0)
推荐(0)
摘要:
POI #Year2007 #贪心 #树状数组 考虑每一对数的最小代价为,将当前的换到最近的下面 用树状数组记录中间有几个没有被消掉的 // Author: xiaruize const int N = 2e5 + 10; int n, m; int la[N]; struct BIT { int 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(10)
评论(0)
推荐(0)
摘要:
POI #Year2007 #并查集 #贪心 按高度从小到大按顺序考虑每个点,将同样高度的点按顺序全部合并完,然后再遍历这些同样大小的点,如果一个点为关键点且它的联通块中没有抽水机,那么这个位置联通块的最低位置放一个抽水机 可以证明这个贪心是最优的 // Author: xiaruize const 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(14)
评论(0)
推荐(0)
摘要:
进制 #背包dp #贪心 注意到呈倍数的性质,考虑按照倍数转换进制,贪心的选择小的按顺序选择 // Author: xiaruize const int INF = 0x3f3f3f3f3f3f3f3f; const int MOD = 1000000007; const int N = 2e5 + 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(11)
评论(0)
推荐(0)
摘要:
POI #Year2008 #贪心 #最大子矩形 #单调栈 先把所有的\(a_{i,j}>2k\) 的 \((i,j)\) 先标记,然后考虑不包含这些点的最大子矩形 如果这个子矩形的 \(sum>k\) 那么必然存在一个合法矩形,可以这样构造 如果当前行的 \(sum_x<k\) 那么删除 \(x\ 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(21)
评论(0)
推荐(1)
摘要:
Year2008 #POI #贪心 #数学 考虑枚举旋转了几次,维护一个前缀和,一个前缀和的 \(min\) ,目标为使和合法并使前缀 \(min\) 满足条件,这个代价就可以 \(\mathcal{O}(1)\) 计算 // Author: xiaruize const int INF = 0x3 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(8)
评论(0)
推荐(0)
摘要:
dp #POI #Year2008 倒着跑这个过程,发现为每次拓宽一个矩形,记录这个矩形的对角的坐标,当前的方向,可以得到 \(dp_{x_1,y_1,x_2,y_2,4}\) ,从同方向相邻的点,或者转向后经过一条边长的点转移过来,单次转移是 \(\mathcal{O}(1)\) 的 但是这个会 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(10)
评论(0)
推荐(0)
摘要:
哈希 #STL #POI #Year2008 对于每个串做 \(hash\) ,每次操作后只对被影响的等价类更新答案 // Author: xiaruize int n, l, m; char s[1005][105]; multiset<ull> st; ull hsh[1005]; int re 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(12)
评论(0)
推荐(0)
摘要:
POI #Year2008 #数学 #康拓展开 #逆元 如果是一个排列,根据康拓展开,答案为 \[\sum\limits_{i=1}^nsum_{i}\times (n-i)! \]其中 \[sum_{i}=\sum\limits_{j=i+1}^n[a_i>a_j] \]那么再加入了重复的数字之后 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(20)
评论(0)
推荐(0)
摘要:
POI #基环树 #贪心 #Year2008 一定是若干棵基环内向树,以下仅考虑一棵的情况 最小值直接从下往上选,然后环上的为环的 \(siz\) 的一半 最大值为 \(n\) 减去叶子个数,再特判环上剩下一个的情况 // Author: xiaruize const int N = 1e6 + 1 阅读全文
posted @ 2024-04-15 19:41
xiaruize
阅读(13)
评论(0)
推荐(0)
摘要:
构造 #POI 对每一行和每一列建一个点 对于每一个开关\((i,j)\) 从 \(i\) 行向 \(j\) 列建边 问题转化为选择一些边 使得每个点的度的奇偶性相同 分类讨论 如果存在环 那么只选择这个环就可以满足条件 暴搜 否则原图不 存在度数全为偶数的解 并且为一个森林 所以叶子节点必定选中 阅读全文
posted @ 2024-04-15 19:40
xiaruize
阅读(14)
评论(0)
推荐(0)
摘要:
Topcoder #区间dp 考虑 \(dp_{l,r,3}\) 表示当前考虑区间 \([l,r]\) ,上面一行全部 \(H\) 的最小代价,下面一行全部 \(H\) 的最小代价,上下都 \(H\) 的最小代价 转移考虑每次将两段拼起来,或者从现有的拓展一个 貌似有贪心做法,不太会喵~~~ // 阅读全文
posted @ 2024-04-15 19:40
xiaruize
阅读(12)
评论(0)
推荐(0)
摘要:
剪枝 #Topcoder 考虑爆搜,给这个加上最优性和可行性剪枝 具体来说,可行性判 \(3\times (cnt+possible)\geq 2n\) 最优性可以记录每个状态是否合法,对于有合法后继的,记录最大的 \(cur\),否则记录最多选几个数 // Author: xiaruize con 阅读全文
posted @ 2024-04-15 19:40
xiaruize
阅读(21)
评论(0)
推荐(0)
摘要:
Topcoder #搜索 经典套路,我们发现枚举第一行后剩余的其实是确定的 那么枚举并爆搜即可 时间复杂度是 \(3^k\) 因为列的限制 // Author: xiaruize const int N = 13 + 10; int n, m; bool s[N][N], bck[N][N]; in 阅读全文
posted @ 2024-04-15 19:40
xiaruize
阅读(17)
评论(0)
推荐(0)
摘要:
Topcoder #Floyd #状压dp Floyd 跑全源最短路,然后 \(dp_{msk,x}\) 表示在 \(msk\) 购物过,并且最后一次在 \(x\) 的最小完成时间,枚举一个转移即可,时间复杂度是 \(\mathcal{O}(n^3+2^kk\)) 的 // Author: xiar 阅读全文
posted @ 2024-04-15 19:40
xiaruize
阅读(20)
评论(0)
推荐(0)

浙公网安备 33010602011771号