Codeforces Round 903 (Div. 3)ABCDE

news2024/11/26 17:34:33

Codeforces Round 903 (Div. 3)ABCDE

目录

  • A. Don't Try to Count
    • 题目大意
    • 思路
    • 核心代码
  • B. Three Threadlets
    • 题目大意
    • 思路
    • 核心代码
  • C. Perfect Square
    • 题目大意
    • 思路
    • 核心代码
  • D. Divide and Equalize
    • 题目大意
    • 思路
    • 核心代码
  • E. Block Sequence
    • 题目大意
    • 思路
    • 核心代码

A. Don’t Try to Count

在这里插入图片描述

题目大意

分别给你两个字符串 s s s x x x,可以对 x x x进行复制操作, x = x + x x=x+x x=x+x,如果可以通过这样的操作使得 s s s字符串成为字符串 x x x的子串,询问操作的次数

思路

首先, s s s想要成为 x x x的子串,首先 x x x的长度要大于等于 s s s的长度。
其次,如果 x x x已经大于或等于 s s s的长度了,有可能会出现“abcdefg”和“gabcdef”的情况,此时我们需要再操作一次,后面无论再如何操作都无法达成题意

核心代码

void solve()
{
    int n,m;
    cin>>n>>m;
    string s,p;
    cin>>s>>p;
    int cnt=0;
    while(n<m)
    {
        s=s+s;
        n<<=1;
        cnt++;
    }
    for(int i=0;i<n;++i)
    {
        bool pd=1;
        for(int j=i;j<i+m;++j)
        {
            if(s[j]!=p[j-i])
            {
                pd=0;
                break;
            }
        }
        if(pd)
        {
            cout<<cnt<<endl;
            return ;
        }
    }
    s=s+s;
    n<<=1;
    cnt++;
    for(int i=0;i<n;++i)
    {
        bool pd=1;
        for(int j=i;j<i+m;++j)
        {
            if(s[j]!=p[j-i])
            {
                pd=0;
                break;
            }
        }
        if(pd)
        {
            cout<<cnt<<endl;
            return ;
        }
    }
 
 
    cout<<-1<<endl;
}

B. Three Threadlets

在这里插入图片描述

题目大意

给你三个绳子长度,均为整数,每一次可以把一个绳子剪断成两个整数长度,最多减三次,询问这三个长度的绳子最后能否剪成所有的绳子长度相同

思路

最后长度相同,假设都为1,反过来进行两两相加操作可以得到能实现的比例,情况不多直接全部枚举就好,能实现的比例如下:
在这里插入图片描述

核心代码

void solve()
{
    long long a,b,c;
    cin>>a>>b>>c;
    if(a>b)swap(a,b);
    if(a>c)swap(a,c);
    if(b>c)swap(b,c);
    if(a*1==b*1&&b*4==c*1)cout<<"YES\n";
    else if(a*2==b*1&&b*3==c*2)cout<<"YES\n";
    else if(a*1==b*1&&b*1==c*1)cout<<"YES\n";
    else if(a*1==b*1&&b*3==c*1)cout<<"YES\n";
    else if(a*2==b*1&&b*1==c*1)cout<<"YES\n";
    else if(a*1==b*1&&b*2==c*1)cout<<"YES\n";
    else cout<<"NO\n";
}

C. Perfect Square

在这里插入图片描述

题目大意

有一个边长为偶数n的正方形字母矩阵,每一次操作可以使得一个字母向后加一,“z”之后再加就不变了,现在想要把这个方阵变成顺时针旋转90°也能和原来一样的方阵,询问最少需要操作多少次

思路

旋转之后和原来一样,假设一个字母在左上角,则可以找到右上角、左下角、右下角都会有一个对应的点,这四个点的值应该是一样的,也就是我们需要把这对应的四个点都操作为原本这四个点中的最大值,对于左上角的所有点都这样找对应关系、求操作次数即可

核心代码

