Codeforces Round 1000 (Div. 2) A-C

news2025/1/24 17:41:56

链接:Codeforces Round 1000 (Div. 2)

A:Minimal Coprime

大意:

       给定一个区间,定义最小互质区间是边界互质,边界内无互质区间。求这个区间最小互质区间个数

思路:

       gcd(l, l + 1) = gcd(1, l) = 1,即相邻数组成的区间互质,那么一段区间的互质区间数就为R-L,

        还有个一般情况,就是gcd(1,1) = 1,即1自己单独有个最小互质区间

        所以对于左边界为1的情况,如果右边界为1结果就是1,右边界大于1为r,那么结果为r - 1,因为虽然[1, 1]属于,但是[1, 2]却因包含[1, 1]而不属于了

代码:

#include <bits/stdc++.h>

using namespace std;
#define int long long
typedef pair<int, int> PII;
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 998244353;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =



void solve() 
{
    int n, m;cin >> n >> m;
    if (n == m && n == 1)cout << 1 << endl;
    else cout << m - n << endl;
}

signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

    int t = 1;
    cin >> t;
    while (t--) solve();

    return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

 B:Subsequence Update

大意:

        给定一个数组的一段区间,可以进行且仅进行一次操作

        操作为:选择一个子序列(subsequence, 任意删除原数组中的数构成的序列),然后将该序列中的数反转,比如选取[1 2 3 4 5]。中的 1 3 5, 那么结果为[5 2 3 4 1]

        目标为使得区间和最大

思路:

        首先对于这个操作,我们目的是使得区间和最大,那就要将区间内较小的数换成区间,

        限制是只能进行一次操作,那就不能直接求整个数组最小值和了

        先将区间分成三段,区间内区间左边区间右边,

        首先我们发现一个性质就是只能区间中间与其中一边进行操作,要不然选取的数左边会和右边抵消掉,使得最后还是只交换一边的效果

        那么就分别将左边小数、右边小数与中间大数对调结果取最小即可。

代码:

#include <bits/stdc++.h>

using namespace std;
#define int long long
typedef pair<int, int> PII;
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 998244353;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =



void solve() 
{
    int n;cin >> n;
    int l, r;cin >> l >> r;
    vi a(n + 1);
    for (int i = 1; i <= n; i++)cin >> a[i];
    
    vi ll, rr, mid;
    for (int i = 1; i < l; i++)ll.push_back(a[i]);
    for (int i = l; i <= r; i++)mid.push_back(a[i]);
    for (int i = r + 1; i <= n; i++)rr.push_back(a[i]);
    sort(ll.begin(), ll.end());
    sort(rr.begin(), rr.end());
    sort(mid.begin(), mid.end(), greater<int>());
    int num = 0;
    for (int i = 0; i < mid.size(); i++)num += mid[i];


    int tmp = 0;
    for (int i = 0; i < ll.size() && i < mid.size(); i++)
        if (ll[i] <= mid[i])tmp += mid[i] - ll[i];
        else break;

    int ans = tmp;
    tmp = 0;
    for (int i = 0; i < rr.size() && i < mid.size(); i++)
        if (rr[i] <= mid[i])tmp += mid[i] - rr[i];
        else break;
    ans = max(ans, tmp);
    cout << num - ans << endl;
}

signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

    int t = 1;
    cin >> t;
    while (t--) solve();

    return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

C:Remove Exactly Two

大意:

        给定一个最小生成数,求删除两个点形成的连通分量的最大数量

思路:

        首先对于两个点的树,删完点就没点了,结果为1

        对于大于两个点的树,我们当然是找度数最大的点去删除,如果两点不相连,那么结果为两点度数相加 - 1, 如果相连,那么两点都去掉后相连的地方就没有连通分量了,结果为两点度数相加 - 2.

        那么我的思路是第一个度数最大的点跟其他点删除和度数第二大的点跟其他点删除,结果取最大即可。这样可以排除一些问题,比如前三个点度数是相同的,但是第一个点连着后面两个点,那么第三个点就一定不会连着第二个点,因为要连着就成环了。

