2015苏州大学ACM-ICPC集训队选拔赛(2) 1001 1003 1010
草爷要的榜
Problem Description
苏州大学代表队又勤奋地开始了训练。
今天开了一场时长5小时的组队训练赛,苏州大学的n(1<=n<=100)支校队奋力拼(hua)搏(shui),每一支队伍都做出来了k(1<=k<=10)道题,但是因为罚时有差别,所以名次也不同。
现在给出了每个队伍的AC情况,请按照罚时从少到多输出每个队伍的罚时。
排名规则如下:
1、如果AC题数不同,则过题目数多的队伍名次靠前;
2、如果AC题数相同,则按照罚时多少,总罚时少的队伍名次靠前。
罚时计算规则如下:
1、每个题目只有AC时它的罚时才计入总罚时,总罚时为每个AC题目的基础罚时和加罚时的和;
2、每个AC了的题目的基础罚时是从比赛开始到这题AC所经过的分钟数;
3、每个AC了的题目的加罚时是:第一次AC之前的每个错误提交(包括WA、RE、TLE、MLE等)会额外增加20分钟加罚时。
今天开了一场时长5小时的组队训练赛,苏州大学的n(1<=n<=100)支校队奋力拼(hua)搏(shui),每一支队伍都做出来了k(1<=k<=10)道题,但是因为罚时有差别,所以名次也不同。
现在给出了每个队伍的AC情况,请按照罚时从少到多输出每个队伍的罚时。
排名规则如下:
1、如果AC题数不同,则过题目数多的队伍名次靠前;
2、如果AC题数相同,则按照罚时多少,总罚时少的队伍名次靠前。
罚时计算规则如下:
1、每个题目只有AC时它的罚时才计入总罚时,总罚时为每个AC题目的基础罚时和加罚时的和;
2、每个AC了的题目的基础罚时是从比赛开始到这题AC所经过的分钟数;
3、每个AC了的题目的加罚时是:第一次AC之前的每个错误提交(包括WA、RE、TLE、MLE等)会额外增加20分钟加罚时。
Input
多组数据(<=100),请读到文件结尾。
每组数据以两个整数n和k开头;
接下来为n支队伍的过题时间以及提交次数,每支队伍占两行:
每支队伍第一行为k个时间,格式(xx:yy),第i个时间表示第i个题AC时间为xx小时yy分钟。
每支队伍第二行为k个整数,第i个整数表示第i个题总提交次数a[i](1<=a[i]<=200,总次数包括一次AC提交);
数据保证总罚时在32位整数内,每支队伍某题AC之后不再提交该题。
每组数据以两个整数n和k开头;
接下来为n支队伍的过题时间以及提交次数,每支队伍占两行:
每支队伍第一行为k个时间,格式(xx:yy),第i个时间表示第i个题AC时间为xx小时yy分钟。
每支队伍第二行为k个整数,第i个整数表示第i个题总提交次数a[i](1<=a[i]<=200,总次数包括一次AC提交);
数据保证总罚时在32位整数内,每支队伍某题AC之后不再提交该题。
Output
对于每组输入,输出一行:
按照本场训练赛的罚时从少到多输出各个队伍的总罚时(分钟数),每两个数间用一个空格隔开。
按照本场训练赛的罚时从少到多输出各个队伍的总罚时(分钟数),每两个数间用一个空格隔开。
Sample Input
3 5 00:59 00:25 04:16 00:12 03:57 1 2 1 1 3 01:03 00:17 02:38 00:22 02:08 1 1 1 1 1 00:44 00:29 03:42 00:20 01:53 1 1 3 1 1 1 7 00:27 01:58 03:15 00:47 02:44 04:13 02:39 2 1 4 4 1 7 4 4 3 02:12 00:42 00:24 4 1 1 01:27 03:03 00:31 1 2 1 00:58 00:33 00:18 1 1 1 04:05 00:41 01:27 6 2 4
Sample Output
388 468 649 1283 109 258 321 553
Author
一个很简单的模拟,注意一下时间的换算就好
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<map> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define INF 0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define ULL unsigned long long using namespace std; struct P { // string s; int sum; } L[100000]; int i,j; int n,m; int k; int M,s; int FA; bool cmd(P x,P y) { return x.sum<y.sum; } int main () { while(cin>>n>>k) { for(j=0;j<n;j++) { int num=0; for(i=0; i<k; i++) { scanf("%d:%d",&M,&s); num+=M*60+s; } for(i=0; i<k; i++) { cin>>FA; num+=(FA-1)*20; } L[j].sum=num; // cout<<L[j].sum<<endl; } sort(L,L+n,cmd); for(i=0;i<n;i++) { if(i!=n-1) { printf("%d ",L[i].sum); } else { printf("%d\n",L[i].sum); } } } return 0; }
草爷要的福利题
Problem Description
苏州大学各校队都在忙碌于出校赛题目,控制难度成了最头疼的事情。为了给各位参赛选手送福利,我们出了n(1<=n<=100)道题目,准备选择一道最适合新生的题目来作为福利题。
每道题目有两个指标,思想简易度系数x和代码简易度系数y(-10000<=x,y<=10000);我们相应地制定了两个参数:思想参数a和代码参数b(-10000<=a,b<=10000)。因此每道题目的合适程度 z=x*a+y*b;我们准备选择一道合适程度最高的题目作为我们的选择。请问我们选择的题目的合适程度是多少呢。
每道题目有两个指标,思想简易度系数x和代码简易度系数y(-10000<=x,y<=10000);我们相应地制定了两个参数:思想参数a和代码参数b(-10000<=a,b<=10000)。因此每道题目的合适程度 z=x*a+y*b;我们准备选择一道合适程度最高的题目作为我们的选择。请问我们选择的题目的合适程度是多少呢。
Input
多组数据(<=1000),请读到文件结尾。
每组数据第一行为三个整数n,a,b,含义如题目描述。
接下来n行每行两个数x和y表示这道题的思想简易度系数和代码简易度系数。
每组数据第一行为三个整数n,a,b,含义如题目描述。
接下来n行每行两个数x和y表示这道题的思想简易度系数和代码简易度系数。
Output
对于每组数据输出一个整数,表示我们选择的题目的合适程度。每组数据输出占一行。
Sample Input
1 1 1 2 3 2 -2 1 1 1 1 -1
Sample Output
5 -1
Author
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<map> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define INF 0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define ULL unsigned long long using namespace std; int n,a,b; int x,y; int i,j; int main() { while(cin>>n>>a>>b) { int MAX=-inf; for(i=0;i<n;i++) { cin>>x>>y; MAX=max(MAX,a*x+b*y); } cout<<MAX<<endl; } return 0; }
高能数学题
Problem Description
给定一个正整数n,判断该数是不是3的倍数
Input
输入数据有多组(约300组)。每行一个正整数n(0<n<=10^10000)
Output
对于每组输入数据,输出一行"Yes"或"No"(不包括引号),表示n是不是3的倍数
Sample Input
1 123456789 2333333333333333333333333333333333333333
Sample Output
No Yes No
Author
每位数相加求和,看是否整除3即可
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<map> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define INF 0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define ULL unsigned long long using namespace std; string s; int main() { while(cin>>s) { int sum=0; for(int i=0;i<s.length();i++) { sum+=s[i]-'0'; } // cout<<sum<<endl; if(sum%3==0) { puts("Yes"); } else { puts("No"); } } return 0; }