文章分类 -  acm_hdu解题报告

hdu 1242 Rescue(广搜)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242今天想找点能够不是水的题目,于是找了难度稍微可以的,于是就找到了这个题目;刚刚开始看到时,第一反应便是用广搜,但有句话说:and "r" stands for each of Angel's friend.让我有点犹豫,因为之前的全部是一个起点,一个终点的搜索,这次属于多个起点;于是,就想到了新的解决方案1,就是针对每个起点求出一个到达Angel的最小值,然后在最小值中,选择更小的值;于是动手便写,写到70%的时候突然想到一种极其方法,便是将Angel所在的地点设为 阅读全文
posted @ 2012-03-28 21:15 world_ding 阅读(262) 评论(0) 推荐(1)
hdu 2057 A+B Again(16进制相加)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057曾记得自己用最原始的想法写过一次,找了N久,没找到,想是没写对或者忘交了……再次接触时,发现有大牛曾这样做,让我感到鸭梨很大……代码如下:View Code #include<stdio.h>int main(){ __int64 a,b; while(scanf("%I64X%I64X",&a,&b)!=EOF) { printf(a+b<0?"-%I64X\n":"%I64X\n",a+b< 阅读全文
posted @ 2012-03-24 15:48 world_ding 阅读(1369) 评论(1) 推荐(0)
hdu 1016 Prime Ring Problem(深搜)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016好久没有做关于深搜和广搜 的题目了,于是昨天一不小心被问到,于是便只能说所用的方法,具体实现过程便不知如何进行了;于是回来之后便拾起之前的所学的东西,于是这便是第一个所攻下的题目:本题理解起来容易,代码简单,适合作为理解深搜的典型题目:说起深搜我的第一感觉便是用递归处理,广搜的第一反映便是用队列,果不其然,这题确实是通过递归处理的,详见代码:View Code #include<stdio.h>#include<string.h>int prime[50];int nu 阅读全文
posted @ 2012-03-21 17:30 world_ding 阅读(168) 评论(0) 推荐(0)
hdu 1593 find a way to escape(几何问题)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1593此题代码简单,但考的是发散性思维,所以一旦理解很迅速解决掉,一旦不理解就over了;此题有一个突破点,就是0068要找与elnil同角速度的同心圆,注意角速度与线速度的关系是:v=w*r;也就是说,在同心圆上,2人的角速度是一样的,而在同心圆内,0068的角速度一直大于elnil的角速度,所以0068可以与elnil在大圆的一条直径上并且使距离达到最大程度,但,一旦0068到达同心圆上,便以直线行走,以保证最快到岸,而此时elnil要走的距离依然是PI*R;所以以此判断谁先到达岸上;代码如下: 阅读全文
posted @ 2012-03-20 20:44 world_ding 阅读(287) 评论(0) 推荐(0)
hdu 2059 龟兔赛跑(DP)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059代码如下,dp问题,简单题,不解释:#include<stdio.h>#include<string.h>double sum[110];/////int num[110];////int L,N,C,Time,VR,V1,V2;double find(int Len){ double ans; if(Len>C) ans=1.0*C/V1+1.0*(Len-C)/V2; else ans=1.0*Len/V1; return ans; ... 阅读全文
posted @ 2012-03-20 20:20 world_ding 阅读(275) 评论(0) 推荐(0)
hdu 2602 Bone Collector(0-1背包)
摘要:许久没有写关于算法的题目,昨天捡起来,看了图论的部分算法,今天算是看了背包问题的三种常见情况,01背包,完全背包,多重背包,然后回来便随便找了个题做了下,依然如此,为了是心理舒服,依然把此解题的背包问题发表一下,关于背包问题的三种情况给予解释:以下将对题目代码给予:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602代码文档:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>int f[1100];int vol[1100],v 阅读全文
posted @ 2012-03-02 22:27 world_ding 阅读(188) 评论(0) 推荐(0)
hdu 1050 Moving Tables(贪心算法)
摘要:此题是一个与我的上篇文章 “东东的女朋友” 极为类似的算法的一道题,依然是贪心算法的应用,针对于此题,需要注意的是不可以同时移动的情况(Impossible)的第3种,和可以移动(Possible)的情况的第二种(见下图):下面代码及解释如下:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int s; int t;}count[1000];int flag[1000];int cmp(const void *a ,const void *b){ s 阅读全文
posted @ 2011-12-08 10:31 world_ding 阅读(210) 评论(0) 推荐(0)
KMP的小小应用<一> hdu 3746
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3746本来并不是看着一题的,搜代码时一不小心看到大牛说先看着题的找的规律,于是便拿来这题来看,于是惊叹发现曾经没思路的题,现在依然没思路,于是不理解的情况下,搜解释,终于搜到一句话:用KMP算法求最小循环节,这里有一个结论,最小循环节的大小为len-next[len]。于是便理解了好久,画了好几张纸,终于有所理解,于是自己按理解情况写了代码;还是有所反应的:有个大牛代码,没看,但看了解释,对循环的解释,如果看怎么循环的,可以看一下,链接:http://www.cnblogs.com/Lyush.. 阅读全文
posted @ 2011-08-18 11:29 world_ding 阅读(323) 评论(0) 推荐(0)
对字典树的理解 hdu 1251
摘要:刚开始对字典树理解为0,感觉应该是相当困难的东西,于是心理上就没有做的想法了,不过庆幸的是,比赛出了字典树,于是赛后硬着头皮去理解,感觉倒有点好了,这道题倒是字典树里比较简单的题了,作为小试身手的第一个了:View Code #include<string.h>#include<stdio.h>#include<stdlib.h>typedef struct node{ int n; ////这里是代表有某个节点的字符串数 struct node *child[26]; ////字典树嘛,26个字母;}Lnode,*Link; ... 阅读全文
posted @ 2011-08-18 09:20 world_ding 阅读(195) 评论(0) 推荐(1)
对于KMP的理解,hdu 1711
摘要:今天刚接触到KMP,很是棘手,于是百度了一篇广受关注的文章,看了许久,倒是明白一丁点走的过程,不过不太明白为什么会这样走,于是就想找到试题来实践一下,提到是找到了,很简单的题,不过对我来说还是有一定难度的,毕竟连理论还没看懂,于是便按理论上来写,很久了也没见运行正确过,于是有百度了一篇代码,看了之后很是震惊,原来我只写了开始,于是看了他的代码,虽然暂时不太懂为什么这样走,不过我还是相信慢慢的会理解的,鉴于我记性稍微够用的情况下按照他的代码先记了下来,慢慢理解罢了:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1711KMP视频链接处: ... 阅读全文
posted @ 2011-08-15 16:45 world_ding 阅读(184) 评论(0) 推荐(0)
对图论的理解floyd算法hdu1690
摘要:Bus System题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1690View Code # include<stdio.h># include<string.h>#define Max 0x7fffffffffffff///第一不用“;”,第二,这是64位,是个很大的数__int64 L1,L2,L3,L4,C1,C2,C3,C4;///这里尽量用__int64__int64 map[120][120]; ///__int64 point[120]; ... 阅读全文
posted @ 2011-08-13 09:31 world_ding 阅读(215) 评论(0) 推荐(1)
对图论的理解hdu 3342
摘要:本以为用并查集,于是兴致勃勃写了并查集的做法,由于给的测试实例太弱,于是测试没问题就交了,结果WA,于是百度一下,发现大部分人用的是拓扑排序和floyd算法,于是满怀信心的学拓扑,结果整了一个晚上没明白,第二天依然不太明白,于是改学拓扑,代码也不太好理解,便问了同志们,他们说自己也是不太理解,就这样用了,当模板了,于是便想先用着吧,希望再用的过程中会理解点什么;下面提供一下我自己对dijkstra和floyd的理解;对于dijkstra算法概要就是要定义一个二维数组和一个一维数组;二维数组就是把从第i到第j的路径的权值记下来,而且从i到j与从j到i是一样的,一维数组就是记录从i到j的最小(或最 阅读全文
posted @ 2011-08-12 16:37 world_ding 阅读(545) 评论(1) 推荐(0)
对数塔的理解<二> hdu 1176 免费馅饼
摘要:免费馅饼题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 有上个对数塔的理解,这个也可以用数塔处理,大致是相似的:View Code # include<stdio.h># include<string.h>int dp[100010][13];int max(int a,int b){ if(a>b) return a; return b;}int main(){ int n,i,j,k,m,t; while(scanf("%d",&n),n) { memset(d... 阅读全文
posted @ 2011-08-11 09:52 world_ding 阅读(163) 评论(0) 推荐(0)
对数塔的理解hdu 2084 数塔
摘要:数塔题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=2084前不久,遇到一个DP题,当时没想到是数塔,没思路之下便搜了一部分代码,看到有个和数塔类似的做法,便学了那个自上往下处理的方法;巧的是在一次竞赛中出现了那题,结果过不去,我自己出的数据也过不去,本以为我自己写错了程序,没想到竞赛结束后用那个代码运行我的那个数据竟然是错的答案;后来问了别人,别人说那个算法是错的,之所以之前对,那是测试实例太弱;所以有很加学习了数塔,希望这次是学有所得,受打击了错不起了,不想错了:这个DP应该也可以,只是为了感受或者说用下数塔,代码如下:... 阅读全文
posted @ 2011-08-11 09:45 world_ding 阅读(182) 评论(0) 推荐(0)
对图论的理解hdu 2066
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2066基于上个对图论的理解(hdu2544),这个就是多实例,多站点的最短路径问题,依然可以用dijkstra算法,具体的dijkstra在上几个分别针对不同方向有较详细的讲解;这题的解法与上个类似,这里就不过多的分析,下面针对代码的部分处理做出各点的详细解释;代码+注释如下:View Code # include<stdio.h># include<string.h>int map[1200][1200];//能开到1200*1200让我很意外int flag[1200] 阅读全文
posted @ 2011-08-10 10:37 world_ding 阅读(309) 评论(0) 推荐(1)
对图论的理解hdu 2544
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2544这一题与上面一题hdu2112大有相似之处,都是用了dijkstra算法,重要点依然是对dijkstra更新过程的理解:也就是对for(i=0;i<n;i++){ if(flag[j]==0&&count[j]>count[k]+map[k][j]); count[j]=count[k]+map[k][j];} 的理解,在这里map[][],是以二维数组形式记录了任意2点之间的距离,对于2点无法连通的我们初始化为一个较大的数(这里选了100000... 阅读全文
posted @ 2011-08-10 08:32 world_ding 阅读(282) 评论(0) 推荐(1)
对图论的理解hdu 2112
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2112这一题与上面的图论的题有很大不同,对于这一题对于这题有两种解法,Dijkstra算法或者floyd算法,只是我也没理解好,在别人的帮助下勉强整出dijkstra算法解这一题,由于题目本身比上几个稍微难理解点,所以附上dijkstra算法的课件的部分;Dijkstra算法依最短路径的长度递增的次序求得各条路径。设置一个集合S,该集合中存放从给定源点出发最短路径已知的所有顶点。因此算法开始时,集合S中只有源点一个顶点。随着算法的进行,其余的顶点被逐步加入集合S。因此算法要解... 阅读全文
posted @ 2011-08-09 20:01 world_ding 阅读(281) 评论(0) 推荐(0)
对图论的理解hdu 1301
摘要:上一篇恰好也是对图论的理解,所以这次解释比较比较少,如果有什么不太懂得地方,可以参考上面的,也可以留言,我会尽最大努力解释:View Code # include<stdio.h> # include<stdlib.h># include<string.h># include<math.h>struct node { int num1,num2; ///代表庄 int cost; ///代表庄之间的维修费用};node count[10000];int flag[100];int cmp(const void *a,const void *b){ 阅读全文
posted @ 2011-08-09 14:28 world_ding 阅读(289) 评论(0) 推荐(0)
对图论的理解 hdu 1162 Eddy's picture
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1162 View Code 1 # include<stdio.h> ///大部分与上几个理解有相似之处,我把不同的地方标注一下,便于理解 2 # include<stdlib.h> 3 # include<string.h> 4 # include<math.h> 5 double x[5000],y[5000];///存的是两个点的x,y左标 6 int flag[5000]; 7 struct node 8 { 9 int num1,num2; 阅读全文
posted @ 2011-08-09 10:43 world_ding 阅读(152) 评论(0) 推荐(0)
对多重背包问题的理解
摘要:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2191View Code #include<stdio.h>#include<string.h>int f[1000];int p[1000],w[1000],num[1000];int V;int max(int a,int b){ if(a>b) return a; else return b;}void ZeroOnePack(int cost,int weight){ in... 阅读全文
posted @ 2011-08-05 21:00 world_ding 阅读(363) 评论(0) 推荐(0)