Codeforces Round 879 Div.2

news2025/1/5 10:51:46

文章目录

    • A. Unit Array
    • B. Maximum Strength
    • C. Game with Reversing
    • D. Survey in Class
    • E. MEX of LCM

A. Unit Array

Problem - A - Codeforces
image.png

统计-1的数量cnt,当cnt为奇数或者n-cnt-cnt < 0(1的数量小于-1的数量)时,ans++,cnt–

#include <iostream>
using namespace std;

const int N = 110;
int T, a[N];

int main()
{
    cin >> T;
    while ( T -- )
    {
        int n, cnt = 0, ans = 0;
        cin >> n;
        for (int i = 0; i < n; ++ i ) 
        {
            cin >> a[i];
            if (a[i] == -1) cnt ++ ;
        }
        while (cnt & 1 || n - cnt - cnt < 0) cnt -- , ans ++ ;
        cout << ans << endl;
    }
    return 0;
}

B. Maximum Strength

Problem - B - Codeforces
image.png

给定最大最小值范围,计算每个数位之差,使之最大
最小值的第i位,增大到0,最大值的第i位减小到0,此时数位差最大
什么情况下不能进行以上构造?两串长度相同(不同时用前导零填充),从左往右遍历时,若前缀相同,则不能进行构造,数位差为 ∣ s [ i ] − t [ i ] ∣ |s[i] - t[i]| s[i]t[i]。只要前缀不同,就能进行构造
比如:1234, 0244,一开始默认前缀相同,数位差为1,之后就能构造出3个9
即1000和0999
1234,1244,直到第4位时前缀才不同,数位差为:0+0+1,最后构造一个9
即1230和1249

#include <iostream>
#include <string>
using namespace std;

int T;
string down, up;

int main()
{
    cin >> T;
    while ( T -- )
    {
        cin >> down >> up;
        int di = 0, ui = 0, ans = 0;
        bool flag = true; // 前缀是否相等
        down = string(up.size() - down.size(), '0') + down;
        
        for (; di < down.size(); ++ di, ++ ui )
        {
            if (flag) 
            {
                ans += abs(up[ui] - down[di]);
                if (up[ui] != down[di]) flag = false;
            }
            else ans += 9;
        }
        cout << ans << endl;
    }
    return 0;
}

C. Game with Reversing

Problem - C - Codeforces
image.png

看起来是一道博弈论的题,有些不敢做,但是分析之后就会发现这和博弈论没啥关系
A每次修改t串中的一个字符,使之最终等于s串
B每次会反转t串或s串,不可以不反转

假设只有A进行操作,统计t和s不同字符个数cnt,cnt次之后两串相等。若B进行了操作,无论B反转s还是t,反转偶数次等价于没有反转
cnt = 1, ans = 1,A先修改
cnt = 2, ans = 4,A先修改,B反转,A再修改,此时两串反转后才相等,所以需要等B反转
cnt = 3, ans = 5
cnt = 4, ans = 8
发现规律,若cnt为偶数,ans为2 * cnt,cnt为奇数,ans为2 * cnt - 1
注意,cnt指的是没有反转t串时,t和s的不同字符
若反转t串后,两者的不同字符小于反转前,情况又不一样
样例:
hello
olleo
此时再找相应的规律即可

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int T, n;
string s, t;

int main()
{
    cin >> T;
    while ( T -- )
    {
        int cnt1 = 0, cnt2 = 0;
        cin >> n >> s >> t;
        for (int i = 0; i < s.size(); ++ i ) if (s[i] != t[i]) cnt1 ++ ;
        reverse(t.begin(), t.end());
        for (int i = 0; i < s.size(); ++ i ) if (s[i] != t[i]) cnt2 ++ ;
        int cnt = min(cnt1, cnt2);
        if (cnt == 0) printf("%d\n", 0 + cnt1 ? 2 : 0);
        else if (cnt & 1) printf("%d\n",cnt * 2 - (cnt1 <= cnt2));
        else printf("%d\n", cnt * 2- (cnt2 <= cnt1));
    }
    return 0;
}

D. Survey in Class

Problem - D - Codeforces
image.png

给定m个闭区间,区间中所有数的范围在1~n之间,从1~n之间选择一些数作为集合s。若集合s中的数出现在区间中,则区间得分+1,否则区间得分-1
问区间的得分最大与得分最小值的最大差值为多少?
考虑如何构造得分最高的区间,选择区间中的所有数作为集合s即可,此时考虑得分最小的区间是怎样的?让集合s中的数尽可能地不在该区间中,那么该区间的得分最低
构造最高得分区间时分情况讨论:

  1. 右端点最小的区间
  2. 左端点最大的区间
  3. 在该区间中,区间长度最小的区间

