Codeforces Round 905 (Div. 3)ABCDEF

Codeforces Round 905 (Div. 3)

目录

  • A. Morning
    • 题意
    • 思路
    • 核心代码
  • B. Chemistry
    • 题意
    • 思路
    • 核心代码
  • C. Raspberries
    • 题意
    • 思路
    • 核心代码
  • D. In Love
    • 题意
    • 思路
    • 核心代码
  • E. Look Back
    • 题意
    • 思路
    • 核心代码

A. Morning

在这里插入图片描述

题意

从一开始,每一次操作可以选择当前的数字打印或者是移动到左右相邻的数字,具体排列看上图,给出一个标签四位数,求打印出来的操作次数

思路

求相邻两个数字之间的距离差累加

核心代码

void solve()
{
    string s;
    cin>>s;
    int ans=0;
    if(s[0]=='0')s[0]+=10;
    ans=abs(s[0]-'1');
    for(int i=1;i<4;++i)
    {
        if(s[i]=='0')s[i]+=10;
        ans+=abs(s[i]-s[i-1]);
    }
    ans+=4;
    cout<<ans<<endl;
}

B. Chemistry

在这里插入图片描述

题意

给你一个长度为n的字符串以及可以删除的字符个数k,询问删除之后重新排列能否构成回文字符串

思路

要想构成回文字符串所有的字母出现的次数都要是偶数,除了最中间的那一个字母可以是出现奇数次。然后是删除的k次,如果k大于原字符串中出现奇数次数的字母个数,那么后面多余的次数就可以去删除出现偶数次的字母,最后一定能够构成回文字符串,k不够大的话那就不能构成了

核心代码

void solve()
{
    int n,k;
    scanf("%d%d",&n,&k);
    string s;
    cin>>s;
    int len=s.size();
    int arr[26]{};
    for(int i=0;i<len;++i)
    {
        arr[s[i]-'a']++;
    }
    int geshu=0;
    int sum=0;
    for(int i=0;i<26;++i)
    {
        if(arr[i]&1)geshu++;
        sum+=arr[i];
    }
    if(geshu<=k+1)printf("YES\n");
    else printf("NO\n");
}

C. Raspberries

在这里插入图片描述

题意

给你一组长度为n的数组,以及一个整数k,每一次可以对数组里面的任意一个数字进行加一操作,问最少执行多少次可以使得这个数组里面所有的数字的乘积是k的倍数

思路

如果k是质数,那么我们只需要满足这个数组里面有一个数字是k的倍数就可以了,可以对每一个数字进行枚举找最小的那一个,但是如果是合数怎么操作呢,本题只有一个合数4,单独进行特判就可以了

核心代码

void solve()
{
    int n,k;
    scanf("%d%d",&n,&k);
    int minzhi=INT_MAX;
    int input;
    int oushu=0;
    int jishu=0;
    for(int i=0;i<n;++i)
    {
        scanf("%d",&input);
        if(input&1)jishu++;
        else oushu++;
        if(input%k==0)minzhi=0;
        else minzhi=min(minzhi,k-input%k);
    }
    if(k!=4)
    {
        printf("%d\n",minzhi);
        return ;
    }
    if(oushu>=2)printf("0\n");
    else if(oushu==1&&jishu>=1)printf("%d\n",min(minzhi,1));
    else if(oushu==1&&jishu==0)printf("%d\n",min(minzhi,2));
    else if(oushu==0&&jishu>=2)printf("%d\n",min(minzhi,2));
    return ;
}

D. In Love

在这里插入图片描述

题意

每一次增加一个边或者减少一个边,操作完之后询问是否存在一对不重合的边

思路

如果存在一对不重合的边,那么必然存在一条边的右端点小于一条边的左端点,我们只需要看最小的右端点是否小于最大的左端点即可

核心代码

void solve()
{
    int n;
    cin>>n;
    multiset<int>l,r;
    for(int i=0;i<n;++i)
    {
        char a;
        int x,y;
        cin>>a>>x>>y;
        if(a=='+')
        {
            l.insert(x);
            r.insert(y);
        }
        else
        {
            l.erase(l.find(x));
            r.erase(r.find(y));
        }
        if(l.size() > 1 && *r.begin() < *l.rbegin())printf("YES\n");
        else printf("NO\n");
    }
}

