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

Codeforces 1011 (Div. 2)A. Serval and String Theory

目录

题意简述:

思路明确:

总代码: 

https://codeforces.com/contest/2085/problem/A

题意简述:

题目给定一个字符串,并给定一个操作,以及可以执行操作的限定次数,该操作是任选两个下标,交换对应的字符,最后判断能否在操作限次次数下保证该字符串小于其翻转字符串(reverse),可以输出YES else输出NO;

思路明确:

首先我们要明确一件事,就是所选下标可以相同,也就是说不强制交换两个不同的数,在换句话说就是给定的操作次数可以不用;

知道了这一点那这个题就很easy了,先判断该字符串内的字符是不是都是相同字符,如果是那直接输出NO就行,因为无论怎么改也不会使其符合条件;再判断该字符串本身是不是不用修改就已经小于其翻转字符串了?如果本身小于直接YES;最后在根据k的值,只要k>=1那么直接输出YES否则输出NO即可(可以这么理解:不对原数组进行操作,先把原数组翻转,对翻转数组进行修改操作,目前是原数组大于翻转数组,但只要对翻转数组进行一次修改就能使得原数组小于翻转数组)

总代码: 

#include <bits/stdc++.h>
using namespace std;
int main() {
    int t;
    cin >> t;
    while (t--) {
        int n, k;
        string s;
        cin >> n >> k >> s;
        map<char,int>cc;
        for(auto x:s)
        {
			cc[x]++;
		}
		if(cc.size()==1)
		{
			cout << "NO" << endl;
		}else{
        string rev_s = s;
        reverse(rev_s.begin(), rev_s.end());
//翻转函数,两个参数是指针
        if (s < rev_s) {
            cout << "YES\n";
        } else {
                cout << (k >= 1 ? "YES\n" : "NO\n");
            }
        }
        
    }
    return 0;
}

相关文章:

  • vue+webpack5(高级配置)
  • fluent_UDF学习笔记
  • 进程间通信——信号量
  • git 如何统计还尚未合并完成的文件
  • UE4学习笔记 FPS游戏制作31 显示计分板
  • flex和bison笔记
  • 2025最新“科研创新与智能化转型“暨AI智能体开发与大语言模型的本地化部署、优化技术实践
  • 【MySQL基础-14】MySQL的INSERT语句详解:高效数据插入的艺术
  • 数据特征的判断
  • 机器学习算法
  • mysql不能远程访问可能有哪些原因,及如何解决
  • ubuntu 创建新用户
  • 权值线段树算法讲解及例题
  • 性能测试理论基础-测试流程及方案设计要点
  • 内联函数/函数重载/函数参数缺省
  • 211 本硕研三,已拿 C++ 桌面应用研发 offer,计划转音视频或嵌入式如何规划学习路线?
  • 前端框架入门:Angular
  • Flutter中实现拍照识题的功能
  • Starrocks架构及如何选择
  • 60V单通道高精度线性恒流LED驱动器防60V反接SOD123封装
  • 遭“特朗普关税”冲击,韩国今年经济增长预期“腰斩”降至0.8%
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • 微软将裁员3%,减少管理层
  • 西北大学副校长成陕西首富?旗下巨子生物去年净利超20亿,到底持股多少
  • 持续8年仍难终了的纠纷:败诉方因拒执罪被立案,胜诉方银行账户遭冻结
  • 老人将房产遗赠给外孙,三个女儿却认为遗嘱应无效,法院判了