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个折扣的时候,你必须 ...
随机推荐
- oracle 监听 添加ip
同时修改tnsnames.ora.listener.ora将这两个文件中HOST后面的主机都修改为127.0.0.1然后重启OracleServiceXE.OracleXETNSListener服务 ...
- 故障 -> nginx启动失败
描述:在用saltstack给 minion 安装 nginx 服务 时 提示 nginx 服务下载成功,但是启动失败. ---------- ID: nginx-systemctl Function ...
- (常用)re模块
re模块(正则)#re:一些带有特殊含义的符号或者符号的组合#为什么要用re:一堆字符串中找到你所需要的内容,过滤规则是什么样,通过re模块功能来告诉计算机你的过滤规则#应用:在爬虫中最为常用:使用爬 ...
- dellR720服务器设置光盘引导流程安装cenos7
1.开机,按F10,进入系统引导界面,选择加载系统选项,并选择redhat 7.1选项 系统提示不支持,选择仍然继续,根据提示设置BIOS设置启动,重启 2.根据提示按F11进入BIOS启动设置,选择 ...
- selenium python2.7安装配置
1:安装python python2.7版本(最新的python版本是3.4,但用户体验没有2.7版本的好,我们选择用2.7版本) 下载地址:https://www.python.org/downlo ...
- [java]用md5来判断两个文件是否完全相同
1. 前言 由于相比较两张图片是否是相同,如果通过像素点比较感觉速度比较慢,当很多图片进行比较时,效率就低很多了.由于每个文件md5基本上是唯一的,所以用获取文件的md5来判断是否相同文件. 2. 代 ...
- vw 解决方案
vw 解决方案 1. 安装并配置PostCss插件 复制代码代码如下: npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-w ...
- 【转载】JavaScript中的属性:如何遍历属性
转载自:http://www.cnblogs.com/ziyunfei/archive/2012/11/03/2752905.html 在JavaScript中,遍历一个对象的属性往往没有在其他语言中 ...
- vue之导入Bootstrap以及jQuery的两种方式
Vue引入bootstrap主要有两种方法 方法一:在main.js中引入,此方法导入的bootstrap中对于html,body的一些预设置的css样式可能无效. 一.引入jQuery 在当前项目的 ...
- 20165203 《网络对抗技术》week1 Kali的安装与配置
20165203 <网络对抗技术>week1 Kali的安装与配置 本人感觉Kali可以做很多有意思的事情,下面是本人的Kali的安装过程. 安装过程 光盘映像文件的下载 登录官网,选择下 ...