代码:

#include <bits/stdc++.h>

using namespace std;
#define int long long
typedef pair<int, int> PII;
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 998244353;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =



void solve() 
{

    int n;
    cin >> n;
    map<PII, bool>mp;
    vi cnt(n + 1, 0);
    for (int i = 1; i < n; i++)
    {
        int a, b;cin >> a >> b;
        cnt[a] ++;
        cnt[b] ++;
        mp[{a, b}] = true;
        mp[{b, a}] = true;
    }
    if (n == 2)
    {
        cout << 0 << endl;
        return;
    }

    vii scnt;
    for (int i = 1; i <= n; i++)
        scnt.push_back({ cnt[i], i });
    sort(scnt.begin(), scnt.end(), greater<PII>());
    

    int ans = 0;
    for (int i = 1; i < n; i++)
        ans = max(ans, scnt[0].ff + scnt[i].ff - 1 - mp[{scnt[0].ss, scnt[i].ss}]);

    for(int i = 2; i < n; i ++)
        ans = max(ans, scnt[1].ff + scnt[i].ff - 1 - mp[{scnt[1].ss, scnt[i].ss}]);
    
    cout << ans << endl;
}

signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

    int t = 1;
    cin >> t;
    while (t--) solve();

    return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

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

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

相关文章

基于Redis实现短信验证码登录

目录 1 基于Session实现短信验证码登录 2 配置登录拦截器 3 配置完拦截器还需将自定义拦截器添加到SpringMVC的拦截器列表中 才能生效 4 Session集群共享问题 5 基于Redis实现短信验证码登录 6 Hash 结构与 String 结构类型的比较 7 Redis替代Session需要考虑的问题 8 …

校验收货地址是否超出配送范围实战3(day09)

优化用户下单功能&#xff0c;加入校验逻辑&#xff0c;如果用户的收货地址距离商家门店超出配送范围&#xff08;配送范围为5公里内&#xff09;&#xff0c;则下单失败。 提示&#xff1a; ​ 1. 基于百度地图开放平台实现&#xff08;https://lbsyun.baidu.com/&#xff09…

Vue2.0+ElementUI实现查询条件展开和收起功能组件

一、需求 el-form如果查询条件过多&#xff0c;影响页面的展示效果。查询条件表单是我们系统中非常常见的功能&#xff0c;我们需要把它封装成一个通用的组件&#xff0c;方便在系统开发中提升开发效率。除了在实现基本查询条件的功能上&#xff0c;还需要实现多条件的折叠和展…

UE求职Demo开发日志#8 强化前置条件完善,给物品加图标

1 强化前置条件完善 StrengthManager里实现一个Check前置的函数 bool CheckPreAllIsActive(int index)&#xff0c;所有的前置都已经激活就返回true&#xff0c;否则返回false 之后在强化的时候加入条件检查&#xff1a; 1.所有前置技能全部激活 2.本身没有强化过 最后测…

pinctrl子系统

目录 一、PinCtrl子系统的定义 二、明确PinCtrl子系统和我们编写驱动的关系 三、pinctrl_desc结构体引入 四、PinCtrl子系统驱动实现分析 1.芯片厂家是如何实现PinCtrl子系统的 2.linux在什么位置设置的引脚复用和电气属性 2.1 really_probe的主要功能 2.2 really_prob…

行政纠错——pycorrector学习

pycorrector是一个开源中文文本纠错工具&#xff0c;它支持对中文文本进行音似、形似和语法错误的纠正。此工具是使用Python3进行开发的&#xff0c;并整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型来实现文本纠错功能。pycorrector官方仓库…

深入MapReduce——计算模型设计

