05.24 ICPC 2019-2020 North-Western Russia Regional Contest复现赛+Codeforces Round #645 (Div. 2)

Posted bonel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05.24 ICPC 2019-2020 North-Western Russia Regional Contest复现赛+Codeforces Round #645 (Div. 2)相关的知识,希望对你有一定的参考价值。

A.Accurate Movement(复现赛)

题意:两个木块最左边都在0的位置,最右边分别为a,b(b>a),并且短的木条只能在长木条内移动,问两个木条需要移动多少次才能使两个木条的右端都在n

思路:短木条最少移动(n-a)/(b-a),如果(n-a)%(b-a)不为0,那么还需要再多移动一次,才能到达最右边,长木条以此类推

代码:

技术图片
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstdio>
 5 using namespace std;
 6 int main(){
 7     int a,b,n;
 8     scanf("%d %d %d",&a,&b,&n);
 9     int sum=0;
10     if((n-a)%(b-a)==0){
11         sum+=(n-a)/(b-a);
12     }else{
13         sum+=(n-a)/(b-a)+1;
14     }
15     if((n-b)%(b-a)==0){
16         sum+=(n-b)/(b-a);
17     }else{
18         sum+=(n-b)/(b-a)+1;
19     }
20     printf("%d
",sum);
21 }
View Code

 

A. Park Lighting(#645)

题意:安放路灯在棱上,可以点亮以这条楞为公共线的正方形小块上,问需要多少个灯才能点亮整个大矩形,输入为大矩形的场合宽

思路:直接判断矩形个数是不是偶数,如果是,那么就可以用(长×宽)/2,如果不是,就是需要额外的一个点亮剩下的一个

代码:

技术图片
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 using namespace std;
 6 int main(){
 7     int t;
 8     scanf("%d",&t);
 9     while(t--){
10         int a,b;
11         scanf("%d %d",&a,&b);
12         if((a*b)%2==1){
13             printf("%d
",a*b/2+1);
14         }else{
15             printf("%d
",a*b/2);
16         }
17     }
18 }
View Code

 

B. Maria Breaks the Self-isolation

题意:起初院子中一个老奶奶,然后它可以喊任意个其他的老奶奶,但是这些老奶奶出现的要求是,当她出现时必须看到除她以外的a[i]个人,判断院子中最多可以喊多少个老奶奶

思路:采用优先队列,从需要看见人数最多的老奶奶开始,如果这个数小于1加上院子中可进去的人数(先假设同时间去),那么就说明可以同时来,如果大于,也就是说即使同一时间进去也不能满足最后一个老奶奶,然后出栈(为了变化top)

wa掉的/注意的:1.需要从最大到最小遍历,因为这样能知道确切的这个人是不是进的去进不去,这样一来需要思考的变化因素就很少,不用天南海北的进行纠结到底怎么选;2.其实这种做法有种第一次打电话就给所有的人打电话,从最后向前遍历,找到是不是真的可以满足,每个人都开心的进院子;3.一定出栈进行变换top;4.我不知道我为什么用sort就超时了,用优先队列就不超时

代码:

技术图片
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<queue>
 6 using namespace std;
 7 int main(){
 8     int t;
 9     scanf("%d",&t);
10     while(t--){
11         int r,n;
12         scanf("%d",&n);
13         priority_queue<int> a;
14         for(int i=0;i<n;i++){
15             scanf("%d",&r);
16             a.push(r);
17         }
18         int s=0,m=n;
19  
20         for(int i=0;i<n;i++){
21             if(a.top()<1+m){
22                 s++;
23             }else{
24                 m--;
25             }
26             a.pop();
27         }
28         printf("%d
",s+1);
29     }
30 }
View Code

 

我实在是太菜了,导致我最近做的题不是很多,但是时间话得特别长,还是应该偶尔看看算法书,只靠思维题是不行了,而且有的思维题读题真的好麻烦,最近专业课落得好多,绝望!!!

以上是关于05.24 ICPC 2019-2020 North-Western Russia Regional Contest复现赛+Codeforces Round #645 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

2019-2020 ICPC Southwestern European Regional Programming Contest (SWERC 2019-2020)

2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror, ICPC Rules, Teams

2019-2020 ICPC, Asia Jakarta Regional Contest

2019-2020 ICPC, Asia Jakarta Regional Contest C. Even Path

2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest

2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings