CodeForces - 879
A
题意:就是一共有n个医生,每个医生上班的时间是第Si天,之后每隔d天去上班,问最少多少天能够访问完这n名医生
思路:直接进攻模拟就可以
代码:

1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 using namespace std; 7 const int maxx=1e5+10; 8 struct people{ 9 int now; 10 int d; 11 }x[maxx]; 12 13 int main(){ 14 int t,n; 15 scanf("%d",&n); 16 for(int i=0;i<n;i++){ 17 scanf("%d %d",&x[i].now,&x[i].d); 18 } 19 int day=x[0].now; 20 int flag=0; 21 // sort(x,x+n); 22 int i=0; 23 for(int i=1;i<n;i++){ 24 while(x[i].now<=day){ 25 x[i].now+=x[i].d; 26 } 27 day=x[i].now; 28 } 29 printf("%d\n",day); 30 }
B
题意:n个人在一排中,每个人都有自己的战斗力,然后两个人进行比赛,输掉的那个人就去到队伍后面,问哪个人先赢得k次胜利
思路:其实就像是找规律,只要第一遍没有k次的人,那么第一次k次的人肯定就是最大值,直接进行遍历循环找到就行
代码:

1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 using namespace std; 7 const int maxx=1e5+10; 8 int main(){ 9 int n,k; 10 scanf("%d %d",&n,&k); 11 int a[1000],b[1000]={0}; 12 for(int i=0;i<n;i++){ 13 scanf("%d",&a[i]); 14 b[i]=a[i]; 15 } 16 sort(b,b+n); 17 int maxx=b[n-1]; 18 int coun=a[0]; 19 int sum=0; 20 int flag=0; 21 for(int i=1;i<n;i++){ 22 if(sum>=k){ 23 printf("%d\n",coun); 24 flag=1; 25 break; 26 } 27 if(coun>a[i]){ 28 sum++; 29 }else{ 30 sum=1; 31 coun=a[i]; 32 } 33 } 34 if(flag==0){ 35 printf("%d\n",maxx); 36 } 37 38 39 }
C题不知道为什么能看懂题意,大概知道基本的想法,是真的敲不下去,可能是从考试周到现在一直就没有敲代码,导致那时候突然敲代码,脑子一锅粥,就一个题读题也很长时间,想思路更是一锅粥,没有主要的想法,一个路子稍微走不通就想着换路子,没有当时那种状态,主要还是刷题就不能断,而且做题的时候一定得有一个好的状态,这样才是很大程度的提升,每天就基本保持在至少一天一套题,当然是这题必须有所收获的前提下,等再刷一个星期恢复一下状态,就该从cf题库出发了,看了一下大致自己能冲一下的是三四千人做出来,还有1700差不多,先把这些题整明白