Good Bye 2016

A. New Year and Hurry

题意:有n个题目,第i个题目需要花 5*i 分钟完成,从晚上八点开始,十二点结束,并且要留下 k 分钟打扫卫生,最多能做几个题?

分析:四个小时240分钟,先减去打扫的时间 k 分钟,再来做题。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n,k;
 7     scanf("%d%d",&n,&k);
 8     int temp=240;
 9     temp-=k;
10     int ans=0;
11     for(int i=1;i<=n;i++)
12     {
13         if(temp-i*5>=0)
14         {
15             temp-=i*5;
16             ans++;
17         }
18         else
19             break;
20     }
21     printf("%d\n",ans);
22     return 0;
23 }
View Code

B. New Year and North Pole

题意:将地球视为一个球,初始的位置在北极,按步骤移动之后是否仍在北极?在北极和南极时不能向东西两边移动。

分析:按照题意模拟即可,注意非法的操作。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int t;char s[20];memset(s,0,sizeof(s));
        int temp=0;
        int flag=0;
        for(int i=1;i<=n;i++)
        {
            memset(s,0,sizeof(s));
            scanf("%d%s",&t,s);
            if((temp==0||temp==20000)&&(s[0]=='E'||s[0]=='W'))
                flag=1;
            if(s[0]=='S')
                temp+=t;
            else if(s[0]=='N')
                temp-=t;
            if(temp<0||temp>20000)
                flag=1;
            
        }    
        if(flag)
            printf("NO\n");
        else
        {
            if(temp==0)
                printf("YES\n");
            else
                printf("NO\n");
        }
    } 
    return 0;
}
View Code

C. New Year and Rating

题意:一个人初始的cf分数是未知的,但是有他参加的一些比赛的信息。c表示这场比赛变化的分数,d表示参加的版本。

分析:设最初的分数范围为-INF~INF, 然后根据版本求交集,根据变化的分数来改变范围,最后取最大值。

#include<bits/stdc++.h>
using namespace std;
const int INF=1e9;
int x,y;
int nx,ny;
int flag;
void jiao(int a,int b,int c,int d)
{
    if(b<c||d<a)
    {
        flag=0;
        return;
    }
    int t[4];
    t[0]=a,t[1]=b,t[2]=c,t[3]=d;
    sort(t,t+4);
    x=t[1],y=t[2];
    return;
}
int main()
{
    int n;scanf("%d",&n);
    x=-INF,y=INF;
    flag=1;
    for(int i=1;i<=n;i++)
    {
        int c,d;scanf("%d%d",&c,&d);
        if(d==1)
            nx=1900,ny=INF;
        else
            nx=-INF,ny=1899;
        jiao(x,y,nx,ny);
        x+=c;
        if(y!=INF)
            y+=c;
    }
    if(flag==0)
        printf("Impossible\n");
    else
    {
        if(y==INF)
               printf("Infinity\n");
           else 
               printf("%d\n",y);
    }
     return 0;
    
}
View Code

 

 

posted @ 2017-01-02 11:59  1叶飘零1  阅读(104)  评论(0编辑  收藏  举报