如下图,在三种情况中取阴影部分最大的情况,遍历所有区间,将每个区间都构造成得分最高区间,取所有情况的最大值
image.png

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 2e5 + 10;
int T, n, m;
int l[N], r[N];

int main()
{
    cin >> T;
    while ( T -- )
    {
        cin >> n >> m;
        int rmin = 0x3f3f3f3f, lmax = 0, lenmin = 0x3f3f3f3f;
        for (int i = 0; i < n; ++ i )
        {
            cin >> l[i] >> r[i];
            rmin = min(rmin, r[i]);
            lmax = max(lmax, l[i]);
            lenmin = min(lenmin, r[i] - l[i] + 1);
        }
        int ans = 0;
        for (int i = 0; i < n; ++ i )
            ans = max({ans, r[i] - max(l[i] -1, rmin), min(r[i] + 1, lmax) - l[i], r[i] - l[i] + 1 - lenmin});
        
        cout << 2 * ans << endl;
    }
    return 0;
}

E. MEX of LCM

Problem - E - Codeforces
image.png

n个数的数组,会产生 n 2 n^2 n2个子数组,那么最多有 n 2 n^2 n2个lcm
暴力枚举每个子数组不可取,以集合的角度考虑,所有子数组可以划分成n个集合,第i个集合由以 a i a_i ai结尾的子数组组成,这样的划分不重不漏
根据lcm的结合律,从1~n枚举每个集合,用 s i s_i si表示第i个集合中所有子数组的lcm集合。计算 s i + 1 s_{i+1} si+1时, s i + 1 s_{i+1} si+1中除了 a i + 1 a_{i+1} ai+1,其他数都是 a i + 1 a_{i+1} ai+1 s i s_i si进行lcm后的结果
从1~n计算所有集合,将每个集合 s i s_i si保存到集合ans中,暴力遍历ans找到不在ans中的最小正整数即可

小于n的素数数量为 O ( n / l o g ( n ) ) O(n/log(n)) O(n/log(n))(增长速度)

#include <iostream>
#include <set>
using namespace std;

typedef long long LL;
const int N = 3e5 + 10, INF = 1e9;
int a[N], T, n;

LL gcd(LL a, LL b)
{
    return b ? gcd(b, a % b) : a;
}

LL lcm(LL a, LL b)
{
    return a * b / gcd(a, b);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> T;
    while ( T -- )
    {
        cin >> n;
        for (int i = 0; i < n; ++ i ) cin >> a[i];
        set<LL> ans, pre;
        for (int i = 0; i < n; ++ i )
        {
            set<LL> cur;
            for (auto t : pre)
            {
                int u = lcm(t, a[i]);
                if (u < INF)
                {
                    ans.insert(u);
                    cur.insert(u);
                }
            }
            cur.insert(a[i]);
            ans.insert(a[i]);
            pre.swap(cur);
        }
        
        LL t = 1;
        while (ans.count(t)) t ++ ;
        cout << t << endl;
    }
    return 0;
}

还是没搞懂为什么INF取1e9,之后再补

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

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

相关文章

第三方软件测试机构可提供哪些测试服务?又有哪些注意事项?

软件测试是使用技术的手段&#xff0c;尽可能发现并改正软件中的错误&#xff0c;提高软件的可靠性及需求性&#xff0c;保障软件质量的过程。该过程也是软件开发完必不可少的一步&#xff0c;但国内还是有一些软件企业存在着“重开发&#xff0c;轻测试”的现象&#xff0c;上…

鹅厂涨薪开启,其它大厂会跟风吗?

从22年开始至今&#xff0c;网络上传言最多的就是“某某公司裁员了百分之多少的员工或是什么大幅度降薪等操作”&#xff0c;可谓是哀鸿遍野&#xff0c;每个人都在祈祷&#xff1a;“下一个被裁的不要是自己&#xff08;老天爷保佑&#xff09;”。 网友们吐槽&#xff1a;这些…

html动态爱心代码【三】(附源码)

目录 前言 特效 内容修改 完整代码 总结 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直…

如何下载和安装google字体(中文)

打开&#xff1a;https://fonts.google.com/ 点击字体 下载 解压 双击安装 查看 控制面板-》字体-》

win10 下运行 npm run watch-poll问题

背景&#xff1a;在本地练习laravel项目&#xff0c;windows 宝塔环境&#xff08;之前装过ubuntu子系统&#xff0c;很慢&#xff0c;就放弃了。有知道的兄弟说下&#xff0c;抱拳&#xff09;。以下命令我是在本地项目中用git bash里运行的&#xff0c;最好用管理员权限打开你…

【Python】数据分析工具之各种图

1 漏斗图 漏斗图描述状态阶段的顺序递进关系&#xff0c;属于序列类图表 import plotly.express as pxdata dict(number[39, 27.4, 20.6, 11, 2],stage["Website visit", "Downloads", "Potential customers", "Requested price", &…

