摘要:
大致题意:输入一部字典,输入若干单词1、若某个单词能在字典中找到,则输出corret2、若某个单词能通过变换或删除或添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据输入的那部字典的字典序3、若某个单词无论操作与否都无法在字典中找得到,则输出空View Code #include<stdio.h>#include<string>#include<vector>#include<iostream>using namespace std;vector<string> vec;bool is_equal(string a, str 阅读全文
摘要:
大致题意:有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度给定各个要求的小木板的长度,及小木板的个数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 阅读全文