
Uva解题报告
文章平均质量分 70
mr_zys
这个作者很懒,什么都没留下…
展开
-
UVa 10881 - Piotr's Ants - 水题
题目描述:lrj后白书第一章第五道例题题目分析:1)从宏观上看,蚂蚁碰撞并没有影响它们的爬行; 2) 蚂蚁的相对位置是不会变的。所以只需要处理初始状态和最后的状态即可。下面是代码:#include #include #include using namespace std;const int maxn = 10100;struct ant { int id; int原创 2013-12-18 22:13:34 · 870 阅读 · 0 评论 -
10034 - Freckles\\MST
模板题,可以用kruskal,也可以用最短路。#include#include#include#includeusing namespace std;const int maxn = 5555;int u[maxn],v[maxn],p[maxn];double map[105][2];struct node{ int id; double w;} r[原创 2013-04-19 19:52:34 · 536 阅读 · 0 评论 -
10167 - Birthday Cake//枚举
/*简单的枚举*/#include#includeusing namespace std;int a[4][2];int main(){ int N; while(scanf("%d",&N) && N) { for(int i = 0; i < 2*N; i++) { int x,y;原创 2013-04-18 18:08:23 · 504 阅读 · 0 评论 -
567 - Risk//bfs
因为没有权值,所以不用使用Floyd算法求最短路。直接用bfs做。。。#include#includeusing namespace std;const int maxn = 21;int G[maxn][maxn];int vis[maxn][maxn];struct node{ int level; int u;} q[maxn*maxn];int b原创 2013-04-18 20:10:50 · 554 阅读 · 0 评论 -
196 - Spreadsheet//dfs
/*连续两道题目的数据有问题,Ora。刚开死将这道题想简单了,直接模拟做的,额...*/#include#include#include#include#includeusing namespace std;const int maxn = 1001;const int Min = -100000000;int map[maxn][maxn];string s;strin原创 2013-04-18 01:37:49 · 605 阅读 · 0 评论 -
10305 - Ordering Tasks//拓扑排序
/* 小小的吐槽一下,数据有点问题,题目说的以n=0,m=0 结束。可是测试的数据应该是n=0,m!=0结束的,Orz, wa了多次*/#include#includeusing namespace std;const int maxn = 105;int G[maxn][maxn];int vis[maxn];int topo[maxn];int n,m,t;void原创 2013-04-17 14:40:57 · 648 阅读 · 0 评论 -
10596 - Morning Walk//欧拉回路
/*The describe is not clear*/#include#includeusing namespace std;const int maxn = 205;int degree[maxn];int f[maxn];int N,R;int find(int x){ if(x != f[x]) { f[x] = find(f[x]);原创 2013-04-17 11:43:42 · 529 阅读 · 0 评论 -
10397 - Connect the Campus
Problem EConnect the CampusInput: standard inputOutput: standard outputTime Limit: 2 secondsMany new buildings are under construction on the campus of the University of Waterloo. The univers原创 2013-04-25 01:20:32 · 546 阅读 · 0 评论 -
10129 - Play on Words//欧拉通路
/*判断一个有向图是否有欧拉路只需判断两个条件: 一、将有向图去掉方向,判断其是否连通; 二、然后特判:最多只能有两个点的出度和入度可以不一样,而且这两个点中其中的一个点的入度大出度一,另一个点出度大入度一。关于证明现在证不到啊,这就是平时学习的时候忽略的地方。见lrj薄白书P112页的结论吧。*/#include#includeusing namespace std;co原创 2013-04-13 20:31:32 · 514 阅读 · 0 评论 -
10054 - The Necklace//欧拉回路
/*判断有无欧拉回路 还是老样子: 先判断图是否连通,这道题是无向图,然后判断每个点的度,最后打印之*/#include#includeusing namespace std;const int maxn = 1005;int G[maxn][maxn];int degree[maxn];int f[maxn];int n;int find(int x){ i原创 2013-04-14 16:36:55 · 463 阅读 · 0 评论 -
10047 - The Monocycle//bfs
分析:不同于一般的bfs,每个点有四种状态,用思维数组vis[x][y][d][c]来表示遍历的信息。 刚开始时用下面的方法来bfs的: if( dx >= 0 && dx =0 && dy <N && map[dx][dy]) { if(!vis[dx][dy][i][color])原创 2013-04-12 20:04:16 · 585 阅读 · 0 评论 -
10004 - Bicoloring//bfs
分析:因为这道题只给了两种颜色,所以可以投机取巧的用bfs做,判断用木有两个结点的level相同。不过貌似就是这样做,有Four Color Map Theorem,所以给了四种颜色绝对是可以滴。那么就考虑三种颜色。现在木考虑到,谁能告诉我啊!(晚上回去想想吧,囧)下面是本题AC代码:#include#includeusing namespace std;const int maxn原创 2013-04-12 21:17:53 · 574 阅读 · 0 评论 -
10048 - Audiophobia\\Floyd
Problem B: Audiophobia Consider yourself lucky! Consider yourself lucky to be still breathing and having fun participating in this contest. But we apprehend that many of your descendants m原创 2013-04-21 20:39:38 · 696 阅读 · 0 评论 -
10801 - Lift Hopping//Bellman-Ford
题目描述:就是裸的最短路。但是在换乘电梯的时候要耗时60s,同时从i到j层可以有不同的地奥体达到。题目分析:就是在建图的时候注意一点,在Bellman-Ford的过程中改一下。下面是代码:#include #include #include using namespace std;const int INF = 1000000000;const int maxnn = 6;原创 2013-05-16 20:34:58 · 530 阅读 · 0 评论 -
10986 - Sending email//Bellman-Ford
题目分析:裸的最短路,但是结点有点多,用邻接矩阵会RE,用邻接链表存储图。然后就BallmanFord了。吐槽:首先没看数据一直RE,各种RE,然后输出的时候#和数字写反了,一直WA,囧!代码:#include#include#include#includeusing namespace std;const int INF = 2000000010;const int原创 2013-05-17 15:57:32 · 654 阅读 · 0 评论 -
UVa 11248 - Frequency Hopping - 最大流 - 最小割
题目描述:lrj厚白书第5章第6节第一道例题题目分析:建图求最大流,如果最大流大于c,那么直接输出possible;如果最大流小于c,那么就要改变属于最小割边的值。下面是代码:(水过,有时间在优化吧)#include #include #include #include #include using namespace std;const int maxn_v = 110原创 2013-12-18 15:45:05 · 1454 阅读 · 0 评论 -
Uva 11300 Spreading the Wealth - 模拟
题目描述:lrj厚白书第一章第三个例题题目分析:首先来模拟spreading。对于i,他只可能从他的左边得到xi-1枚金币,从他的右边得到xi+1枚金币,而最终的i只能拥有平均数的金币。将这写等式列出,就可以得到一个含有绝对值的多项式。这样就可以利用绝对值的集合意义得到这个多项式的取最小值的情况。注意:求c[i]时用递推,否则将会tle。下面是代码:#include #inc原创 2013-12-06 20:17:01 · 566 阅读 · 0 评论 -
Uva 11292 Dragon of Loowater - 水题
题目描述: lrj厚白书第一章第一道例题。题目分析:感觉有点像这样的一道题,给定两个有序的链表,用最短的时间将对这两个链表的元素进行排序。这里也像归并排序的“并”的步骤。囧!说了这么多,思路很简单。下面是代码:#include #include #include using namespace std;const int maxn = 20005;int dra[maxn]原创 2013-12-04 18:37:42 · 607 阅读 · 0 评论 -
Uva 1388 Graveyard - 水题
题目描述:lrj厚白书第一章第四到例题题目分析:如果插入点的个数是n的倍数,那么不需要移动这n个点。如果想要移动的距离最短,那么不难想象最多只需要要移动(n-1)个点。所以可以在这n个点中选取一个参照点,其它点的位置是相对于该参照点的。所以在没有加入m个点之前,这n个点都有一个相对与参照点的以为坐标pi,那么在插入m个点之后,这n个点会有确定的位置。然后在判断pi与这写位子的最短距离即可。原创 2013-12-11 22:36:33 · 1409 阅读 · 0 评论 -
Uva 11729 Commando War - 水题 - 贪心
题目描述:lrj厚白书第一章第二道例题题目分析:因为任务是可以并行的执行,所以直觉上是花费时间长的任务优先去部署。但是这到题目还给你交待任务的时间,所以容易让人想多了。不管有没有交待任务的时间,对于任务x和y,只可能有两种情况。x在y之前结束,和x在y之后结束。未交换x和y的位置时,完成时间为:B[x] + B[y] + J[y]交换h和y位置之后,完成时间为:B[y] + B原创 2013-12-04 19:07:01 · 930 阅读 · 0 评论 -
Uva 1401 - Remember the Word//TRie
这道题目主用递推做。 设一个单词W,由(w1,w2,···,wn)个字母组成,判断其有多少种单词的组合方法。 给定任意一个后缀(wi,wi+1,···,wn),想要判断有多少种组合方法,就要找到它的前缀。不妨设(wi,wi+1,···,wn)这个后缀的前缀为x,就要找到这个后缀有多少个前缀(这里所说的前缀是说的是单词)。不妨设d(i)表示从i到n这个后缀有多少种组合方法,设x为这个原创 2013-07-16 20:53:54 · 821 阅读 · 0 评论 -
10099 - The Tourist Guide//floyd
Problem DThe Tourist GuideInput: standard inputOutput: standard output Mr. G. works as a tourist guide. His current assignment is to take some tourists from one city to another. Some two-way原创 2013-05-13 19:53:17 · 622 阅读 · 0 评论 -
Uva 515 - King//差分约束
题目分析:这道题是一道裸地差分约束题,直接套模板。。。下面是代码:#include#include#includeusing namespace std;const int maxn = 210;const int INF = 100000000;int v[maxn],w[maxn],first[maxn],next[maxn];int d[maxn],t[maxn],e,原创 2013-05-27 19:31:57 · 857 阅读 · 0 评论 -
Uva 658 - It's not a Bug, it's a Feature!//最短路
It's not a Bug, it's a Feature! It is a curious fact that consumers buying a new software product generally do not expect the software to be bug-free. Can you imagine buying a car whose st原创 2013-05-12 16:17:31 · 1010 阅读 · 0 评论 -
Uva 558 - Wormholes//Bellman-Ford
分析:模板题,但是要理解题意。环不和强连通分支差不多吧,我写了一个基于强连通分支的代码,但是WA了。。。。下面是AC代码:#include#include#include#includeusing namespace std;const int INF = 100000000;const int maxn = 1005;vector G[maxn];int weight[m原创 2013-05-22 15:29:36 · 822 阅读 · 0 评论 -
Uva 10369 - Arctic Network//kruskal
Problem C: Arctic NetworkThe Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establ原创 2013-05-06 18:39:30 · 516 阅读 · 0 评论 -
128 - Software CRC//大数求余
题目很难理解,可是很简单,就是给定一个256进制的数,取余。下面是代码:#include#include#includeusing namespace std;const int q = 34943;const int d = 256;char m[1025];char ans[5];int main(){ while(gets(m)) {原创 2013-04-11 14:30:43 · 760 阅读 · 0 评论 -
UVa 784 - Maze Exploration//DFS
水题一道,直接DFS。下面是代码:#include#includechar map[35][85];//int vis[35][85];int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int h;void dfs(int x,int y){ for(int i=0;i<4;i++) { int dx=x+m原创 2013-03-28 11:20:30 · 537 阅读 · 0 评论 -
Uva 11111 - Generalized Matrioshkas//栈
这道题题目很长,想要弄清题意就得花点时间。当我第一次写完代码是发现,自己的代码连最后一个样例都过不了。囧!题目还有一个规定,如果n包含了j和k,那么j+k必须要小于n。如果没有这个规定的话,只需要开一个数组,分别从前和从后向中间匹配就ok了。 仔细观察,就会发现这道题就是括号匹配的加强版。 下面是代码: #include#include#include#include#d原创 2013-01-19 19:19:04 · 523 阅读 · 0 评论 -
Uva 112-Tree Summing//建树,遍历
这道题参考了大牛们的结题报告。很久没这样了。关键是这题很是坑人,输入有点困难。这道题不用建树,只需要判断叶子的位置就ok了。 刚开始一直在纠结如何处理输入的问题,看了下大牛的代码,很简短,但是看的我云里雾里的,似懂非懂的。 想到下午的观察发现,发现输入给的数字的顺序刚好是树的先序遍历。这样就可以往树的遍历上入手了。这里用c++的cin.clear()函数来处理输入的问题,在用递原创 2013-02-04 22:40:25 · 820 阅读 · 0 评论 -
Uva 540 Team Queue
这道题水过,直接开个二维数组,然后模拟Team Queue!这道题还可以改进一下,就是用数组模拟一个循环链表,不过貌似有点麻烦。 下面是代码: #include#include#define MAXN 5005int Q[MAXN][1005];int hash[1000000];int n,m,flag;int last=1003,num=1004;vo原创 2013-02-02 20:46:54 · 721 阅读 · 0 评论 -
uva 10050 - Hartals//水题
这道题有点水,直接上代码吧! #include#include#define MAXN 3700int hash[MAXN];int main(){ int n,m,d,h; scanf("%d",&n); while(n--) { int ans=0; scanf("%d",&d); scanf("%原创 2013-02-02 20:52:52 · 514 阅读 · 0 评论 -
Uva 442 - Matrix Chain Multiplication//栈
分析:刚写这道题的时候,就当作简单的栈的题写,但是有一点问题,就是矩阵相乘顺序一定。所以代码就写的老长。调试的时候也不断出错。总之,我太急了,还没在草稿纸上大号草稿就开始写代码。这样子,效率太低了。还有自己写代码的能力太弱了。 #include#include#define MAXN 28struct martix{ int row; int col;} Mart原创 2013-01-17 19:47:35 · 631 阅读 · 0 评论 -
Uva 10152 - ShellSort//排序,线性表
题目大意:从king Yertle邪恶王座下,趴出一个乌龟,(不过样例一king yertle的duke骑在了他的头上),这只乌龟只能怕到最上面去。就这样,问趴出的最少的乌龟。 分析:最开始我的想法很简单,但是是n的平方的复杂度,看了一下别人的想法,发现线性时间内搞定,但是为什么我的时间相对于别人来说还是很长呢? 下面是代码,想法很简单,但是不好想到,一般的做法就是用qs原创 2013-01-16 17:29:37 · 577 阅读 · 0 评论 -
Uva 101 - The Blocks Problem//简单模拟
分析:这道题蛮有意思的,虽然说很简单,但是可以当做练手吧,锻炼自己码代码的能力。注意:当a和b相等的时候,判定这个输入不合法,不做任何的操作。#include#include#define MAXN 26int blocks[MAXN][MAXN];int n,order[MAXN],position[MAXN];void init(){ memset(bloc原创 2013-01-16 17:27:00 · 380 阅读 · 0 评论 -
Uva 673 - Parentheses Balance//栈
这道题去年暑假写过的,但是现在却在这里悲催了很长时间,可见自己码代码的水平有好“高”!对自己无语了啊。这道题括号匹配不成功有三种可能1、多括号2、少括号3、不匹配。尼玛,这样一想首先就要判断字符串长度是不是偶数,不是偶数绝对不匹配。下面的代码没有想到是不是偶数(囧!):#include#include#includeusing namespace std;i原创 2013-01-16 22:17:28 · 1478 阅读 · 0 评论 -
Uva 133 - The Dole Queue//模拟,链表
这道题其实不难,就是输出要求高一点的,结果我却画蛇添足,导致代码很长,很杂乱,导致wa和pe。 题目分析:一看题就知道要开个数组,模拟一个ring,那就直接用数组模拟一个循环链表+删除。就ok了。理解错了output的有求导致wa了3次,pe2次。这里有个小小的陷阱:如果要删除的这个点刚好是另一个人有重新开始计数的点的话,那么就向前或者后移一位。下面是代码:#in原创 2013-01-16 17:28:38 · 722 阅读 · 0 评论 -
Uva 11234 - Expressions//数据结构,二叉树
刚开始写题是有点想当然,自己感觉很简单。可是在写代码的时候才发现自己的建树方法很难实现。所以就在想有没有更简单的建树方法。联想到之前刷的括号匹配的题,灵感就来了。orz,这道题关键就在如何建树。下面是代码: #include#include#include#include#include#define MAXN 10005using namespace std;str原创 2013-01-25 18:28:15 · 613 阅读 · 0 评论 -
Uva 572 - Oil Deposits//深搜,图
题目很简单,数据不大,直接深搜。#include#include#define MAXN 105int map[MAXN][MAXN];int n,m;void dfs(int i,int j){ if(!map[i][j]) return; map[i][j]=0; dfs(i+1,j); dfs(i-1,j); dfs(i-1,j原创 2013-01-25 18:31:37 · 455 阅读 · 0 评论 -
Uva 248 Tree//二叉树遍历,递归
这道题刚开始纠结于输入,还是题刷少了。囧!本来想用strchr函数和指针来操作的,但是在输入的时候很纠结,就放弃了。这是poj 2255的加强版,不用真正的建树后在遍历,直接模拟建树的过程就解决了。 下面是代码: #include#include#define MAXN 10010int ans,flag,n;int s1[MAXN],s2[MAXN];int fin原创 2013-02-07 23:14:00 · 390 阅读 · 0 评论