Educational Codeforces Round 102 (Rated for Div. 2)

A. Replacing Elements

题意:就是有一组数,然后数组中的数可以这样变换:Ai+Aj=Ak,通过这样的变换可以让数组中的数字变化,然后题目中给定d,问通过数组中这样的变换是不是可以全部元素小于等于d

思路:满足条件的有两种情况:1)最小的两个数加和小于等于d;2)全部元素相等,都等于d,这样的话,进行标记,看看是满足哪个条件,满足的话输出YES,不满足的话输出NO

代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 int main(){
 8     int t;
 9     scanf("%d",&t);
10     while(t--){
11         int n,m;
12         scanf("%d %d",&n,&m);
13         int a[3000]={0};
14         int flag=0;
15         for(int i=0;i<n;i++){
16             scanf("%d",&a[i]);
17             if(a[i]<=m){
18                 flag++;
19             }
20         }
21         sort(a,a+n);
22         if(flag==n){
23             printf("YES\n");
24         }else if(a[0]+a[1]<=m){
25             printf("YES\n");
26         }else{
27             printf("NO\n");
28         }
29     }
30 }
View Code

B.String LCM

题目:题目中给定两个字符串,由这两个字符串循环构成的最小公共字符串是什么,所谓构成就是'ababab'可以由‘ab'构成,不能由’aa'构成,如果没有最小的公共字符串,那么输出-1

思路:先根据长度找到这个最小的公共字符串可能是什么,主要是满足两个条件,一个是找到的这个最小单位,既能组成所给的字符串,也能组成最小的公共字符串,那么就应用到长度的最小公倍数m去找,如果第一个字符串循环构成长度为m的字符串是不是和第二个字符串构成的相同

当时忽略掉的点:1)当时只想是不是和二进制数有关系,发现这种包含只是形式上的包含,表面上看着有就是有,没有就是没有;2)又想这个怎么找到构成两个字符串的最小字符串,想着比较他们是不是一样;3)应该考虑到固定长度内变化的,可以先让他们变化出来可能更简单,然后再进行比较

代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 int main(){
 8     int t;
 9     scanf("%d",&t);
10     while(t--){
11         char s1[50],s2[60];
12         cin>>s1;
13         cin>>s2;
14         int len1=strlen(s1);
15         int len2=strlen(s2);
16         int mid=len1*len2/(__gcd(len1,len2));
17         string s="";
18         for(int i=0;i<mid/len1;i++){
19             s+=s1;
20         }
21         string ss="";
22         for(int i=0;i<mid/len2;i++){
23             ss+=s2;
24         }
25  
26         if(s==ss){
27             cout<<s<<endl;
28  
29         }else{
30             printf("-1\n");
31         }
32  
33     }
34 }
View Code

感想:进了复习周就没有好好的整过cf的题,更没有好好的敲打代码,现在重新收拾起来觉得真的有点力不从心,看第一题的题目理解都要半天,看来现在必须得每天刷题才能重新回到之前的状态,才能更好的学习一些算法知识

 

posted @ 2021-01-23 14:31  bonel  阅读(62)  评论(0)    收藏  举报