
【算法】拓扑排序
文章平均质量分 89
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ4011】【HNOI2015】落忆枫音
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005#define MAXM 200005#define P 1000000007int n, m, x, y, ans;int s[MAXM], t[MAXM], d[MAXN], f[MAX...原创 2018-03-07 14:47:45 · 266 阅读 · 0 评论 -
【POJ3648】Wedding
【题目链接】点击打开链接【思路要点】需要输出方案的 2−SAT2-SAT2−SAT 问题模板题。时间复杂度 O(N+M)O(N+M)O(N+M) 。【代码】#include<cstdio>#include<vector>#include<algorithm>#include<cstring>#include<...原创 2019-07-09 20:41:44 · 333 阅读 · 0 评论 -
【LOJ3119】「CTS2019」随机立方体
【题目链接】点击打开链接【思路要点】考虑如下计算方式:任选 kkk 个三维坐标互不相等的位置,规定它们的大小关系,则对于每一个位置,都有至多一个限制,要求该值小于另一位置的值,这样的关系形成了一棵树,可以通过计算树的拓扑排序数来得到这 kkk 个位置均为极大点的概率,记所有选法的概率和为 func(k)func(k)func(k) 。对于一个具有 iii 个极大点的方案,它会...原创 2019-05-30 13:24:50 · 272 阅读 · 0 评论 -
【LOJ3056】「HNOI2019」多边形
【题目链接】点击打开链接【思路要点】不难发现唯一的终止状态就是所有点均与 NNN 直接相连的状态。因此,使用最少的操作达到终止状态的方案一定是每次选择一个不与 NNN 直接相连,且与 NNN 连线只与一条边相交的节点,旋转对应的四边形。因此最少次数即为不与 NNN 直接相连的点的个数。考虑计算方案数,不难发现各个与 NNN 直接相连的点将多边形分成了若干块,每一块的方案数相...原创 2019-04-23 13:54:57 · 506 阅读 · 0 评论 -
【CodeForces】CodeForces Round #549 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 The Beatles【思路要点】任取一个合法的起始点,枚举所有可能的步长 lll ,计算步数 N×kgcd(Nk,l)\frac{N\times k}{gcd(Nk,l)}gcd(Nk,l)N×k ,取最优值即可。时间复杂度 O(NLogV)O(NLogV)O(NLogV) 。【代码】#incl...原创 2019-04-04 20:50:38 · 989 阅读 · 0 评论 -
【USACO】2018 December Contest, Platinum题解
**【T1】**Balance Beam【题目链接】点击打开链接【题解链接】点击打开链接【思路要点】考虑一个指数暴力,首先枚举每一个位置选择操作 111 还是操作 222 。记 EiE_iEi 表示从 iii 出发的期望收益。若在 iii 处选择操作 222 ,那么 Ei=AiE_i=A_iEi=Ai ,否则,令 iii 之前第一个选择操作 222 的点为 ...原创 2019-01-20 17:42:23 · 789 阅读 · 1 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 354 阅读 · 0 评论 -
【省内训练2018-09-13】Hamilton Path
【思路要点】 有一种朴素的 O(N∗M)O(N∗M)O(N*M) 的做法,首先枚举路径开始的位置,那么从这个点开始的每一个点必须只存在一个没有被访问的后继,因此我们可以在 O(M)O(M)O(M) 的时间内确定一个起始点出发是否有解,若有解,我们会找到一组唯一的解。 对于有哈密尔顿回路的数据,若我们先找到了一条哈密尔顿回路,那么对于一条非环边,它会使一个区间内的点无法作为起始点,...原创 2018-09-13 18:52:08 · 551 阅读 · 1 评论 -
【CodeForces】Manthan, Codefest 18 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Packets 【思路要点】 可以用 1,2,4,...,2i,N−2i+1+11,2,4,...,2i,N−2i+1+11,2,4,...,2^i,N-2^{i+1}+1 构造一组最优的可行方案。 其中 iii 为使得 N−2i+1+1&amp;gt;0N−2i+1...原创 2018-09-05 11:34:15 · 397 阅读 · 0 评论 -
【BZOJ4945】【UOJ317】【NOI2017】游戏
【题目链接】BZOJUOJ【思路要点】考虑若不存在“x”,那么剩余的问题就是一个2-SAT的基本问题。不妨令字符串中仅包含c,显然其他的问题是对称的。限制(x,A,y,A):连接(x,A)->(y,A),(y,B)->(x,B)。限制(x,A,y,B):连接(x,A)->(y,B),(y,A)->(x,B)。限制(x,A,y,C):连接(x,A)->(y,A),(x,...原创 2018-05-31 19:31:35 · 296 阅读 · 0 评论 -
【BZOJ4727】【POI2017】Turysta
【题目链接】点击打开链接【思路要点】所给的图是一张竞赛图。竞赛图满足性质:必定存在一条哈密尔顿路径。我们采取构造一条哈密尔顿路径的方式来证明这一点。首先,假设我们现在已经有了一条包含\(N\)个点的哈密尔顿路径,沿路径将节点标号为\(1,2,..,N\),我们在竞赛图中加入第\(N+1\)个点,并希望证明一定仍然可以构造一条包含全部\(N+1\)个点的哈密尔顿路径。如果存在边\(N+1\Right...原创 2018-03-17 17:29:30 · 458 阅读 · 1 评论 -
【CodeForces】CodeForces Round #460 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Supermarket【思路要点】选取单价最低的店进行购买。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void read(T &x) { ...原创 2018-02-13 16:20:14 · 498 阅读 · 0 评论 -
【BZOJ4010】【HNOI2015】菜肴制作
【题目链接】点击打开链接【思路要点】反向建边拓补排序就行。时间复杂度\(O(D*(N+M))\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int d[MAXN], n, m, now, tot, to;int home[MAXN], ans[MAXN], cnt[MAXN], colou...原创 2018-03-02 13:02:38 · 285 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 035 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 XOR Circle【思路要点】题目给出的要求等价于相邻的三个数异或和为 000 。特判全部 aia_iai 均为 000 的情况,这种情况是有解的。否则,如果确定 1,21,21,2 号位置为 a,ba,ba,b ,则 333 号位置一定为 a⊕ba\oplus ba⊕b , 444 号位置一定为 aa...原创 2019-08-04 18:25:14 · 547 阅读 · 2 评论