void solve()
{
    int n;
    cin>>n;
    string s[1010];
    {
        for(int i=0;i<n;++i)
            cin>>s[i];
    }
    long long ans=0;
    for(int i=0;i<n/2;++i)
    {
        for(int j=0;j<n/2;++j)
        {
            int maxzhi=max(s[i][j],max(s[j][n-i-1],max(s[n-j-1][i],s[n-i-1][n-j-1])));
            ans+=maxzhi*4-s[i][j]-s[n-1-i][j]-s[i][n-1-j]-s[n-1-i][n-1-j];
        }
    }
    cout<<ans<<endl;
}

D. Divide and Equalize

在这里插入图片描述

题目大意

给你一个长度为 n n n的数组,每一次选取两个不同位置的数,可以把其中一个数除以它的因数,再把这个因数乘给另一个数,换句话说转化前后这两个数的乘积不变,询问最后这一个数组是否能转化为每一个数都一样

思路

最后每一个数都一样,说明所有的数的乘积后分解质因数,每一个质因数的个数都是 n n n的倍数,所以对于每一个数分解质因数最后统计每一个质因数的个数最后判断是否是 n n n的倍数即可得出答案

核心代码

int primes[N], cnt;
bool st[N];
 
void init(int n)
{
    memset(st, 0, sizeof st);
    cnt = 0;
    for (int i = 2; i <= n; i ++ )
    {
        if (!st[i]) primes[cnt ++ ] = i;
        for (int j = 0; primes[j] * i < n; j ++ )
        {
            st[i * primes[j]] = true;
            if (i % primes[j] == 0) break;
        }
    }
}
 
int zhuanghua(int a)
{
    int left=0,right=cnt;
    while(left<right)
    {
        int mid=left+((right-left)/2);
        if(primes[mid]>a)right=mid;
        else if(primes[mid]==a)return mid;
        else left=mid+1;
        //debug(mid);
    }
    return left;
}
int arr[1000000];
void solve()
{
    int n;
    cin>>n;
 
    memset(arr, 0, 1000000);
    for(int i=0;i<n;++i)
    {
        int x;
        scanf("%d",&x);
        for (int i = 2; i <= x / i; i ++ )
            if (x % i == 0)
            {
                int s = 0;
                while (x % i == 0) x /= i, s ++ ;
                arr[zhuanghua(i)]+=s;
            }
        if (x > 1) arr[zhuanghua(x)]++;
    }
    for(int i=0;i<cnt;++i)
    {
        if(arr[i]%n!=0) {
            cout << "NO\n";
            return;
        }
    }
    cout<<"YES\n";
    return ;
}
 
int main()
{
    int t=1;
    cin>>t;
    init(1000000);
    //cout<<zhuanghua(2);
    while(t--)
    {
        solve();
    }
    return 0;
}

E. Block Sequence

在这里插入图片描述

题目大意

给定一个长度n整数序列,如果一个序列具有一系列块的形式,则称为美丽,每个块都从其长度开始,即首先是块的长度,然后是其元素。在一个操作中,可以从序列中删除任何元素。使给定序列美观所需的最小操作数是多少?

思路

使用动态规划的思想,假设dp[i]为第i的位置前面所有的数字想要成为美丽序列需要几次操作
一共有两种操作,第一种是移除第i位来实现,此时需要操作的次数为dp[i-1]+1
第二种是前面有一个完整的美丽块来实现,这种只能通过前面来推出后面,假设选中第i位为开头,那么后面第 i + a i + 1 i+ai+1 i+ai+1位以前想要成为美丽序列所需要的操作就是 d p [ i + a i + 1 ] = d p [ i ] dp[i+ai+1]=dp[i] dp[i+ai+1]=dp[i]
以上两种情况保留最小值

核心代码

