07 2012 档案
摘要:大致题意:有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度给定各个要求的小木板的长度,及小木板的个数n,求最小费用以3 8 5 8为例,一共3个木板,长为8 5 8,先取5 8,为13,在取8 13,为21,两次取的和为34.STL优先队列:Memory: 1000KTime: 32MSLanguage: G++Result: AcceptedView Code #include<stdio.h>#include<queue>using namespace std;#define llong long longp
阅读全文
摘要:题目大意:给你一个数字串,最大长度80,然后计算里面每个数字出现的次数,按照从小到大的顺序排列成另一个数字串。比如5553141变化后是2113 14 35(2个1,1个3,1个4,3个5)。如果1次变化后,数字串没变,那么输出“n is self-inventorying”其中,n代表题目给你的那个字符串。比如31123314 按照规则变化后还是31123314,所以输出“31123314 is self-inventorying ”。如果 J次变化后,字符串变成了一个self-inventorying 那么输出“n is self-inventorying after j steps”其中
阅读全文
摘要:View Code #include<stdio.h>#include<string.h>#include<limits.h>const int INF = INT_MAX;int que[10000000];int mem[10000000];int main(){ int f, s, g, u, d; while(scanf("%d %d %d %d %d", &f, &s, &g, &u, &d) != EOF) { int *fr = que, *ta = que; for(int i =
阅读全文
摘要:解题报告参考《图论算法理论、实现及应用》 P390View Code #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int MAXN = 1000 + 10;int Edge[MAXN][MAXN];int visited[MAXN];int dfn[MAXN];int low[MAXN];int subnets[MAXN];int nodes; //顶点数目。int tmpdfn; //在dfs过程中记录当前的深度优先搜索序数。int son;
阅读全文
摘要:本文是从Why programmers work at night这篇文章翻译而来。一种很流行的说法是,程序员是把咖啡因转化成程序代码的机器。说的是实情,随便问一个程序员,问他什么时候工作最有状态,估计他很有可能说是深夜。有人稍微早一点,有人更晚。有一种流行的趋势是凌晨4点起床,在破晓之前这段时间里做一些事情。而另一些人喜欢凌晨4点才睡觉。所有这些的主要目的是躲避打搅。但是你把自己反锁在屋里不就行了?为什么对夜晚情有独钟?我想,这事归纳下来有3点:工人的时间表,疲倦的大脑和明亮的电脑屏幕。工人的时间表Paul Graham在2009年写了一篇关于工人的时间表的文章——主要是说这个世界(主要)存
阅读全文
摘要:裸的Targan算法,参考《图论算法理论、实现及应用》主编:王桂平 北大出版社 P387 仔细看,多看两遍,理解透彻。View Code #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int MAXN = 100 + 10;int Edge[MAXN][MAXN];int visited[MAXN];int dfn[MAXN];int low[MAXN];int subnets[MAXN];int nodes; //顶点数目。int tmpdfn
阅读全文
摘要:二分图匹配,可以将其转化为二分图最小路径覆盖一个有向无环图的最小路径覆盖=总权-最大匹配数建图的时候,可以把每个点拆成两个点,如果一个盒子可以放在另一个里面就在其间建立一条边,求出最大匹配,结果即为 n – 匹配数。裸题,直接套模板就行了,参考《图论算法理论、实现及应用》主编:王桂平 北大出版社。P358 里面讲的非常详细。View Code #include<stdio.h>#include<string.h>#define MAXN 500+10int g[MAXN][MAXN];int cx[MAXN], cy[MAXN];bool mk[MAXN];int n,
阅读全文
摘要:题意:给出一个数 n,代表有n个点,编号为1-n,接下来n行,每行若干个数字,读到0结束,以行号为起点,输入的数字为终点建一条有向边,求一种可能的拓扑排序。View Code #include<stdio.h>#include<stack>#include<string.h>using namespace std;const int MAXN = 100 + 10;struct node{ int to; struct node *next;};int nE;node Edge[MAXN * 2];node *head[MAXN];int count[MAX
阅读全文
摘要:解题报告参见《图论算法理论、实现及应用》 王桂平主编 北京大学出版社 P74。View Code #include<stdio.h>#include<iostream>#include<string.h>#include<string>using namespace std;const string end = "ENDOFINPUT";string cover[4][4]; //表示能覆盖(i,j)位置的窗口的集合。int mp[5][5]; //屏幕快照上最后显示的内容。bool g[10][10]; //邻接表。bool
阅读全文
摘要:题目描述:给你一个无向图,问你最少删掉几个点,使这个图成不连通。解题报告:概念(1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, 而去掉 K 个顶点后的图不连通则称 G 是连通的, K 称作图 G 的点连通度,记作 K(G) 试设计(2)相应地如果至少去掉 K 条边使这个图不连通,则 K 成为图的边连通度边连通度: 为每条边赋权值为1,然后求确定一点作为源点,枚举此点外的每个点作为汇点求最大流。 也可以用stoer_wagner算法求得无向图的最小割点连通度: 求一个给定的无向图的点连通度,可以转换为求边连通度,怎么转换就如下所示:
阅读全文
摘要:Description为了给集训队的训练环境带来点高雅的感觉 ~ 集训队的女队友们决定买些花来作为点缀,可是如果买真花的话会很快枯萎,所以她们决定定制一株假花,它们不会枯萎而且也很漂亮。每棵假花可以用一些点和边来表示,点表示花朵,边表示枝,点被标记为1到n,每棵假花有一个根,规定为1号,每一个点有一个可能不同的造价,每条边也可能不同,所以它们的造价也可能不同,每棵子树定价规定为(所有该子树上的节点的造价和)*(连接该子树与其父节点的边的造价和)。她们希望这株假花尽可能的大,但又想在保持花的节点数不变的情况下使用尽量小的花费,现在请你来编程帮忙解决这个问题。Input输入包含T组,首先给出T的值
阅读全文
摘要:题意: 给出一个地图,起点 s,终点 t,和一个数 x,求出s到 t的最短路,且经过的路的条数是 x 的倍数。View Code //哈理工OJ 1066. acm.hrbust.edu.cn//二维dijkstra #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define llong long longconst int MAXN = 105;const llong INF = -1ULL >> 1;llong n, m, s, t, x;
阅读全文
摘要:第一道最大流题。水题,裸题。Sample Input5 41 2 401 4 202 4 202 3 303 4 10Sample Output50输入m n, m是边数,n是点数。 接下来m行: 起点,终点,最大流量。求以 1 为源点, n为汇点的最大流。#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;const int INF = 0xfffffff;const int MAXN = 200 + 10;//邻接矩阵
阅读全文

浙公网安备 33010602011771号