![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
建图
1
whoammiiiiii
这个作者很懒,什么都没留下…
展开
-
UVA 11324 (强连通+拓扑排序求DAG最长路)
题目链接题意:给你一张有向有环图。问一笔画能走的最长长度是多少。思路:先用强连通缩点,得到DAG,再用拓扑排序求DAG最长路的思想得出答案。注意缩点以后重新建图不能建自环鸭。const int N = 1100+100; //点数int n,m;int scc, top, tot;vector<int> G[N];vector<int> E[N];int low[N], dfn[N], belong[N],indeg[N],big[N],dp[N];原创 2020-10-12 20:06:54 · 197 阅读 · 0 评论 -
2017ccpc 秦皇岛 H - Prime Set
题目链接题意:有 n 个数 ai,如果 ai + aj 是一个质数的 (i != j),那么 (i, j) 是一个 pair。现在你可以选择最多 k 个 pair,问最多pair的并集最多有多少个数。n ≤ 3000, k ≤n*(n−1)/2, ai ≤1e6。正解:先不考虑 1 + 1 = 2 的情况,那么将奇数放在左边,偶数放在右边,跑二分图求出最大匹配,一开始两个两个消除。然后考虑把 1 加入的情况,那么 1 要不然自我消化,要不然和放在左边和一个偶数结合,那么把 1 一个一个加入并实时更新原创 2020-10-08 19:06:20 · 213 阅读 · 0 评论 -
牛客练习赛67 赛后复盘
比赛链接AA 签到,模拟题意:找出字符串(可能有空格)中所有的数,不能有前导0,“00000”输出0。#include <bits/stdc++.h>using namespace std;string s;int main() { ios::sync_with_stdio(false);cin.tie(0);cout.precision(10);cout << fixed;#ifdef LOCAL_DEFINE freopen("input.t原创 2020-08-15 00:42:12 · 120 阅读 · 0 评论 -
hdu 1811 Rank of Tetris(拓扑排序+并查集+各种情况考虑)
题目链接我的思路是先把边集存起来,如果有等号关系的那两个点就用并查集缩一下点,然后在对>和<关系的进行处理,就是在他们的父亲节点之间加边就行,比如a>b就加一条fa[a]到fa[b]的边,a<b就加一条fa[b]到fa[a]的边。因为conflict和uncertain同时存在的情况是输出conflict,所以我们先来看conflict的情况,首先第一步把等号关系的两个点用并查集缩点,然后处理大于号小于号关系的时候,先判断他们的父节点是不是同一个,如果是同一个那就conflict原创 2020-05-09 15:49:26 · 120 阅读 · 0 评论 -
hdu 3639 Hawk-and-Chicken(求被指(直接+间接)最多的点有哪些and值)
题目链接题意:n个人搞投票,m个关系a->b,表示a投票给b。a投票给b,b投票给c,表明a也投票给c。获得票数最多的那些人当老大,现在问你票数最多是多少,以及有哪些人。也就是求图中点被指(直接+间接)的最大值+集合。思路:强连通缩点,得到dag,然后反向建边,现在只要走入度为0的点就行了,因为入度为0肯定是最优的,如果你还有入度,那入度连接的那个点肯定走的至少比你多一个(本身...原创 2020-05-06 04:17:22 · 140 阅读 · 0 评论 -
hdu 4725 The Shortest Path in Nya Graph (加虚拟点建图+最短路)
我因为加了点变成一个2n个点,一开始dij没传入2n,没过,后来看了半天,原来是初始化时候没传入2*n,枯了。思路:把每一层也当做一个点,所以这样一共就有2n个点,假设x点在y层,我的思路y层的点标为(y+n),然后为x到(y+n-1)和(y+n+1) [ps:如果在[n+1,2n]范围内的话]加上一条权值为c的单向边,为(y+n)到x加上一条权值为0的单向边,当然我看别人做法有把每一层分成一...原创 2020-04-29 21:43:47 · 127 阅读 · 0 评论