void solve()
{
    int n;
    cin>>n;
    int arr[200005]{};
    int dp[200005]{};
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&arr[i]);
        dp[i]=INT_MAX;
    }
    dp[n+1]=INT_MAX;
    dp[0]=-1;
    for(int i=1;i<=n+1;++i)
    {
        dp[i]=min(dp[i-1]+1,dp[i]);
        if(i+arr[i]+1<=n+1)dp[i+arr[i]+1]=min(dp[i],dp[i+arr[i]+1]);
    }
    cout<<dp[n+1]<<endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【问题解决】【爬虫】抓包工具charles与pycharm发送https请求冲突问题

问题&#xff1a; 开启charles抓包&#xff0c;运行pycharm发送https请求报以下错误 解决&#xff1a; 修改python代码&#xff0c;发送请求时添加verify false&#xff0c;此时charles也能抓取到pycharm发送的请求 2. 关闭charles抓包&#xff0c;取消勾选window proxy

JVM第六讲:JVM 基础 - Java 内存模型引入

JVM 基础 - Java 内存模型引入 很多人都无法区分Java内存模型和JVM内存结构&#xff0c;以及Java内存模型与物理内存之间的关系。本文是JVM第六讲&#xff0c;从堆栈角度引入JMM&#xff0c;然后介绍JMM和物理内存之间的关系, 为后面JMM详解, JVM 内存结构详解, Java 对象模型详…

uniapp封装loading 的动画动态加载

实现效果 html代码 <view class"loadBox" v-if"loading"><img :src"logo" class"logo"> </view> css代码 .loadBox {width: 180rpx;min-height: 180rpx;border-radius: 50%;display: flex;align-items: center;j…

最新版nacos 2.2.3服务注册与发现版本依赖问题

最新版nacos的注册服务时配置文件写的是对的&#xff0c;但就是在nacos web页面无法看见服务&#xff0c;此时你需要注意你的依赖是否正确 spring: application:name: orderservicecloud:nacos:discovery:server-addr: 122.51.115.127:8848父工程依赖&#xff1a;现在最新的s…

046:mapboxGL加载天地图路网图+标记(wmts方式)

第046个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载天地图路网图+标记(wmts方式)。瓦片中的url地址引用的是天地图的wmts的形式。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共99行)相关AP…

Ceph运维笔记

Ceph运维笔记 一、基本操作 ceph osd tree //查看所有osd情况 ceph -s //查看整体ceph情况 health_ok才是正常的 ceph osd out osd.1 //将osd.1踢出集群 ceph osd in osd.1 //将out的集群重新加入集群二、问题解决 1.执行ceph-deploy mon create-initial出错 e…

【Express】服务端渲染(模板引擎 EJS)

EJS&#xff08;Embedded JavaScript&#xff09;是一款流行的模板引擎&#xff0c;可以用于在Express中创建动态的HTML页面。它允许在HTML模板中嵌入JavaScript代码&#xff0c;并且能够生成基于数据的动态内容。 下面是一个详细的讲解和示例&#xff0c;演示如何在Express中…

第四章:IP基本原理

IP基本原理 一、IP的定义二、IP头部封装格式&#xff08;重点&#xff09;2.1 version 版本2.2 IHL 头部长度2.3 Type of service 服务类型2.4 Total length 数据包总长度2.5 identification 标识符2.6 Flags 标志2.7 Fragment offset 分片偏移2.9 Time to Live 生命周期2.10 P…

第五章:TCP和UDP基本原理

TCP和UDP基本原理 一、TCP/IP传输层的作用二、 端口1.范围2. 服务端3. 客户端4. 常见知名端口号4.1 TCP 80 HTTP4.2 TCP 20 21 FTP4.3 TCP 23 TELNET4.4 TCP 25 SMTP4.5 UDP 53 DNS4.6 TCP 443 HTTPS 三、 TCP原理1. TCP头部封装格式1.1 Source Port 源端口1.2 Destination Por…

LCR 095. 最长公共子序列(C语言+动态规划)

1. 题目 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

