摘要:uvaLive4255:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=25&page=show_problem&problem=2256题意:对于一个序列,我们可以计算出一个...
阅读全文
摘要:poj3687:http://poj.org/problem?id=3687题意:有N个重量1到N的点,把这N个点涂色,要求在一定的约束下颜色a必须比颜色b要轻,如果有多种选择则让重量最小的对应编号1,然后剩下中重量最小的给编号2,一次类推题解:逆向建图,这样取出来的就是最后选择的点,并标上最大重量,把邻接点入度为0的加入到优先队列中,然后取编号最大的,为的是使得留着编号最小的给重量最大的 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 202; 7 int ed...
阅读全文
摘要:uva124:http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=60题意: 第一行给出字符串(小写字母),表示出现的字符类型第二行是约束关系,a1 b1 a2 b2 a3 b3.....ai bi,表示ai必须在bi前面按照字典序输出所有满足约束条件的序列题解:题解:由题意会想到用拓扑排序,但是题目要求是字典序输出,所以可以用dfs来处理。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inclu
阅读全文
摘要:poj1128:http://poj.org/problem?id=1128题意:一个二维图里面有几个相框(四条边的空心矩形框)。有重叠,求重叠顺序。还有题目保证至少存在一种符合要求的序列,当有多种情况时按字典序由小到大输出所有的情况。题解:建图然后+topsort+dfs ,建图很麻烦的,要细心处理。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include //stl迭代器 7 using namespace std; 8 char map[32][32];//记录原图 9 int g[27][...
阅读全文
摘要:poj2585:http://poj.org/problem?id=2585题解:如果i窗口挡在j窗口的前面,则在i,j之间建一条有向边,这样建图,建成有向图,然后就是判断是否有环,如果有环,就是否,否则就是yes。用一遍拓扑排序即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int map[5][5];//存储原来的图 7 int g[10][10];//储存窗口之间的边图 8 int counts[10];//记录每个点的入度 9 char str[30];10 //build是以...
阅读全文
摘要:poj1094:http://poj.org/problem?id=1094题解(一位大神的分析)一、当输入的字母全部都在前n个大写字母范围内时:(1)最终的图 可以排序: 在输入结束前如果能得到最终的图(就是用这n个字母作为顶点,一个都不能少);而且最终得到的图 无环; 只有唯一一个 无前驱(即入度为0)的结点,但允许其子图有多个无前驱的结点。在这步输出排序后,不再对后续输入进行操作(2)输出矛盾:在输入结束前如果最终图的子图有环, 在这步输出矛盾后,不再对后续输入进行操作(3)输出无法确认排序:这种情况必须全部关系输入后才能确定,其中又有2种可能 ①最终图的字母一个不缺,但是有多个 无前驱
阅读全文