Codeforces Round #410 (Div. 2) 题解 【ABCD】
A
题意:问你恰好修改一个字符,能不能使得字符串变成回文串
题解:显然直接for一遍,如果长度为偶数,那么不一样的必须是1个;如果长度为奇数,那么不一样的也可以是0个
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
cin>>s;
int tmp = 0;
for(int i=0;i<s.size();i++){
if(s[i]!=s[s.size()-1-i])
tmp++;
}
if(tmp>2||(tmp==0&&s.size()%2==0)){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
}
}
B - Mike and strings
题意:你可以把开头的字符移动到最后去,然后问你最少一共移动多少次,可以使得所有字符都变得一模一样。
题解:显然就直接暴力就好了嘛,数据范围很小。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
string s[maxn];
int n;
int main(){
cin>>n;
int ans = 1e5+7;
for(int i=0;i<n;i++)
cin>>s[i];
for(int i=0;i<s[0].size();i++){
int tmp = i;
string s2 = s[0].substr(i,s[0].size()-i)+s[0].substr(0,i);
for(int j=1;j<n;j++){
int flag = 0;
for(int k=0;k<s[j].size();k++){
string s3 = s[j].substr(k,s[j].size()-k)+s[j].substr(0,k);
if(s3==s2){
flag = 1;
tmp+=k;
break;
}
}
if(flag == 0){
return puts("-1");
}
}
ans = min(ans,tmp);
}
cout<<ans<<endl;
}
C. Mike and gcd problem
题意:你可以操作(i,i+1)使得,a[i],a[i+1]变成a[i]-a[i+1]和a[i]+a[i+1],问你最少操作多少次,可以使得所有数的gcd>1
题解:如果一开始不行的话,那么我们就让gcd等于2就好了,那么就让所有数都变成偶数,如果两个数都是奇数,那么一次就变成了。如果是奇数和偶数,那么得两次。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int n,a[maxn];
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
cin>>a[i];
int tmp = 0;
for(int i=0;i<n;i++){
tmp = gcd(a[i],tmp);
}
if(tmp>1){
cout<<"YES"<<endl;
cout<<"0"<<endl;
return 0;
}
int ans = 0;
for(int i=0;i<n;i++){
if(a[i]%2==1){
if(a[i+1]%2==1){
ans++;
}else
ans+=2;
a[i]=0,a[i+1]=0;
}
}
cout<<"YES"<<endl;
cout<<ans<<endl;
}
D. Mike and distribution
题意:让你选出最多n/2+1个数,出来要求2A[i]和2B[i]都大于数组的和。
题解:显然我们先排序,然后我们两两对比,我们当然是选择第二大的就好了。证明很简单,这里略过。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
pair<int,pair<int,int> >a[maxn];
int n;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i].first),a[i].second.second = i+1;
for(int i=0;i<n;i++)
scanf("%d",&a[i].second.first);
cout<<n/2+1<<endl;
sort(a,a+n);
cout<<a[n-1].second.second<<" ";
for(int i=n-2;i>=0;i-=2){
if(i==0){
cout<<a[i].second.second<<endl;
}else{
if(a[i].second.first>a[i-1].second.first)
cout<<a[i].second.second<<" ";
else
cout<<a[i-1].second.second<<" ";
}
}
}
Codeforces Round #410 (Div. 2) 题解 【ABCD】的更多相关文章
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- Codeforces Round #410 (Div. 2)
Codeforces Round #410 (Div. 2) A B略..A没判本来就是回文WA了一次gg C.Mike and gcd problem 题意:一个序列每次可以把\(a_i, a_{i ...
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- Codeforces Round #525 (Div. 2)题解
Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...
- Codeforces Round #160 (Div. 1) 题解【ABCD】
Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...
随机推荐
- C++:explicit关键字
在C++中,如果一个类的构造函数只有一个形参,在这种情况下,可以直接将一个对应于构造函数参数类型的数据直接赋值给类变量,编译器在编译时会自动进行类型转换,将对应于构造函数参数类型的数据转换为类的对象, ...
- imp高版本的dmp文件报错问题
imp高版本的dmp文件报错问题 导出方:oracle 11R2 www.2cto.com 导入方:oracle 10R2 通过imp导入时提示如下: 解决方法: 通过编 ...
- nagios监控客户端报错/usr/bin/perl^M: bad interpreter: No such file or directory
nagios服务端监控客户端内存时发现监控不上 在客户端直接执行脚本,报错如下: # /usr/local/nagios/libexec/check_memory.pl -w 6% -c 3% -ba ...
- 自定义el标签
编写java代码 package com.ycjk.common; public class FormatJSEltarg { public static String format(String s ...
- Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别
定义和用法 hover() 方法规定当鼠标指针悬停在被选元素上时要运行的两个函数. jQuery 1.7 版本前该方法触发 mouseenter 和 mouseleave 事件. jQuery 1.8 ...
- MyCP(课下作业,必做)
作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...
- LeetCode(55): 跳跃游戏
Medium! 题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1, ...
- html 页内跳转
第一种 <a href="#div1">to div1</a> //跳转链接<div id="div1">div1</ ...
- java 标签编译后没有显示
1.原因现在还不知,试了几个地方可以和不可以 /** * @author feilong */ public class OverLoading { /**@param args put here c ...
- 关系操作符 < > = == <= >= !=
基本类型可以用所有的操作符 对象要用equal eqauls() //用法 System.out.println(v1.equals(v2)); JAVA学习(二) STRING使用EQUALS方法和 ...