2012年5月25日
摘要: 这个题是没看清楚啊,是要在需要的安排的名次的国家进行排名的,其他的不要排。代码:#include"iostream" using namespace std;typedef struct{ int jin; int pai; int renkou; double jinbi; double paibi; int zuihao;}jp;jp p[100000];int n,m;int t[10000];int ff(int s){ int s1[4]; s1[0]=s1[1]=s1[2]=s1[3]=1; int s5; for(int i=0;i<m;i++) { i 阅读全文
posted @ 2012-05-25 23:02 xinmenghuairi 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 这个题我弄了一下午,刚开始测试的结果是和例子一样,但是就是错误答案。看了下网上的答案才知道自己错在哪了:它首先是按成绩排名的当成绩一样是就要原先的先后顺序排的。刚开始我一直以为都是按名字排的。哎。。。真的要有耐心才行啊。。。代码:#include"iostream"#include"stdlib.h"#include"string"using namespace std;typedef struct{int chen;char cha1r[51];int a1;} node;node qq[310];int chen1[310];ch 阅读全文
posted @ 2012-05-25 16:20 xinmenghuairi 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 在大数组的情况下C++的输入输出尽量要改为scanf和printf,后者的时间相对小好多。要养成后者习惯啊。 阅读全文
posted @ 2012-05-25 09:57 xinmenghuairi 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 这个我原先是用C++快排的,但是没过,后来看了网上的我改了输入输出,用C的输入输出,哎。。。不同的输入输出时间尽然差了那么多啊。还有就是网上有的答案用的是数学法,很灵活啊,比快排时间短了200ms啊。其原理:由于他们是在【-500000,500000】各不同的数,即只要将他们加上500000表示数组位置(即已经按从大到小排序了)且让该数组为1表示(原数组要初始化为0)。最后只要从后面开始找m个1的位置将他们的位置减去500000即可。快排:#include"iostream"#include"stdlib.h"#include"algorith 阅读全文
posted @ 2012-05-25 09:55 xinmenghuairi 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 我用快速排序做的觉得花时间,用普通的方法做更加省时啊。虽然好用也不是每次都是最好的快排:#include"iostream"#include"stdlib.h"#include"math.h"using namespace std;int cmp(const void *a,const void *b){if((*(int *)a)<0||(*(int *)b)<0) return abs(*(int *)b)-abs(*(int *)a);return *(int *)b-*(int *)a; }int main(){i 阅读全文
posted @ 2012-05-25 00:55 xinmenghuairi 阅读(2699) 评论(0) 推荐(0) 编辑
摘要: 即条件排序问题,就要对cmp函数进行修改,我用了结构体来做的,可是运行时间比较大。本人代码:#include"iostream"#include"iomanip"#include"stdlib.h"using namespace std;typedef struct {int x;char y[10];int z;}node;node xue[100001];int c,i,n,m;int cmp(const void*a,const void*b){if(c==3&&(*(node*)a).z!=(*(node*)b 阅读全文
posted @ 2012-05-25 00:17 xinmenghuairi 阅读(191) 评论(0) 推荐(0) 编辑