摘要: 有向图:点无容量不用说,点有容量拆点。无向图: 点无容量:正反边都有容量。 点有容量:拆点,一个代表出点,一个代表入点,入到出有点容量,出点连其他点入点。以上是基本构图。最大匹配 = 最小点覆盖 = 所有定点数 - 最大独立集 || 最小边覆盖最小路径覆盖 = 原图点数 - 新图最大匹配(最小路径覆盖要拆点做)以下转自http://tieba.baidu.com/p/2430347466n支球队打循环赛,每两个队赛一场,胜+2分,平+1分,负+0分,已知一些比赛的胜负,问球队1是否可能获胜?cfgbdnm:对于每场比... 阅读全文
posted @ 2013-07-02 13:14 hsuppr 阅读(372) 评论(4) 推荐(2) 编辑
摘要: 在一维中常见三种优化: 1.优化 固定位置~a[i], a是一个递增序列,用一个变量维护即可。 2.优化 c[i]~d[i], c和d都是递增序列,用单调队列可以优化。 3.优化 没有规律的一段,可能用线段树,树状数组优化。在二维中也可能在某一维利用到上面三种优化。斜率优化: 上面三种优化时,我们可以发现它们的转移方程没有与目标状态有非加减关系的。 对于两个状态可以用类似(y[j] - y[k])/(x[j] - x[k]) <= i 的式子比较出最优决策。 我们可以发现可以转化成一个平面上两点的斜率。 对于不同的题目可以分别检测上凸与下凸,从而得出维护上凸或下凸(就是一个凸要弹... 阅读全文
posted @ 2013-07-02 09:17 hsuppr 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1. 格式控制符格式输出printf 作用是向终端输出若干个类型任意的数据。格式:printf (格式控制符,输出列表)1) 格式控制符l % 格式说明引导符。l - 指定左对齐输出。l 0 指定空位填零。l m.n 指定输出域宽度及精度m表示数据最小宽度,如果实际数据宽度>m,按实际数据宽度输出,如果实际数据宽度<m,左边补空格。n对于实数来讲表示n位小数,对于字符串来讲,表示截取的字符个数l l,h 输出长度的修正l对整型指定长整型long例:%ld , %lx , %lo , %lul对实型指定双精度double例:%lfh 只用于整型的格式字符修正为short例:%hd , 阅读全文
posted @ 2013-06-22 21:56 hsuppr 阅读(2264) 评论(0) 推荐(0) 编辑
摘要: 第一次做TC。。。只做上了2道题(是我太菜了吗?)还行ranting一下子就成1500+了。Div2 p1 BlackAndWhiteSolitaireint BlackAndWhiteSolitaire::minimumTurns(string cardFront) { int i, n = cardFront.size(), ret = 0; for (i = 0; i < n; ++i) if (1 & i) ret += cardFront[i] == 'W'; else ret += cardFront[i] == 'B'; return 阅读全文
posted @ 2013-06-05 11:48 hsuppr 阅读(215) 评论(0) 推荐(0) 编辑
摘要: A. Ilya and Bank Account 水题B. Ilya and Queries 水,维护区间和C. Ilya and Matrix贪心。大的明显会被多次取。/** * Problem:313C * Author:Shun Yao * Time:2013.5.31 * Result:Accepted * Memo:greedy */#include <cstdio>#include <algorithm>#include <functional>const long MaxN = 2000001;long n, N, a[MaxN];long l 阅读全文
posted @ 2013-06-05 11:36 hsuppr 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 首先抽象一个超级源点S,他向所有源点都有一条有向边。然后就是建立一棵树,使得这棵树满足对于每个节点,在有向可拓扑图中说删掉他而使得源点不可达的节点都是以他为根的这棵子树中的节点。建立这棵树的做法就是先将原图拓扑排序一次,然后按照拓扑序依次处理每个点,由于拓扑序的原因,每当处理到一个点,当前点的父节点一定在当前已建的树上,然后当前点的所有食物在这棵树上的最近公共祖先就是当前点的父节点。/** * Problem:catas * Author:Shun Yao * Time:2013.6.3 * Result:Accepted * Memo:graphs */#include <cstrin 阅读全文
posted @ 2013-06-03 15:34 hsuppr 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 看懂题意就好了。就是相邻的城市连边,然后求图的直径。/** * Problem:Journey * Author:Shun Yao * Time:2013.6.3 * Result:Accepted */#include <cstring>#include <cstdio>#include <algorithm>const long Maxn = 200005;long abs(long x) { return x < 0 ? -x : x;}long max(long x, long y) { return x > y ? x : y;}lon 阅读全文
posted @ 2013-06-03 15:28 hsuppr 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 好题,看出来实际是个堆的种数,忘了组合数。。/** * Problem:Magic * Author:Shun Yao * Time:2013.6.2 * Result:Accepted * Memo:DP, Math */#include <cstdio>#include <cmath>const long Maxn = 1000005;long min(long x, long y) { return x < y ? x : y;}long n;long long p, f[Maxn], d[Maxn], jc[Maxn];void exgcd(long lo 阅读全文
posted @ 2013-06-03 15:22 hsuppr 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 一眼数位dp,但。。。调试了好久。。/** * Problem:Count * Author:Shun Yao * Time:2013.5.31 * Result:Accepted * Memo:DP */#include <cstdio>#include <cstring>long long ans[10], s[15], tmp[10], f[15][10][10];void calc(long long b, char y) { long i, j, l, t, k; long long q; if (b == 0) { if (y) ++ans[0]; else 阅读全文
posted @ 2013-06-03 15:10 hsuppr 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一眼二分图,匈牙利上。/** * Problem:Holiday * Author:Shun Yao * Time:2013.5.31 * Result:Accepted * Memo:matching */#include <cstring>#include <cstdio>#include <cmath>const long Maxt = 55, Maxm = 2505;long n, wt, used[Maxt];char vis[Maxt], a[Maxt], c[Maxt];long tot;class gnode {public: long v; 阅读全文
posted @ 2013-06-03 15:09 hsuppr 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 恶心啊,居然找规律。/** * Problem:function * Author:Shun Yao * Time:2103.5.31 * Result:Accepted */#include <cstdio>long min(long x, long y) { return x < y ? x : y;}int main() { long n, k; freopen("function.in", "r", stdin); freopen("function.out", "w", stdout); 阅读全文
posted @ 2013-06-03 15:07 hsuppr 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 看题时像一个独立集的题,看了数据之后。。。。主要在于:每个骑士都有且仅有一个自己最厌恶的骑士。所以整个图是多个联通块,每联通块都是一个环和一些树。先在树上做dp,可以枚举环上两点,分别不取。也可以写个环dp。(我写的是环dp)/** * Problem:[ZJOI2008]p5 * Author:Shun Yao * Time:2013.5.30 * Result:Accepted * Memo:DP */#include <cstring>#include <cstdio>const long Maxn = 1000005;long long max(long lon 阅读全文
posted @ 2013-06-03 15:03 hsuppr 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 用每条相邻两点所构成的直线维护一个下凸。主要注意凸包的点与地面的高度差,地面的拐点与凸包的高度差。/** * Problem:[JLOI2013]Tower * Author:Shun Yao * Time:2013.5.30 * Result:Accepted */#include <cstring>#include <cstdlib>#include <cstdio>#include <algorithm>const long Maxn = 305;double abs(double x) { return x < 0 ? -x : x 阅读全文
posted @ 2013-06-03 14:56 hsuppr 阅读(311) 评论(0) 推荐(0) 编辑
摘要: dp,f[i][j][k][l]表示前i个人,j个男生,后缀中男生比女生最多多k人,最少少l人的方案数。/** * Problem:Party * Author:Shun Yao * Time:2013.5.30 * Result:Accepted * Memo:DP */#include <cstring>#include <cstdlib>#include <cstdio>long min(long x, long y) { return x < y ? x : y;}long max(long x, long y) { return x > 阅读全文
posted @ 2013-06-03 14:50 hsuppr 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 贪心, 最强/最弱的能赢就打,否则自己最弱的打对手最强的。/** * Problem:BNB * Author:Shun Yao * Time:2013.5.30 * Result:Accepted * Memo:greedy */#include <cstdio>#include <algorithm>long n, x[100000], y[100000];long solve(long A[], long B[]) { static long ret, i, j, k, l; ret = i = j = 0; k = l = n - 1; while (i < 阅读全文
posted @ 2013-06-03 14:45 hsuppr 阅读(181) 评论(0) 推荐(0) 编辑