首页 > 代码库 > Codeforces Round #410 (Div. 2)

Codeforces Round #410 (Div. 2)

A题

分析:把串反转,判不一样的个数,不同个数恰好为2个或者为0个且串的长度为奇数就输出YES,否则为NO

技术分享
 1 #include "iostream"
 2 #include "cstdio"
 3 #include "cmath"
 4 #include "cstring"
 5 using namespace std;
 6 string s;
 7 void Rev(string &str){
 8     int i=0,j=str.length()-1;
 9     while(i<j){
10         swap(str[i],str[j]);
11         i++,j--;
12     }
13 }
14 int main()
15 {
16     while(cin>>s){
17         string p="";
18         for(int i=0;i<s.length();i++)
19             p+=s[i];
20         Rev(p);
21         int cnt=0;
22         int n=s.length();
23         for(int i=0;i<n;i++){
24             if(s[i]!=p[i])
25                 cnt++;
26         }
27         if(cnt==2||((n%2)&&cnt==0))
28             cout<<"YES"<<endl;
29         else
30             cout<<"NO"<<endl;
31     }
32 }
View Code

B题

C题

分析:如果gcd>1则直接输出YES,0.否则其他情况,我们考虑把他全变成偶数所需要的最少操作。如果a[i],a[i+1]全是奇数,则只需要一次操作即可,如果a[i],a[i+1]一奇一偶,则需要两次变化,最后直接统计即可。

技术分享
 1 #include "iostream"
 2 #include "cstdio"
 3 #include "algorithm"
 4 #include "cstring"
 5 using namespace std;
 6 const int maxn=100000+10;
 7 long long a[maxn],b[maxn];
 8 int n;
 9 long long gcd(long long a,long long b){
10     if(b==0)  return a;
11     return gcd(b,a%b);
12 }
13 int main()
14 {
15     while(cin>>n)
16     {
17         cin>>a[0]>>a[1];
18         long long g=gcd(a[0],a[1]);
19         for(int i=2;i<n;i++){
20             cin>>a[i];
21             g=gcd(g,a[i]);
22         }
23         if(g>1){
24             cout<<"YES"<<endl;
25             cout<<"0"<<endl;
26             continue; 
27         }
28         long long cnt=0;
29         for(int i=0;i<n-1;i++){
30             if(a[i]%2==0)  continue;
31             if((a[i]%2)&&(a[i+1]%2)){
32                 a[i]=2,a[i+1]=2;
33                 cnt++;
34                 continue;
35             }
36             cnt+=2;
37             a[i]=2,a[i+1]=2;
38         }
39         if((a[n-2]%2==0)&&(a[n-1]%2))
40             cnt+=2;
41         cout<<"YES"<<endl;
42         cout<<cnt<<endl;
43     }
44 }
View Code

 

Codeforces Round #410 (Div. 2)