2012年7月10日
摘要: 第一次用dijkstr算法把每个起点找到最短的时间,然后进行比较,但是就是过不了。网上看的先以0为起点然后到原先起点的那个点的时间设为0,再用dijkstr算法就能一次性找出最短时间代码:#include<iostream>#include<string.h>using namespace std;#define Max 999999999int map[1005][1005];int dis[1005],hash[1005];int star,en[1005];int t,s,d;int djs(){ int i,j; int index,minn,sc; memse 阅读全文
posted @ 2012-07-10 11:59 xinmenghuairi 阅读(364) 评论(0) 推荐(0) 编辑
  2012年7月9日
摘要: 这道题有点坑啊。。。要考虑重边,即输入时重边时要去最短那个。。。代码:#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define Max 0xfffffffint map[1001][1001];int dis[1001],hash[1001],pay[1001][1001],pd[1001];int n,m;void djs(int v,int d){ int i,j,min,index;for(i=1;i<=n;i++) {dis[i]=map[v][ 阅读全文
posted @ 2012-07-09 11:06 xinmenghuairi 阅读(195) 评论(0) 推荐(0) 编辑
  2012年7月8日
摘要: floyd算法:#include"iostream"using namespace std;int map[101][101];int n,m;int main(){int i,j,k;int x,y,t;while(cin>>n>>m){ if(n==0&&m==0)break;for(i=1;i<=n;i++)for(j=1;j<=n;j++)map[i][j]=map[j][i]=1000000;for(i=1;i<=m;i++){cin>>x>>y>>t;map[x][y] 阅读全文
posted @ 2012-07-08 11:55 xinmenghuairi 阅读(263) 评论(0) 推荐(0) 编辑
  2012年7月7日
摘要: 这个题是要找最短路劲过程中道路条数代码:#include"iostream"#include"memory.h"using namespace std;#define debug 1#define N 1001#define Max 10000000int n;int map[N][N],dis[N],used[N],num[N];void inp(){ int i,j,x,m,y,distance; for(i=1;i<=n;i++) for(j=1;j<=n;j++) map[i][j]=i==j?0:Max; cin>>m; 阅读全文
posted @ 2012-07-07 10:56 xinmenghuairi 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 关键要知道汉字是占两个字符的,且每个字符的值都<0;直接用字符就可以做的。但要记得输入字符前加个getchar();代码:#include"iostream"#include"string"using namespace std;int main(){int n;char c;cin>>n;getchar();while(n--){int s=0;while((c=getchar())!='\n'){ if(c<0) s++;}cout<<s/2<<endl;}return 0;} 阅读全文
posted @ 2012-07-07 10:07 xinmenghuairi 阅读(202) 评论(0) 推荐(0) 编辑
  2012年7月6日
摘要: 注:网上搜的第一篇1001这个就不用说了吧1002简单的大数1003DP经典问题,最大连续子段和1004简单题1005找规律(循环点)1006感觉有点BT的题,我到现在还没过1007经典问题,最近点对问题,用分治1008简单题1009贪心1010搜索题,剪枝很关键10111012简单题1013简单题(有个小陷阱)1014简单题1015可以看作搜索题吧1016经典的搜索1017简单数学题1018简单数学题1019简单数学题1020简单的字符串处理1021找规律的数学题1022数据结构的题(栈的应用)1023特殊的数(Catalan Number)1024经典DP,最大M子段和1025经典DP,最 阅读全文
posted @ 2012-07-06 09:05 xinmenghuairi 阅读(279) 评论(0) 推荐(0) 编辑
  2012年6月9日
摘要: 经常看到菲波数的问题,我就把菲波数的数的算法(即大数相加法)记录下来主要代码:#include <string>#define N 500 //最大的菲波数个数(可自己设置)using namespace std;string *A = new string[N];string Sum_calc(string s1,string s2) //大数相加法{ int length; if (s1.length()>=s2.length()) { length=s1.length(); string tmp(s1.length()-s2.length(),'0'); 阅读全文
posted @ 2012-06-09 23:45 xinmenghuairi 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这个关键是题目要看清啊。我一直是题目没弄清楚错了好几次。代码看了就清楚题目了代码:#include"iostream"using namespace std;int main(){ int a,b,s1,m; int s2=s1; while(cin>>s1) { while(s1) { cin>>a>>b; m=0; if(a>b) { int t=a; a=b; b=t; } for(int i=a;i<=b;i++) { int s=1; for(int j=2;j<i;j++) { if(i%j==0) s+=j 阅读全文
posted @ 2012-06-09 22:57 xinmenghuairi 阅读(197) 评论(0) 推荐(0) 编辑
  2012年6月4日
摘要: 哎。。。这个题关键是没说输入的两个数谁大谁小。。要先判断大小。。。代码:#include"iostream"using namespace std;int main(){ int a,b; while(cin>>a>>b) { int t; int s1=0,s2=0; if(a>b) t=a,a=b,b=t; for(int i=a;i<=b;i++) { if(i%2!=0) s1+=i*i*i; else s2+=i*i; } cout<<s2<<' '<<s1<<en 阅读全文
posted @ 2012-06-04 23:00 xinmenghuairi 阅读(205) 评论(0) 推荐(0) 编辑
  2012年5月26日
摘要: 快排很好用,但是不是万能的,有时用很容易超时如果要输入排序的数列中是有范围规定的(范围在int数组可接受之内):只要定义一个数组,将他们初始化为0,之后将他们输入后当作数组的下标,将该数组加1;然后直接从下标为0的数开始找到第一个1的数就是最小的,要是想要前几个最小的,就要找几个1(此方法适合无负数的)只要定义一个数组,将他们初始化为0,之后将他们输入后加上一个最大范围的常数当作数组的下标,将该数组加1;然后直接从下标为0的数开始找到第一个1的数就是最小的,要是想要前几个最小的,就要找几个1(适合有负数的) 阅读全文
posted @ 2012-05-26 16:18 xinmenghuairi 阅读(263) 评论(0) 推荐(0) 编辑