GTX312L比TSM12更具优势的智能门锁触摸芯片方案

韩国GreenChip&#xff08;绿芯&#xff09;GTX312L是一款高灵敏、超强抗干扰能力具有自动灵敏度校准的12通道电容传感器&#xff0c;电源电压范围为1.8V&#xff5e;5.0V&#xff0c;支持单键/多点触控&#xff1b;采用I2C通信协议&#xff1b;内部控制寄存器可以使用I2C读写接…

SpringMvc源码分析-请求流程(一)

SpringMvc源码分析-从前端到接口请求流程 SpringMvc执行流程 其实SpringMVC请求原理很简单&#xff1a;说白了就是用一个DispatcherServlet 封装了一个Servlet的调度中心&#xff0c; 由调度中心帮我们调用我们的处理方法&#xff1a;在这个过程中调度中心委托给各个组件执行具…

【Nginx32】Nginx学习:随机索引、真实IP处理与来源处理模块

Nginx学习&#xff1a;随机索引、真实IP处理与来源处理模块 完成了代理这个大模块的学习&#xff0c;我们继续其它 Nginx 中 HTTP 相关的模块学习。今天的内容都比较简单&#xff0c;不过最后的来源处理非常有用&#xff0c;可以帮我们解决外链问题。另外两个其实大家了解一下就…

登录中获取验证码的节流

一. 验证码框 <el-input placeholder"请输入验证码" prefix-icon"el-icon-lock" v-model"ruleForm.code"><el-button slot"suffix" :disabled"disabled" type"text" size"mini" click"ch…

树莓派玩转openwrt软路由:5.OpenWrt防火墙配置及SSH连接

1、SSH配置 打开System -> Administration&#xff0c;打开SSH Access将Interface配置成unspecified。 如果选中其他的接口表示仅在给定接口上侦听&#xff0c;如果未指定&#xff0c;则在所有接口上侦听。在未指定下&#xff0c;所有的接口均可通过SSH访问认证。 2、防火…

ideal远程Debug部署在服务器上的服务详解

ideal远程Debug部署在服务器上的服务详解 一 简介二 ideal配置步骤第一步&#xff1a;点击Edit Configurations选项添加远程连接第二步&#xff1a;配置Remote JVM debug参数第三步&#xff1a;服务的启动参数中添加第二步生成的命令并重新启动服务第四步&#xff1a;ideal启动…

联想电脑一键重装系统Win10操作方法

很多用户都会利用重装系统的方法&#xff0c;来解决系统崩溃、病毒感染等问题。但是&#xff0c;很多新手用户不知道联想电脑Win10系统重装的详细方法步骤&#xff0c;下面小编给大家详细介绍关于联想电脑Win10系统重装的操作方法&#xff0c;帮助大家轻松快速地完成系统的重装…

比postman更好用的接口管理软件——Apifox

比postman更好用的接口管理软件——Apifox 官网安装和登录Apifox功能使用团队管理&项目管理接口管理接口文档 Apifox 帮助文档 最近使用了一个好用的中文版接口管理软件&#xff0c;Apifox&#xff0c;以下介绍一下它的使用方式及好处。 官网 Apifox的官方地址&#xff1a…

微服务13-Seata的四种分布式事务模式

文章目录 XA模式实现XA模式 AT模式AT模式的脏写问题&#xff08;对同数据并发写的问题&#xff09;其他事务不获取全局锁的一个情况&#xff08;AT模式写隔离的实现&#xff09;实现AT模式 TCC模式TCC实现我们怎么样去判断是否空回滚和业务悬挂&#xff1f;业务分析 Saga模式总…

C++学习——C++函数的编译、成员函数的调用、this指针详解

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 从博文的分析中可以看出&#xff0c;对象的内存中只保留了成员变量&#xff0c;除此之外没有任何其他信息&#xff0c;程序运行时不知道 stu 的类型为 Student&#xff0c;也不知道它…