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分钟加罚时。

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之后不再提交该题。

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;我们准备选择一道合适程度最高的题目作为我们的选择。请问我们选择的题目的合适程度是多少呢。

Input

多组数据(<=1000),请读到文件结尾。
每组数据第一行为三个整数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;
}

  

posted @ 2016-01-09 12:22  樱花落舞  阅读(719)  评论(1编辑  收藏  举报