引入 通过引入篇&#xff0c;我们可以总结&#xff0c;MapReduce针对海量数据计算核心痛点的解法如下&#xff1a; 统一编程模型&#xff0c;降低用户使用门槛分而治之&#xff0c;利用了并行处理提高计算效率移动计算&#xff0c;减少硬件瓶颈的限制 优秀的设计&#xff0c…

React+Cesium基础教程(001):创建基于React的Cesium项目及对Cesium进行基本配置

文章目录 01-基于react的cesium项目创建基于React的Cesium项目Cesium基本配置设置默认启动视角完整项目下载地址01-基于react的cesium项目 创建基于React的Cesium项目 创建react项目: create-react-app react-cesium-basic安装[cesium1.93.0]版本: npm install cesium@1.…

Vue2:使用sortablejs实现el-table中行拖拽调整顺序

如图,实现拖拽表格中的行来调整行顺序,但是其中的编号仍然是1、2、3、4的顺序,不跟着变化。 实现如下: 一、导入sortablejs import Sortable from "sortablejs";export default { components: {Sortable},data() {return {//数据中的id很重要,拖拽行重新排序…

Kingbase数据库体系结构和日常运维监控

1. 数据库架构 1.1. 内存 1.1.1. Share Memory 共享内存是服务器服务器为数据库缓存和事务日志缓存预留的内存缓存空间&#xff0c;其中最重要的组成部分是Shared Buffer和WAL Buffer&#xff1a; 1. Shared Buffer&#xff1a; 减少磁盘IO 2. WAL Buffer&#xff1a; 用…

【Prometheus】Prometheus如何监控Haproxy

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【0x0012】HCI_Delete_Stored_Link_Key命令详解

目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集&#xff0c;鸢尾花数据集包含了150条鸢尾花信息&#xff0c;每50条取自三个鸢尾花中之一&#xff1a;Versicolour、Setosa…

C++函数——fill

在C中&#xff0c;std::fill 是标准库提供的一个算法适用于几乎所有类型的容器&#xff0c;只要这些容器支持迭代器操作。具体来说&#xff0c;std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型&#xff0c;用于将指定范围内的所有元素设置为某个特定值。它是一个…

如何打造高效同城O2O平台?外卖跑腿系统源码选型与开发指南

打造一个高效的同城O2O平台&#xff0c;选择合适的外卖跑腿系统源码并制定科学的开发方案至关重要。本篇文章&#xff0c;笔者将从源码选型、核心功能、开发架构及运营策略等方面&#xff0c;全面解析O2O平台的搭建思路。 一、外卖跑腿系统源码的选型要点 在搭建O2O平台时&…

Flutter_学习记录_基本组件的使用记录

1.TextWidge的常用属性 1.1TextAlign: 文本对齐属性 常用的样式有&#xff1a; TextAlign.center 居中TextAlign.left 左对齐TextAlign.right 有对齐 使用案例&#xff1a; body: Center(child: Text(开启 TextWidget 的旅程吧&#xff0c;珠珠, 开启 TextWidget 的旅程吧&a…

Qt实践:一个简单的丝滑侧滑栏实现

Qt实践&#xff1a;一个简单的丝滑侧滑栏实现 笔者前段时间突然看到了侧滑栏&#xff0c;觉得这个抽屉式的侧滑栏非常的有趣&#xff0c;打算这里首先尝试实现一个简单的丝滑侧滑栏。 首先是上效果图 &#xff08;C&#xff0c;GIF帧率砍到毛都不剩了&#xff09; QProperty…

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析 文章目录 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析1. 规则持久化1.1 Nacos Server 配置中心-规则持久化实例 2. 最后&#xff1a; 1. 规则持久化 规则没有持久化的问题 如果 sentinel 流控规则没有…

SpringCloud微服务Gateway网关简单集成Sentinel

Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制、熔断降级组件。Sentinel以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助保护服务的稳定性。 官方文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html …