hdu 3789 请不要将所有国家排序
2012-06-14 10:10
274 查看
坑爹,考浙大的研究生果然都不是一般人……
只将给定国家号的国家排序
#include "stdio.h" #include "string.h" #define M 100 int best[M]; int final[M]; int n, m; int data[M][3]; int state[M]; void refresh(int* ini, int w){ int i; for(i=0; i<n; i++) if(final[i] > ini[i]){ final[i] = ini[i]; best[i] = w; } } void order(double* seq, int w){ int i, j; double t; int tt; int oo[M], ini[M]; for(i=0; i<m; i++) oo[i] = state[i]; //初始化,oo与seq对应,oo[i]号国家的成绩是seq[i] for(i=1; i<m; i++){ t = seq[i]; tt = oo[i]; for(j=i-1; j>=0; j--){ if(seq[j] < t){ seq[j+1] = seq[j]; oo[j+1] = oo[j]; //oo数组随着seq排序改变,始终与成绩的位置对应 }else break; } seq[j+1] = t; oo[j+1] = tt; } for(i=0; i<m; i++){ if(i>=1 && seq[i] ==seq[i-1]) ini[oo[i]] = ini[oo[i-1]]; //颠倒。oo[i] = k 表示第i名的国家是k,反转后为 ini[k] = i 表示k国家是第i名 else ini[oo[i]] = i; } refresh(ini, w); } void main(){ int i; double seq[M]; freopen("in.txt", "r", stdin); while(scanf("%d %d", &n, &m)!=EOF){ for(i=0; i<n; i++){ scanf("%d %d %d", &data[i][0], &data[i][1], &data[i][2]); } for(i=0; i<m; i++) scanf("%d", state+i); memset(final, 0x7F, sizeof(final)); for(i=0; i<m; i++) seq[i] = data[state[i]][0]; order(seq, 1); for(i=0; i<m; i++) seq[i] = data[state[i]][1]; order(seq, 2); for(i=0; i<m; i++) seq[i] = (data[state[i]][0]*1.0)/data[state[i]][2]; order(seq, 3); for(i=0; i<m; i++) seq[i] = (data[state[i]][1]*1.0)/data[state[i]][2]; order(seq, 4); for(i=0; i<m; i++){ printf("%d:%d\n", final[state[i]]+1, best[state[i]]); } printf("\n"); } }
只将给定国家号的国家排序
相关文章推荐
- hdu 3789 奥运排序问题
- HDU-3789-奥运排序问题
- hdu 3789 奥运排序问题 模拟
- hdu 3789 奥运排序问题 模拟
- hdu 3789 奥运排序问题
- hdu 3789 奥运排序问题 模拟
- HDU 不要62(数位dp 深搜版本)
- hdu 3887 Counting Offspring 树上求所有节点的子树上比当前节点小的个数 树状数组
- HDU 2089 不要62(数位DP)
- HDU 3532 Max Angle(计算几何——极角排序)
- hdu 4946 Area of Mushroom (凸包,去重点,水平排序,留共线点)
- (原創) 如何列出一篇文章的所有單字並依size和字母順序排序? (初級) (C++)
- HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)
- C语言根据国家英文首字母进行排序
- HDU 1678 Shopaholic(优先队列 + 排序 + 英文-我想哭)
- hdu-2089 不要62【数位dp】
- 编写一个方法,对字符串进行排序,将所有变位词排在相邻的位置
- HDU 2020 -- 绝对值排序
- HDU 5562 Clarke and food(排序)——BestCoder Round #62(div.2)
- UVALive 4617 Simple Polygon(顺/逆时针输出所有点/极角排序)