摘要:
[HAOI2007] 覆盖问题 题目描述 某人在山上种了 \(N\) 棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定 用 \(3\) 个 \(L \times L\) 的正方形塑料薄膜将小树遮起来。我们不妨将山建立一个 阅读全文
摘要:
史 T1 用SPFA/DIJ跑一遍,顺便标记下路径和权值,然后依次改边值遍历跑SPFA/DIJ即可 点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; const int N = 250000+10; 阅读全文
摘要:
Update2024.7.30 P2044 [NOI2012] 随机数生成器 唐题,但是需要龟速乘法 点击查看代码 #include <bits/stdc++.h> #define speed() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); 阅读全文
摘要:
https://csacademy.com/app/graph_editor/ 强连通分量(有向边) 常见题 建好有向图 找强连通分量,同时记录每个强连通分量中节点的个数 找节点个数最小的强连通分量 点击查看代码 struct Edge { int to,next; }edge[N]; void a 阅读全文
摘要:
差分约束总的有两种 因为有判环和负数,所以一般用SPFA 题目求最小值,则就是差的最大值,跑最长路,转换为\(s_i>=s_j+w\)即\(add(s_j,s_i,w)\) 题目求最大值,则就是差的最小值,跑最短路,转换为\(s_i<=s_j+w\)即\(add(s_j,s_i,w)\) 有时不等式 阅读全文
摘要:
D - Rudolf and the Ball Game 深搜+减枝 点击查看代码 #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1005; int T,n,m,x; bool ans 阅读全文
摘要:
货车运输 这题会有重边,又因为求的是尽可能大的边中的最小值,所以我们可以先用最大生成树维护,如何用最大生成树呢?可以用Kruskal和并查集,顺便处理重边,处理完重边后,可以用倍增LCA求两点之间的最大载重量 处理重边时,必须把dis在x,y相同情况下大的排在前,以保证最优,用并查集find判断是否 阅读全文
摘要:
题目描述 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了。不过,她经常回忆起以前在乡间漫步的情景。昔日,乡下有依次编号为1..n的n个小村庄,某些村庄之间有一些双向的土路。从每个村庄都恰好有一条路径到达村庄1(即比特堡)。并且,对于每个村庄, 阅读全文
摘要:
这题有两种做法,一种tarjan,一种逆天DP 用lower_bound或upper查找i所在范围的左右边界对应下标 普通Tarjan+缩点 #include<bits/stdc++.h> #define int long long using namespace std; const int N= 阅读全文
摘要:
# 矿场搭建(tarjan) Mining Your Own Business 矿场搭建测试点太水了,唉 红圈为割点,我们需要找点双连通分量,然后如果一个点双连通分量中有至少1个割点,如果割点大于1则不必建通道 所以只用分一个点双连通分量中割点数为1还是0 因为有序数对(1,2)和(2,1)为两种情 阅读全文