E. Look Back

在这里插入图片描述

题意

给你一组长度为n的数组,每一次可以选择一个数组乘以2,最少需要多少次可以使得这个数组变成一个非递减数组

思路

只需要从前往后进行贪心枚举就可以了,但是这个题目数据量有点大,不能直接存储每一个数字变化之后的数字,需要转化一下,比如我们可以通过前后两个数字的大小倍数关系来求

核心代码

void solve()
{
    int n;
    scanf("%d",&n);
    long long a=0,b;
    long long ans=0;
    long long num=0;
    long long bei=0;
    scanf("%lld",&a);
    for(int i=1;i<n;++i)
    {
        scanf("%lld",&b);
        if(b>a)
        {
            int a2=a;
            while(a2<=b&&a2!=0)
            {
                a2<<=1;
                num--;
            }
            num++;
            num=num>0?num:0;
            ans+=num;
            a=b;
            continue;
        }
        else if(a==b)
        {
            ans+=num;
            continue;
        }
        else
        {
            int b2=b;
            while(b2<a)
            {
                num++;
                b2<<=1;
            }
            ans+=num;
            a=b;
        }
    }
    printf("%lld\n",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/106557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 + Tsx 集成 ace-editor编辑器

Ace Editor介绍 Ace Editor&#xff08;全名&#xff1a;Ajax.org Cloud9 Editor&#xff09;是一个开源的代码编辑器&#xff0c;旨在提供强大的代码编辑功能&#xff0c;通常用于构建基于Web的代码编辑应用程序。它最初由Cloud9 IDE开发&#xff0c;现在由开源社区维护。 主…

C++ 左值、右值、左值引用以及右值引用

一、左值和右值 将亡值 1.左值 左值是一个表示数据的表达式&#xff0c;比如&#xff1a;变量名、解引用的指针变量。一般地&#xff0c;我们可以获取它的地址和对它赋值&#xff0c;但被 const 修饰后的左值&#xff08;常性&#xff09;&#xff0c;不能给它赋值&#xff0…

【安装tensorflow-CPU版本】

一、安装目的二、安装过程三、总结 一、安装目的 使自己的jupyter能用tensorflow 二、安装过程 首先打开anaconda prompt 接着输入conda list 查看自己是否安装了tensorflow 在 Python 中使用 pip 工具来升级 pip 自身并指定了使用清华大学的镜像源进行安装 python -m pip …

手写Vue渲染器render函数

使用js对象来描述UI更加的灵活。“这种对象”在vue框架中被称为虚拟DOM&#xff0c;渲染函数内部可以创建虚拟DOM&#xff0c;然后vue.js可以将其内容进行渲染。 1.渲染器的介绍 渲染器的作用就是把虚拟DOM渲染为真实DOM 思考下&#xff0c;我们有一个虚拟 DOM&#xff0c;如…

K8s概念汇总-笔记

目录 1.Master 1.1在Master上运⾏着以下关键进程 2.什么是Node? 1.2在每个Node上都运⾏着以下关键进程 3.什么是 Pod ? 4. 什么是Label &#xff1f; 5.Replication Controller 6.Deployment 6.1Deployment的典型场景&#xff1a; 7.Horizontal Pod Autoscaler TODO…

【计算机毕设小程序案例】基于SpringBoot的小演员招募小程序

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 &#x1f449;IT源码社-SpringBoot优质案例推荐&#x1f448; &#x1f449;IT源码社-小程序优质案例…

Linux mkdir命令:创建目录(文件夹)

mkdir 命令&#xff0c;是 make directories 的缩写&#xff0c;用于创建新目录&#xff0c;此命令所有用户都可以使用。mkdir 命令的基本格式为&#xff1a; [rootlocalhost ~]# mkdir [-mp] 目录名 -m 选项用于手动配置所创建目录的权限&#xff0c;而不再使用默认权限。 -p…

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下&#xff0c;有许多文本编辑器可供选择&#xff0c;每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器&#xff1a; Gedit&#xff1a; 这是Ubuntu默认的文本编辑器&#xff0c;它简单易用&#xff0c;适合基本的文本编辑任务。 安…

银河麒麟v10x86或者arm离线安装服务

银河麒麟v10x86或者arm离线安装服务 最近有个项目&#xff0c;甲方的服务器用的全是国产化服务器银河麒麟&#xff0c;架构是x86的然后也无法连接外网&#xff0c;需要离线安装服务正常思路就是找到离线安装的包&#xff0c;然后拷贝到现场的服务器中进行安装所以问题就在于如…

墨西哥专线相关问题快问快答

随着全球贸易的不断发展&#xff0c;越来越多的企业在寻求更便捷、高效的物流解决方案。墨西哥专线作为一种跨境物流方式&#xff0c;受到了越来越多企业的关注。本文将为您解答关于墨西哥专线的相关问题&#xff0c;帮助您更好地了解和运用这一物流方式。 一、墨西哥专线是什么…

Prompt设计与大语言模型微调

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”&#xff0c;“智能体” 简单概括成以下几个步骤&#xff1a; 预处理文本&#xff1a;ChatGPT的输入文本需要进行预处理。输入编码&#xff1a;ChatGPT将经过预处理…

MySQL 概述 数据库表操作 数据增删改

目录 MySQL概述前言安装与配置MySQL登录与卸载 数据模型概述SQL简介SQL通用语法简介SQL分类 数据库设计(数据库操作)-DDL数据库操作查询数据库 show databases、select database()创建数据库 create database使用数据库 use删除数据库 drop database 图形化工具连接数据库操作数…

zk-Bench:SNARKs性能对比评估工具

1. 引言 JENS ERNSTBERGER等人2023年论文《zk-Bench: A Toolset for Comparative Evaluation and Performance Benchmarking of SNARKs》。 zk-Bench&#xff0c;定位为&#xff1a; 定位为首个公钥密码学性能评估基准测试框架和工具&#xff0c;重点关注通用ZKP系统的实测评…

【Vue3-Flask-BS架构Web应用】实践笔记1-使用一个bat脚本自动化完整部署环境

前言 近年来&#xff0c;Web开发已经成为计算机科学领域中最热门和多产的领域之一。Python和Vue.js是两个备受欢迎的工具&#xff0c;用于构建现代Web应用程序。在本教程中&#xff0c;我们将探索如何使用这两个工具来创建一个完整的Web项目。我们将完成从安装Python和Vue.js到…

ESP8266,手机与电脑之间的TCP通讯

电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端). ESP8266作为客户…

存储器概述

一、存储系统基本概念

垃圾回收系统小程序

在当今社会&#xff0c;废品回收不仅有利于环境保护&#xff0c;也有利于资源的再利用。随着互联网技术的发展&#xff0c;个人废品回收也可以通过小程序来实现。本文将介绍如何使用乔拓云网制作个人废品回收小程序。 1. 找一个合适的第三方制作平台/工具&#xff0c;比如乔拓云…

正点原子嵌入式linux驱动开发——RGB转HDMI

目前大多数的显示器都提供了HDMI接口&#xff0c;HDMI的应用范围也越来越广&#xff0c;但是STM32MP157这颗芯片原生并不支持HDMI显示。可以通过RGB转HDMI芯片将RGB信号转为HDMI信号&#xff0c;这样就可以连接HDMI显示器了。本章就来学习一下如何在正点原子的STM32MP1开发板上…

javascript错误处理和调试工具

目录 错误处理 try-catch语句 throw语句 Promise错误处理 调试工具 控制台打印 断点调试器 错误堆栈追踪 结论 1. 错误处理 2. 调试工具 3. 最佳实践和注意事项 结论 错误处理 try-catch语句 try-catch语句是处理JavaScript错误的基本方法。它允许我们尝试执行可…

Macos视频增强修复工具:Topaz Video AI for mac

Topaz Video AI是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等等。 使用Topaz Video AI非常简单&#xff0c;…
最新文章