上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1869解题思路:本题为简单最短路,只需要求出两两间的距离,如果存在一个两两间距离大于7的点的话则输出No如果两两间的距离都小于或等于7则输出Yes#include#define INF (1 map[i][k] + map[k][j]) map[i][j] = map[i][k] + map[k][j];}int main(){ int i,j,a,b; while(scanf("%d%d",&n,&m)!= EOF) { for(i = 0; i 7) flg 阅读全文
posted @ 2012-09-05 11:14 一生挚爱 阅读(205) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3117解题思路:很显然费波纳数的后四位存在周期,通过测试可以发现后四位的周期为15000,所以后四位可以打表得出,前四位是参考了别人的思路才做出来的。因为费波纳数f[n] = 1/sqrt(5)(((1+sqrt(5))/2)^n+((1-sqrt(5))/2)^n).很显然当n非常大的时候(1-sqrt(5))/2)^n非常的小以至于可以忽略,假设F[n]可以表示成 t * 10^k(t是一个小数),那么对于F[n]取对数log10,答案就为log10 t + K,此时很明显log10 t#inc 阅读全文
posted @ 2012-09-05 10:24 一生挚爱 阅读(143) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2962方法一:使用spfa最短路算法,二分查找最大高度。运行结果:2962140MS612K1790 BC++#include#include#includeusing namespace std;#define INF (1Q; Q.push(start); while( !Q.empty() ) { int now = Q.front(); Q.pop(); vis[now] = false; for(node *p = head[now] ; p ; p = p->next) { ... 阅读全文
posted @ 2012-09-05 08:40 一生挚爱 阅读(162) 评论(0) 推荐(0)
摘要: 一个人的旅行Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10311 Accepted Submission(s): 3500Problem Description虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯 阅读全文
posted @ 2012-09-04 08:24 一生挚爱 阅读(115) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2680简单最短路问题。。。。。运行结果:Accepted2680265MS4164K1382 BC++//dijkstra#include#define INF (1 min + map[k][j]) dis[j] = min + map[k][j]; } }}int main(){ int i,j,start,end,cost,w; while(scanf("%d%d%d",&n,&m,&s) != EOF) { for(i = 0; i cost) m 阅读全文
posted @ 2012-09-03 16:34 一生挚爱 阅读(160) 评论(0) 推荐(0)
摘要: 题目地址:http://poj.org/problem?id=1511方法一:/* 本题使用邻接表采用动态开辟的方式保存所有的边,首先定义一个保存指向的顶点和边所对应权值,*/#include#include#includeusing namespace std;#define NMAX_D 1000005#define NMAX 1000000001int n,m;//定义结构体struct node{ int v,cost; node *next;}edge[NMAX_D],redge[NMAX_D];//定义两个数组,edge用来保存顺向边,redge保存逆向边bool vis[NMAX 阅读全文
posted @ 2012-09-02 11:17 一生挚爱 阅读(131) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3999本题为简单二叉排序树,先按排序树创建树,然后先序遍历二叉树,输出的时候最后一个数字后面没有空格。数组实现:#include#include#define N 100005int tree[N],left[N],right[N],a[N],num,flg;//tree数组用来保存树节点的值,left,right数组用来保存结点的左右子树,void insert(int index,int x){ if( x #includestruct node{ int data; struct node * 阅读全文
posted @ 2012-08-30 20:24 一生挚爱 阅读(162) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1421状态Dp[i][j]为前i件物品选j对的最优解当i=j*2时,只有一种选择即 Dp[i-2][j-1]+(w[i]-w[i-1])^2当i>j*2时,Dp[i][j] = min(Dp[i-1][j],Dp[i-2][j-1]+(w[j]-w[j-1])^2)#include#includeusing namespace std;#define min(x,y) (x)= j*2)//当i-1>= j*2的时候 dp[i][j] = min(dp[i-1][j],dp[i-2][j 阅读全文
posted @ 2012-08-30 09:43 一生挚爱 阅读(179) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3732题目大意:阿辉要记单词,所有单词的长度都不超过10个字符,每个单词都有一定的价值跟复杂性,知道每个单词的价值跟复杂性都写下来了,阿辉写单词的总的复杂度不能超过C,要你求阿辉可以得到的最大价值。解题思路:乍一看本题为一个简单0 1背包问题,但用0 1 背包做的时间复杂度为10^9在一秒中内不可能完成,但细看题目后发现Vi和Ci都小于等于10也就是说价值和费用的种类总共只有一百种,只需要统计所有价值、费用相同的数目及可以将问题转化为一个多重背包问题。源码及注释:#include#includein 阅读全文
posted @ 2012-08-24 07:42 一生挚爱 阅读(120) 评论(0) 推荐(0)
摘要: 最近发现自己在高级数据结构方面好薄弱的,于是看了很多文档,发现这篇不错。数据结构——堆的操作和实现当应用优先级队列或者进行堆排序时,一般利用堆来实现。堆是一个完全(除最底层外都是满的)二叉树,并满足如下条件:1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树,所以可以用线性的数据结构,比如数组,来实现堆。利用数组实现,则对于长为N的堆中的元素从0到N-1排列,有:i的父结点:Parent(i)=(i+1)/2-1i的左叶子:Left(i)=(i+1)*2-1i的右叶子:Right(i)=(i+1)*2堆的操作主要以一个“堆化”(Heapify) 阅读全文
posted @ 2012-08-22 09:22 一生挚爱 阅读(135) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页