YC大牛的判题任务-想法
YC大牛的判题任务
1000ms
65536KB
64-bit integer IO format: %lld Java class name: Main
第七届北京师范大学程序设计竞赛要开始了.今年的比赛规模比以前大多了,而且还要邀请外校的大牛来友情参赛.
今年比赛系统采用了我们YC大牛编写的OJ(OnlineJudge).为了更好的服务校赛,YC大牛准备测试一下OJ的判题效率.
他测试的方法是,先提交N个程序,然后打开判题程序开始判题,每次都只判一个题目,当有一个题目在OJ上运行的时候,其他程序就只有等待.当一个
程序运行完后,会立刻选择另外一个程序来运行,直到所有程序都在OJ上判完.
YC会测定一下所有程序的等待时间之和,以此作为判题效率的指标.
现在YC大牛做了一次测试,他想看看实际判题结果和理论上最优的判题结果有多大差异.现在给你所有题目在实际判题的时候的运行时间,让你找
出理论上使等待时间总和最小的判题顺序(存在多个相同等待时间的判题方案时候,让编号小的尽可能先判.)
今年比赛系统采用了我们YC大牛编写的OJ(OnlineJudge).为了更好的服务校赛,YC大牛准备测试一下OJ的判题效率.
他测试的方法是,先提交N个程序,然后打开判题程序开始判题,每次都只判一个题目,当有一个题目在OJ上运行的时候,其他程序就只有等待.当一个
程序运行完后,会立刻选择另外一个程序来运行,直到所有程序都在OJ上判完.
YC会测定一下所有程序的等待时间之和,以此作为判题效率的指标.
现在YC大牛做了一次测试,他想看看实际判题结果和理论上最优的判题结果有多大差异.现在给你所有题目在实际判题的时候的运行时间,让你找
出理论上使等待时间总和最小的判题顺序(存在多个相同等待时间的判题方案时候,让编号小的尽可能先判.)
Input
第1行是一个整数N,代表测试数据的组数.
第2行开始的N行,每行是一组测试数据.
从第2行到N+1行每行以一个M(0<=M<=3000)开始,代表有M个程序等待判题,接着是M个整数,依次代表从编号1到M的题目的运行时间.
第2行开始的N行,每行是一组测试数据.
从第2行到N+1行每行以一个M(0<=M<=3000)开始,代表有M个程序等待判题,接着是M个整数,依次代表从编号1到M的题目的运行时间.
Output
对应于每组输入,首先输出数据编号(如样例所示),然后输出M个数,代表最优的判题顺序.
Sample Input
2
5 1 1 1 1 1
6 1 2 3 4 5 6
5 1 1 1 1 1
6 1 2 3 4 5 6
Sample Output
Case
1: 1 2 3 4 5
Case 2: 1 2 3 4 5 6
Case 2: 1 2 3 4 5 6
Source
第七届北京师范大学程序设计竞赛热身赛第一场
Tags ( Click to see )
1 #include<iostream> 2 #include<algorithm> 3 #include<queue> 4 #include<stdio.h> 5 #include<stdlib.h> 6 #include<string.h> 7 #include<math.h> 8 #include <ctype.h> 9 using namespace std; 10 #define sr(x) scanf("%d",&x); 11 #define sc(x) printf("%d",x); 12 #define hh printf("\n"); 13 //struct PP//{// int x,y;//}a[3001],s; 14 //bool comp(PP m,PP n) 15 //{ 16 // return m.x<n.x; 17 //} 18 int n,a[3000],b[3000],s; 19 int px() 20 { 21 int i,j,temp; 22 //for(i=0;i<n;i++) 23 //{ 24 //for(j=i+1;j<n;j++)if(a[i]>a[j]){s=a[i];a[i]=a[j];a[j]=s;s=b[i];b[i]=b[j];b[j]=s;} 25 //} 26 for(int i=0;i<n-1;i++) 27 for(int j=0;j<n-i-1;j++) 28 if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; temp=b[j]; b[j]=b[j+1]; b[j+1]=temp; } 29 return 0; 30 } 31 int main() 32 { 33 int tt,k; 34 sr(tt); 35 for(k=1;k<=tt;k++) 36 { 37 int i; 38 sr(n); 39 for(i=0;i<n;i++){sr(a[i]);b[i]=i+1;} 40 //stable_sort(a,a+n,comp); 41 px(); 42 printf("Case %d:",k); 43 for(i=0;i<n;i++)printf(" %d",b[i]); 44 hh; 45 } 46 return 0; 47 } 48