拓扑排序
sunyutian1998
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Big Brush CodeForces - 1638D
http://codeforces.com/contest/1638/problem/D按题意着色则需要考虑先后次序问题,次序问题一般用拓扑解决。#include <bits/stdc++.h>using namespace std;const int maxn=1e3+10;struct node{ int x,y,c;};queue <node> que;node ans[maxn*maxn];int ary[maxn][maxn],book原创 2022-02-20 10:52:01 · 489 阅读 · 0 评论 -
Hash Function 牛客网多校
https://www.nowcoder.com/acm/contest/142/J这题竟然卡memset.. 一开始t了以为数组开小了 就往大了搞..首先是判矛盾 如果i位置上的一个数ary[i] 本来应该在ary[i]%n=j处 那j到i之间肯定不能有负数 前缀和判断一下如果暂时没矛盾 那就将从j到i-1的位置都向i连一条边 因为ary[i]这个数会出现在i这个位置就是因为j到i-...原创 2018-07-29 14:52:37 · 313 阅读 · 0 评论 -
Paint the Grid Again ZOJ - 3780
点击打开链接给一个白板 每一次可以把一行涂黑或者把一列涂白 逆向考虑的话 每涂完一次都会有一行全黑或者有一列全白 找出来更新当前状态 然后挑字典序最大的继续更新即可若最后能把每个空都更新一遍就是一张符合题意的图至于次数最少的问题 其实只要是一张存在正确着色方式的图 那么该涂多少次都是固定不变的 因为每一次只能把一行涂黑或者把一列涂白 而不是每一行每一列涂成黑白都行(一开始就是看错题了的...原创 2018-04-25 22:20:37 · 192 阅读 · 0 评论 -
Ponds HDU - 5438
点击打开链接无向图拓扑排序 和有向图拓扑在一些小细节上有些区别 可能会出现度数为负数的情况 最稳妥的方法就是在每个点拓扑入队列时标记 这样才能保证所有度为0或1的点都被删掉了#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e4+10;const in...原创 2018-04-11 09:00:28 · 339 阅读 · 0 评论 -
Rank of Tetris HDU - 1811
点击打开链接题目要求 当冲突和多解并存时 要判为冲突 所以不能发现多解就停止..#include <bits/stdc++.h>using namespace std;struct node1{ int u; int v; char ch[2];};struct node2{ int v; int next;};queue <int>...原创 2018-03-30 12:42:34 · 200 阅读 · 0 评论 -
Window Pains POJ - 2585
点击打开链接这道题主要是建图 看每个点会被哪几种数字覆盖 未出现的数字向出现的数字建边 然后就是裸题#include <cstdio>#include <queue>#include <vector>#include <cstring>#include <algorithm>using namespace std;...原创 2018-03-30 12:36:05 · 213 阅读 · 0 评论 -
逃生 HDU - 4857
点击打开链接反向考虑 这样才能解决"穷人在后"的问题反例:6 16 1#include <bits/stdc++.h>using namespace std;struct node1{ int v; int next;};struct node2{ bool friend operator < (node2 n1,node2 n2) ...原创 2018-03-23 14:56:48 · 279 阅读 · 0 评论 -
Trips CodeForces - 1037E
http://codeforces.com/contest/1037/problem/E逆向考虑 先拓扑把度数小于k的点入队列松驰其他点 最后剩下的点的数量就是最后一次查询的答案然后逆向枚举删边 还是拓扑 把度数小于k的点入队列 删完当前这条边后 有几个点度数变为小于k 答案就减几注意无向图拓扑时边要特判#include <bits/stdc++.h>using n...原创 2018-09-04 00:55:19 · 835 阅读 · 0 评论 -
等幂映射 51Nod - 1473
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1473每个点向外连一条边(包括自己) 问最少多少步使每个点同时回到每个点之前到过的点首先肯定有环存在 环内的点就像在跑圈 环外的点要先进入跑道才能开始跑圈 环内点为了等环外点只能一圈圈的跑 跑了一圈环外点没到环内 必须再跑一圈 #include <...原创 2018-10-16 14:28:07 · 286 阅读 · 0 评论 -
King's Rout Gym - 100792K
http://codeforces.com/gym/100792/problem/K在普通拓扑基础上要求字典序最小 被压在最底下的元素最难满足 所以逆向考虑#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;const int maxm=4e5+10;struct node1{ ...原创 2018-10-19 10:08:15 · 242 阅读 · 0 评论 -
Gourmet choice CodeForces - 1131D
codeforces.com/problemset/problem/1131/D先用并查集处理等号 通过大于小于号建图 拓扑判环 因为只把入度为0的点作为起点 所以拓扑可以顺带求出最长路#include <cstdio>#include <cstring>#include <algorithm>#include <queue>...原创 2019-03-09 12:25:34 · 246 阅读 · 0 评论 -
The more, The Better HDU - 1561
http://acm.hdu.edu.cn/showproblem.php?pid=1561先正向拓扑去掉无法到达的点 然后用剩下的点建一正一反两个图然后逆向拓扑 当某点因度数为0而入队列时 说明正向图中他的所有后继节点(即从该点进行BFS能到达的所有点)都已遍历 这和树型DP的思想一样 只不过这里需要考虑的拓扑序稍复杂一些这时可以想到利用01分组背包的思想 dp[i][j]代表从第i...原创 2019-04-16 22:17:48 · 333 阅读 · 0 评论 -
Welcome Party ZOJ - 4109
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4109不开心总人数即连通块数 每个块出一个编号最小的人 贪心考虑 与其相识的人可以下批入场 优先队列维护拓扑即可#include <cstdio>#include <cstring>#include <algorithm>...原创 2019-05-09 09:25:38 · 300 阅读 · 0 评论
分享