H3C 无线网络vlan pool架构案例三层组网web配置

实验的是目标就是要实现华为vlan pool那种应用&#xff0c; 整个园区发一种ssid信号&#xff0c;但是连接的客户端可以随机连上后进入不同的vlan&#xff0c;在这大型园区网非常有用。 这种方法也适合同一个ssid情况下&#xff0c;在不同的位置关联不同的vlan 开启自动固化、…

vue3 基础知识 ( 扩展插槽 )03

嘿&#xff01;&#xff01; &#x1f495; 文章目录 一、扩展插槽二、基本使用三 、插槽的默认内容四、具名插槽五、 作用域插槽 一、扩展插槽 在开发中&#xff0c;我们会经常封装一个个可复用的组件&#xff0c;前面我们会通过props传递给组件一些数据&#xff0c;让组件来进…

Sping源码(七)— 后置处理器

简单回顾一下上一篇文章&#xff0c;是在BeanFacroty创建完之后&#xff0c;可以通过Editor和EditorRegistrar实现对类属性的自定义扩展&#xff0c;以及忽略要自动装配的Aware接口。 本篇帖子会顺着refresh()主流程方法接着向下执行。在讲invokeBeanFactoryPostProcessors方法…

FastDeploy部署(C++ Win10)

参考链接&#xff1a;FastDeploy C部署保姆级教程 FastDeploy是百度为了解决AI部署落地难题&#xff0c;发布的新一代面向产业实践的推理部署工具。它旨在为AI开发者提供模型部署最优解&#xff0c;具备全场景、简单易用、极致高效三大特点。项目地址&#xff1a;FastDeploy项…

聊聊调制解调器

目录 1.什么是调制解调器 2.调制解调器的工作原理 3.调制解调器的作用 4.调制解调器未来发展 1.什么是调制解调器 调制解调器&#xff08;Modem&#xff09;是一种用于在数字设备和模拟设备之间进行数据传输的设备。调制解调器将数字数据转换为模拟信号进行传输&#xff0c;…

ArcGIS:如何给栅格数据创建属性表

问题描述&#xff1a;使用ArcMap加载栅格数据后发现没有属性表&#xff0c;如下图&#xff0c;如何创建属性表 解决方法&#xff1a; 方法一&#xff1a; 鼠标右键点击栅格数据&#xff0c;然后选择【属性】&#xff0c;接着点击【符号系统】–【唯一值】&#xff0c;选择计算…

如何提升IT业务安全性?收藏起来照着做!

UPS作为一种关键设备&#xff0c;能够在电力中断时为电子设备提供临时的电力支持&#xff0c;从而防止数据丢失、设备损坏以及生产中断。因此&#xff0c;UPS系统的正常运行对于持续的监控和管理至关重要。 UPS监控不仅仅是关于监视UPS系统的运行状态&#xff0c;更是一项综合性…

微信开发之一键发布群公告的技术实现

简要描述&#xff1a; 设置群公告 请求URL&#xff1a; http://域名地址/setChatRoomAnnouncement 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必…

深度学习入门(三):卷积神经网络(CNN)

引入 给定一张图片&#xff0c;计算机需要模型判断图里的东西是什么&#xff1f; &#xff08;car、truck、airplane、ship、horse&#xff09; 一、卷积神经网络整体架构 CONV&#xff1a;卷积计算层&#xff0c;线性乘积求和RELU&#xff1a;激励层&#xff0c;激活函数P…

css选择器,选择div标签里的span标签,选最后一个span

CSS3 :last-child 选择器 | 菜鸟教程 CSS 6种选择器(超详细)_scss 选择器_想念的博客-CSDN博客

人大金仓(kingbase8)安装与初始化超详细教程

人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址 - 博客文章 - 任霏的个人博客网站 人大金仓Kingbase8安装与基本使用_码农茶叶蛋的博客-CSDN博客 80篇国产数据库实操文档汇总&#xff08;含TiDB、达梦、openGauss等&#xff09; 禁用防火墙 systemctl stop fi…

uni-app的nvue文件国际化不翻译问题解决办法

官网上的nvue国际化方式介绍的实在是太简单了&#xff0c;记得要引入下message文件&#xff0c;还要用uni.setLocale()设置下&#xff0c;但是不管我怎么引入都会报错。 所以我直接把文件拿过来了&#xff0c;通过对象的方式去取。 <!-- index.nvue 文件 --> <view&g…

Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?

容器创建时会调用AbstractApplicationContext的refresh方法&#xff0c;其中会调用invokeBeanFactoryPostProcessor方法&#xff0c;如下图 invokeBeanFactoryPostProcessors代码如下&#xff1a; 其中调用的PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcess…