当前位置: 首页 > news >正文

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<<" ";
        }
    }
}

相关文章:

  • 《Java程序员面试秘笈》—— 面试题3 Linux操作系统下如何安装Java SE开发环境
  • 《好学的C++程序设计》——2.3 循址访问是怎样的
  • 《Adobe Fireworks CS5中文版经典教程》——1.5 使用多个文档
  • 《Android 应用案例开发大全(第3版)》——第2.6节绘制相关类
  • 《编写高质量代码:改善c程序代码的125个建议》——建议14-4:尽量避免在同一个数据上执行位操作与算术运算...
  • 《51单片机应用开发范例大全(第3版)》——1.4 【实例19】P1口控制直流电动机实例...
  • 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——2.3 本章小结...
  • 《Adobe Photoshop CS6中文版经典教程(彩色版)》—第1课1.1节开始在Adobe Photoshop中工作...
  • MySQL 大数据量快速插入方法和语句优化
  • 《C++入门经典(第5版•修订版)》——6.8 作业
  • 《Adobe Premiere Pro CC经典教程(彩色版)》——1.4 Premiere Pro界面概述
  • 《树莓派开发实战(第2版)》——2.4 为树莓派配置网络名称
  • 《实施Cisco统一通信管理器(CIPT2)》一1.5 可用性方面面临的挑战
  • 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一2.4 淘代销
  • 《社会智能与综合集成系统》—第1章1.1节认知科学的发展
  • C++入门教程(10):for 语句
  • create-react-app项目添加less配置
  • Fundebug计费标准解释:事件数是如何定义的?
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java应用性能调优
  • Js基础知识(四) - js运行原理与机制
  • js面向对象
  • JS实现简单的MVC模式开发小游戏
  • Laravel 菜鸟晋级之路
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Python - 闭包Closure
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • spark本地环境的搭建到运行第一个spark程序
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring Cloud中负载均衡器概览
  • WebSocket使用
  • 从零开始的无人驾驶 1
  • 大整数乘法-表格法
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 小试R空间处理新库sf
  • 延迟脚本的方式
  • 你对linux中grep命令知道多少?
  • ​Python 3 新特性:类型注解
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #100天计划# 2013年9月29日
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (定时器/计数器)中断系统(详解与使用)
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (一)u-boot-nand.bin的下载
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .net CHARTING图表控件下载地址
  • .net core控制台应用程序初识
  • .Net IE10 _doPostBack 未定义
  • .net 发送邮件
  • .Net语言中的StringBuilder:入门到精通