码迷,mamicode.com
首页 > 其他好文 > 详细

2015苏州大学ACM-ICPC集训队选拔赛(2) 1001 1010

时间:2016-01-09 13:44:27      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

草爷要的榜

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 41   Accepted Submission(s) : 26

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

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;
}

  

高能数学题

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 92   Accepted Submission(s) : 38

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

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;
}

  

2015苏州大学ACM-ICPC集训队选拔赛(2) 1001 1010

标签:

原文地址:http://www.cnblogs.com/yinghualuowu/p/5116132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!