随笔分类 - Acm
sicily的美丽传说
摘要:指派问题概述: 实际中,会遇到这样的问题,有n项不同的任务,需要n个人分别完成其中的1项,每个人完成任务的时间不一样。于是就有一个问题,如何分配任务使得花费时间最少。 通俗来讲,就是n*n矩阵中,选取n个元素,每行每列各有1个元素,使得和最小。 如下图: 指派问题性质: 指派问题的最优解有这样一个性
阅读全文
摘要:DescriptionThe number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5 #include #include #include #include using namespa
阅读全文
摘要:DescriptionWe wish to tile a grid 4 units high andNunits long with rectangles (dominoes) 2 units by one unit (in either orientation). For example, the figure shows the five different ways that a grid 4 units high and 2 units wide may be tiled.Write a program that takes as input the width,W, of the g
阅读全文
摘要:A:生成树B:未被访问过的点的集合pre[i]:生成树中i的前驱节点。A中的dis[i]:生成树中包含点i的边的长度。B中的dis[i]: i到A的最短距离vis[]:标记是否遍历过(是否属于A)Prim算法的思想1.任选一点,不妨选择第一个点,加入生成树A。2.遍历B,寻找一点u,使其到A的距离最小(就是A中也找了一点v)。添加u到A中(vis)。记录这条边及其权值(pre,dis)。3.更新与u相连的点的dis和pre4.循环直到遍历所有可达的点。View Code #include <iostream>#include <climits> using namesp
阅读全文
摘要:前几个星期落下的终于要开始一一补上啦~~这个寒假坚持把这本书看完!机考最后一道题就这么简单,无语,早知道先做这道好了。最简单的拓扑排序应用,判断一个有向图是不是无环的。标准的拓扑排序代码,《图论与应用》里代码风格不是很喜欢,所以还是觉得这个比较好看一点。View Code /* (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它. (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边. (3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.*/#include <iostream>#include <cstring>using namespace
阅读全文
摘要:View Code /*【题目来源】http://soj.me/show_problem.php?pid=1004&cid=567【题目分析】 与longth way 类似 这个好象就是传说中的六度人脉,你只要通过六度人脉就可以找到世界上的任何一个人。假设一个人一生会认识N个人,那N+N^1+N^2+N^3+N^4+N^5+N^6>=世界总人数。给定一些边确定一个图,即给定一些点之间的连通情况,求出各点到0的最短路径 【思路分析】 1.邻接表构图 2.以0为树根,层次遍历,求出其他各点的深度 即为所求 【小小心得】 刚开始还去用struct表示Node其实只用一个邻接表就行了 邻
阅读全文
摘要:View Code /* 【题目来源】http://soj.me/show_problem.php?pid=1003&cid=567【题目分析】给定一些边确定一个图,即给定一些点之间的连通情况,保证给定的图没有回路,要求输出该图存在的最长路径。 【思路分析】. 根据给定信息构造图,用邻接表表示。(邻接矩阵明显很麻烦且效率不高) . 将每一个顶点看成是树根,求出树的高度。. 得到一系列树的高度,最大的那个就是图中存在的最长路径。嗯对的。 【陷阱分析】.不应该被数据蒙骗,比如只给两条边但顶点不一定是1,2,3而有可能是1,99,100之类,所以数组开最大(题目范围1-100,所以开个105
阅读全文
摘要:/*【题目来源】http://soj.me/show_problem.php?pid=1005&cid=567【题目分析】 国际象棋棋盘上,给定起点和终点,求出马(knight --!)起点到终点 所需要走的步数【思路分析】 打表:构造一个64*64的表格 行和列都为a1,a2……h7,h8 (i,j)表示从点i到 点j所需要走的最小步数。注意这里的i,j均抽象为一个点,如(1,13) 表示 i = 1 j = 13 也就是 (a1,b5) 打表的复杂度较高。但打完表后,以后每输入一个测试数据,输出结果的时间复杂度都是O(1). 唯一要注意的地方是坐标的转换 0表示a1 8表示b1 …
阅读全文
摘要:1 /* 2 在一个n阶完全图的所有生成树的数量为n的n-2次方 3 所以这道题就是求n^(n-2) mod 10003 4 证明:http://blog.himdd.com/?p=979 (不懂) 5 */ 6 7 #include 8 using namespace std; 9 10 int main()11 {12 int m;13 14 cin >> m;15 16 while (m--)17 {18 long long n;19 20 cin >> n;21 2...
阅读全文

浙公网安备 33010602011771号