图论
文章平均质量分 64
a1214034447
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #843 (Div. 2) A-E
Codeforces Round #843 (Div. 2)原创 2023-02-02 17:23:28 · 76 阅读 · 0 评论 -
Codeforces Round #800 (Div. 2) E. Keshi in Search of AmShZ
Codeforces Round #800 (Div. 2) E. Keshi in Search of AmShZ原创 2022-08-18 17:10:25 · 122 阅读 · 0 评论 -
Codeforces Round #599 (Div. 2) 题解
题目链接:https://codeforces.com/contest/1243A - Maximum Square水题不说了#include <bits/stdc++.h>using namespace std;const int mx = 1e5 + 50;typedef long long ll;int n; int a[mx];int main(...原创 2019-11-30 20:21:37 · 259 阅读 · 0 评论 -
The 2019 China Collegiate Programming Contest Harbin Site
题目链接:https://codeforces.com/gym/102394A - Artful Paintings设S[i]表示前i个位置放了i个灯泡,那么就有这么一些关系,0 <= S[i] - S[i-1] <= 1,S[Ri] - S[Li-1] >= Ki,S[n] - (S[Ri] - S[Li-1]) >= Ki由于第三个式子有三个未知数,又...原创 2019-11-07 16:04:22 · 442 阅读 · 0 评论 -
2018-2019 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2018)
题目链接:https://vjudge.net/contest/339284#overviewA.Numbers待做B.Broken Watchs = input()s = s.split(" ")A,B,C,N = list(map(int,s))n = (N-1) // 2 ret = N*N*N - 3*N*(n)*(n-1) - N - 3*N*(...原创 2019-11-06 22:53:13 · 830 阅读 · 0 评论 -
Comet OJ - Contest #2 A-E
题目链接:https://cometoj.com/contest/37/problemsA.因自过去而至的残响起舞对于爆炸型增长的数来说,增长到x只需要log级别就ok了,所以直接暴力就好了。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 1e5 +...原创 2019-04-29 12:34:18 · 264 阅读 · 0 评论 -
Gym - 101480J[判环+Hash]
题目链接:https://vjudge.net/problem/Gym-101480J解题思路:因为度最多为3所以流量最多不超过3对于在同一个连通块上:flow ==1对于在同一个环上(可以看做有向图强连通):flow == 2对于某一个点对,删除任意一条边他们还是在同一个环上,说明去掉一个流量他们的流量还是2,所以这种情况:flow == 3对于第三种情况可以枚举每...原创 2019-05-10 10:56:52 · 168 阅读 · 0 评论 -
Gym - 100851F[最短路+枚举]
题目链接:https://vjudge.net/problem/Gym-100851F解题思路:一个明显的结论就是石头肯定是放在两个石头或者河岸之间的,所以正向跑一遍最短路,反向跑一遍最短路,然后枚举i和j中间放石头就好了。由于相当于每个点都满边,所以只能去跑n^2最短路,不能用spfa了。#include<bits/stdc++.h>using namesp...原创 2019-05-16 21:19:25 · 207 阅读 · 0 评论 -
Codeforces Round #566 (Div. 2) A-E
题目链接:http://codeforces.com/contest/1182A. Filling Shapes每两列有2种方法,所以是2的n/2次方#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mod = 998244353;const int mx =...原创 2019-06-13 16:38:16 · 320 阅读 · 0 评论 -
Codeforces #564 (Div. 2) D. Nauuo and Circle[树形DP]
题目链接:http://codeforces.com/contest/1173/problem/D解题思路:首先得知道按照圆周顺序的话,那么一颗子树必须存放在连续的一段区间里面,现在我们假设根节点是1,那么一颗为u做根节点的子树他的方案数就是各个儿子的方案数的乘积最后再乘以儿子个数+1(u节点本身)的排列方案数。所以最后答案很明显是每个节点的度的阶乘的乘积,然后由于有n个点可以做...原创 2019-06-09 20:46:35 · 200 阅读 · 0 评论 -
牛客国庆集训派对Day6 J - LCA+生成树
题目链接:点击这里解题思路:因为边最多是点的+100,所以我们先生成一个生成树,然后剩下最多100个边.如果最小解不在生成树上面,那么最小解肯定会经过剩余100个边的某个端点,那么接下来把这剩下100个边的每个边拿去一个端点跑bfs(长度为1直接bfs)最短路,最后把生成树上面的最短路,和100个端点的最短路取最小就行了.#include<bits/stdc++.h...原创 2018-10-09 21:03:44 · 202 阅读 · 0 评论 -
牛客练习赛15 F - 压状Kruskal
题目链接:点击打开链接解题思路:大部分都在注释里,这个复杂度很玄学,应该是可以很强的测试数据,要不然我感觉要凉,感觉这个算法复杂度至少得O(n*(n-(2^(按位算1的个数))))#include<bits/stdc++.h>using namespace std;const int mx = 1e5 + 5e4;typedef long long ll;...原创 2018-04-14 21:37:27 · 223 阅读 · 1 评论 -
hdu 6311 - 欧拉路+欧拉路径
题目链接:点击这里解题思路:根据欧拉定理可得无向图需要几笔画完为各个连通块的∑max(1,连通块奇度点个数/2)。那么如果一个连通块是欧拉回路,也就是奇度点数为0,就可以直接求出他的路径。如果连通块的奇度点数不为0,那么将奇度点两个两个连一条虚边,留下两个点不连作为欧拉通路的起点和终点。那么连完虚边的连通块就形成了一条欧拉路径,那么原图的几条欧拉路径就是由这些虚边分隔开的...原创 2018-08-21 19:40:00 · 189 阅读 · 0 评论 -
洛谷 P2422-仙人掌图
题目链接:https://www.luogu.org/problemnew/show/P4244解题思路:不懂基环树的可以先做这个:https://blog.csdn.net/a1214034447/article/details/88318541对于仙人掌图可以看做基环树中环的节点为根的树还是个基环树的多个“嵌套”。所以做法是大同小异。但这里要求最小距离的最大,而且边长度都...原创 2019-03-07 20:09:40 · 862 阅读 · 0 评论 -
BZOJ 1791-基环树DP
题目链接:https://darkbzoj.cf/problem/1791解题思路:如果题目给的是一棵树,那么就跟简单了,直接搞个DP求出树上最长两点路径就OK了:dp[i]表示以i为子树的节点到i的最长距离。那么有ans = max(ans,dp[u]+dp[v]+1);dp[u] = max(dp[u],dp[v]+1);其中v是u的子节点。所以我们可以把这个基环...原创 2019-03-07 19:57:48 · 215 阅读 · 0 评论 -
POJ - 1201 - 差分约束
题目链接:https://vjudge.net/problem/POJ-1201 解题思路:差分约束设f[i+1]为0-i区间最少花费数,那么有f[b+1]-f[a]>=c[i],还有默认条件0<=f[i]-f[i-1]<=1.根据此三个条件建立图跑最短路即可.#include <iostream>#include <algorith...原创 2018-10-30 20:51:19 · 157 阅读 · 0 评论 -
hdu 1811 - 拓扑排序+并查集
解题思路:相等的要用并查集缩点,然后再拓扑排序一下就行。代码:#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define inf 0x3f3f3f3fconst int mx = 1e4+5,mod = 1e9+7原创 2017-08-14 19:21:33 · 246 阅读 · 0 评论 -
poj -1094-拓扑排序
题解思路:循环暴力每次的拓扑排序就行。代码:#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define inf 0x3f3f3f3fconst int mx = 26+5,mod = 1e9+7;int n,m,in原创 2017-08-14 19:23:52 · 248 阅读 · 0 评论 -
poj - 2337 - 有向欧拉回路
题解思路:因为要字典序最小所以要先排序一下,然后就套欧拉。代码:#include #include #include #include #include #include #include #include #include #include using namespace std;struct Edge{ int to,next; int原创 2017-08-14 19:26:03 · 226 阅读 · 0 评论 -
hdu 6166 - 二分+SPFA
题目链接:点击打开链接题解思路:把所有数转化为二进制那么肯定保证了至少有一位是不同的,10^5小于20位,那么枚举每一位将这位是0的加入一个集合1的加入另外一个集合,跑20次SPFA就行了,那就保证任意两对都会被分到不同集合过。代码:#include#include#include#include#include#include#define inf 0x3原创 2017-08-23 18:59:33 · 308 阅读 · 0 评论 -
hdu 5934-建图+强连通缩点
题目链接:点击打开链接 题解思路:这图咋一看就是图论,假设我引爆i点能使j点也引爆,那么就将i,j建立有向边。通过建立的图我们还要将强联通分量缩点,说明这个分量的任意一点引爆都能使其他点都引爆,这里缩点需要得到分量中花费最小的那个点,然后就是求缩完点的所有入度为0的点的和就是了。 代码: #include<bits/stdc++.h>using namesp...原创 2017-11-11 23:05:36 · 322 阅读 · 0 评论 -
CF #469E div2 - tarjan缩点求出度为0点
解题思路:这题很容易就想到了图论,就是两个相邻的点的值不能相同,换个想法就是a和(a+1)%h建立关系,求从一个点出发可以遍历的最小点数是多少,那么首先就是要将一个圈的点都缩为一个点,然后去求出度为0的点肯定是最小的,所以就是在出度为0里面的点去找最小的那个就行了。 #include<bits/stdc++.h>using namespace std;typedef...原创 2018-03-27 20:41:01 · 176 阅读 · 0 评论 -
Codeforces Round 982F
解题思路:tarjan只处理出现了两个强联通分量的问题,要是出现大于1个的分量就输出-1。其实这个问题可以看做是一个强连通分量里面的所以简单环是否存在至少一个公共交点。那么我们假设一个点满足条件就等价于从这个点出发肯定最后不会滞留在一个死循环中,而是最后回到了出发点.对所有路径都满足。如果这个点不满足,那么应该再去找哪个点呢?这个点滞留在死循环中,那么就说明它不属于这个环,所以接下来的那个点一定是...原创 2018-05-31 21:15:49 · 263 阅读 · 0 评论 -
dinic算法与网络流一点笔记
1.什么是网络流?在一个有向图上选择一个源点,一个汇点,每一条边上都有一个流量上限(以下称为容量),即经过这条边的流量不能超过这个上界,同时,除源点和汇点外,所有点的入流和出流都相等,而源点只有流出的流,汇点只有汇入的流。这样的图叫做网络流。就好比你家是汇点,自来水厂是源点.自来水厂通过许多的水管将水导入你家,水管的大小不一,所以口径不同最大流量(容量)也不同,虽然有的水管口径很大,但并不...原创 2018-07-11 19:59:28 · 290 阅读 · 1 评论 -
CodeM 2018-资格赛 F题
题目链接:点击打开链接#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <vector>#include <bitset>#include &原创 2018-07-14 17:30:44 · 153 阅读 · 0 评论 -
hdu 6446 - 任意两点路径和
题目链接:点击这里 解题思路:考虑u,v两个点路径对答案的贡献次数,因为是全排列,那么u,v可以放在1,2位置,2.3位置。。。有(n-1)个位置,在颠倒一下顺序就是(n-1)*2,然后其他n-2个点可以随意排,也就是(n-2)!,所以任意一条边的贡献次数就是2*(n-1)!所以问题就变为求任意两点的路径和,在这个问题上没条边的贡献就是用这条把树节点分为两个部分,那么这个边的贡献次...原创 2018-08-25 20:33:54 · 384 阅读 · 0 评论 -
hdu 6331 - 分块 + dp
题目链接:点击这里 解题思路:考虑从s走到u至少经过k条路的最少花费可以等价于:ans[k] = max(f[B][s][i]+F[A][i][u]) i∈[1,n],(A*100 + B = k)f[B][s][i]表示从s走到i刚好B步的最少花费,F[A][i][u]表示从i走到u至少A*100部的最少花费。这样就可以把问题变成100的规模来算了。那么最后两个相加就是走至少...原创 2018-08-04 20:46:26 · 157 阅读 · 0 评论 -
Gym - 101611G - 差分约束系统
题目链接:https://vjudge.net/problem/Gym-101611G 解题思路;解法一;判断列上横值相加是否为0和横上列值相加是否为0,如果全是则有解,否则无解,如果列上横值相加等于0,那么就说明可以把这一列的所有横值都变为0.假设一列的横值为x1,x2,x3....那么在此列的第一个行设置风力为-x1,那么第一个值就变为0,x2则需加上相反数也就是x1,...原创 2018-10-30 20:45:50 · 354 阅读 · 0 评论 -
hdu 6080-度度熊保护村庄
题目链接:点击打开链接题解思路:很难想到这是一题图论题。那么我们枚举度度熊和小伙伴任意两个ab组成一个线段看n个村庄是否都在他右边则将ab连接,如果在右边就连接ba,如果都在线段上就双向连接,然后用floyed求最小环。代码:#include#include#include#includeusing namespace std;typedef long lon原创 2017-08-11 18:16:08 · 602 阅读 · 0 评论