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 }
View Code

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 }
View Code

C题不知道为什么能看懂题意,大概知道基本的想法,是真的敲不下去,可能是从考试周到现在一直就没有敲代码,导致那时候突然敲代码,脑子一锅粥,就一个题读题也很长时间,想思路更是一锅粥,没有主要的想法,一个路子稍微走不通就想着换路子,没有当时那种状态,主要还是刷题就不能断,而且做题的时候一定得有一个好的状态,这样才是很大程度的提升,每天就基本保持在至少一天一套题,当然是这题必须有所收获的前提下,等再刷一个星期恢复一下状态,就该从cf题库出发了,看了一下大致自己能冲一下的是三四千人做出来,还有1700差不多,先把这些题整明白

posted @ 2021-01-28 10:00  bonel  阅读(66)  评论(0)    收藏  举报