构造
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
HDU - 4700
题目链接:HDU - 4700显然如果原图合法,那么我们可以构建成一个树。即两点之间的所有边权最小值为两点之间的流量。即最大生成树。建完树之后check一下两点之间的最小值是否合法即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=110;int n,g原创 2020-08-30 15:16:53 · 141 阅读 · 0 评论 -
HDU - 5383
题目链接:HDU - 5383从两端向中间构造最短路径树。然后强制到每个点的距离。最后输出方案的时候,如果是在最短路径树上面的边直接用两点之间的差值输出。否则输出n。注意构建最短路径树的时候,每个点必须是能由已经构造完成的点转移而来。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;原创 2020-08-15 14:18:48 · 167 阅读 · 0 评论 -
Codeforces - 741C
题目链接:Codeforces - 741C如果能想到一定有解,那么就简单很多了。很容易会想到用2-SAT去做,但是是做不了的。我们对情侣连边,然后2i-1和2i连边,那么我们可以发现是满足条件的,并且肯定是二分图。所以直接染色即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;原创 2020-06-13 10:26:46 · 288 阅读 · 0 评论 -
Codeforces - Tolik and His Uncle
题目链接:Codeforces - Tolik and His Uncle先考虑一行的时候,怎么构造,肯定是先走到头,然后再回来,再过去。。。考虑n行的时候也是一样的,类似于中心对称去构造即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define ...原创 2020-02-23 13:59:20 · 176 阅读 · 0 评论 -
Codeforces - Serval and Parenthesis Sequence
题目链接:Codeforces - Serval and Parenthesis Sequence首先可以确定,如果长度为奇数必无解。其次,长度确定,那么左右括号个数也确定了。然后对于前面的问号,优先放 ‘(’ 即可,贪心地保证任意前缀不合法,但是总序列合法。最后扫一遍是否合法即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-l...原创 2020-02-22 16:17:53 · 187 阅读 · 1 评论 -
Codeforces - Maximum Diameter Graph
题目链接:Codeforces - Maximum Diameter Graph显然只需要构成一棵树是最优的。如果没有度为1的话,那么直接构成一条链即可。如果度为1的只有1个或者2个,还是可以把这度为1的节点放到叶子,构成一条链。否则有多个度不为1 的点。不管这个些点怎么放,因为边是固定的,所以总度数之和也是固定的,可以用来判断是否合法。如果合法就直接让度为1的点找空位放。(首尾优先)...原创 2020-02-20 10:11:55 · 160 阅读 · 0 评论