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 ",ans); 22 return 0; 23 }
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 "); else { if(temp==0) printf("YES "); else printf("NO "); } } return 0; }
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 "); else { if(y==INF) printf("Infinity "); else printf("%d ",y); } return 0; }