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】的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #410 (Div. 2)

    Codeforces Round #410 (Div. 2) A B略..A没判本来就是回文WA了一次gg C.Mike and gcd problem 题意:一个序列每次可以把\(a_i, a_{i ...

  3. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  4. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  5. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  6. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  7. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  8. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  9. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

随机推荐

  1. 使用nginx实现浏览器跨域请求

    跨域访问问题, 相信很多人都遇到过, 并且都用不同的办法去解决过. 方法有很多种, 不一一叙述了. 这里主要使用nginx反向代理来解决跨域问题. 啥是跨域? 假如你是百度开发人员, 在百度页面去请求 ...

  2. sklearn聚类模型:基于密度的DBSCAN;基于混合高斯模型的GMM

    1 sklearn聚类方法详解 2 对比不同聚类算法在不同数据集上的表现 3 用scikit-learn学习K-Means聚类 4 用scikit-learn学习DBSCAN聚类 (基于密度的聚类) ...

  3. Java通过BCrypt加密

    一.概述 在用户模块,对于用户密码的保护,通常都会进行加密.我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否 ...

  4. 恋爱Linux(Fedora20)1——安装开启ssh服务

    1) 安装openssh-server # yum install openssh-server 2) 查看是否已成功安装openssh-server # rpm -qa | grep openssh ...

  5. 在 Win 7或8 下使用 VirtualBOX 虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0

    注:本文源自于: http://bbs.feng.com/read-htm-tid-9908410.html _____________________________________________ ...

  6. win10下vscode配置sftp

    sftp配置 1.在vscode中下载sftp插件 在vscode中快捷键 ctrl+shift+P 打开指令窗口,输入extension:install,回车,左侧即打开扩展安装的界面  在搜索框中 ...

  7. cf1108e 线段树区间更新+扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...

  8. ireport 添加行自增序号

    ireport 添加行自增序号 在ireport报表中加入行的自增序号方法: 添加一个变量,如变量名为 index: 设置变量类型为Integer,计算类型为count:变量表达式为$V{index} ...

  9. 2018-2019-2 网络对抗技术 20165333 Exp1 PC平台逆向破解

    1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同 ...

  10. mydate97时间控件的使用

    mydate97官网: http://www.my97.net/dp/index.asp 1:用法如下所示,首先下载一个这个东西: 链接:http://pan.baidu.com/s/1kVmIckv ...