Codeforces Round 951 (Div. 2)

news2024/11/29 4:45:50

在这里插入图片描述

A - Guess the Maximum

直接暴力枚举 a i , a i + 1 a_i,a_{i+1} ai,ai+1找最小的最大值
答案即为最小的最大值-1

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int n,m,k;
int a[N],b[N];
//PII p[N];

void solve(){
    cin >> n;
    for(int i = 0;i < n;i ++) cin >> a[i];
    int mx = 1e18;
    for(int i = 0;i < n - 1;i ++){
        mx = min(mx,max(a[i],a[i + 1]));
    }
    cout << mx - 1 << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

B - XOR Sequences

序列长度无限 所以从最低位到最高位按位枚举 答案为小于最先不同的位数的所有值 即 ( 1 < < i ) (1<<i) (1<<i) 高位总会有 ⨁ \bigoplus 后使其相等的值

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int n,m,k;
int a[N],b[N];
//PII p[N];

void solve(){
    cin >> n >> m;
    for(int i = 0;i < 32;i ++){
        int cnt1 = (n >> i) & 1;
        int cnt2 = (m >> i) & 1;
        if(cnt1 != cnt2){
            cout << ((int)1 << i) << endl;
            return;
        }
    }  
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

C - Earning on Bets

假设每一位放的硬币数为 a i a_i ai 那么总共就会放 s u m = ∑ i = 1 n a i sum = \sum\limits_{i = 1}^n{a_i} sum=i=1nai个硬币
然后我们我们知道获胜会得到 a i ∗ k i a_i*k_i aiki金币 并且 s u m < a i ∗ k i sum < a_i*k_i sum<aiki
s u m k i sum \over k_i kisum < a i a_i ai
并且有 ∑ i = 1 n s u m k i < ∑ i = 1 n a i \sum\limits_{i = 1}^n{sum \over k_i} < \sum\limits_{i = 1}^n{a_i} i=1nkisum<i=1nai
∑ i = 1 n s u m k i < s u m \sum\limits_{i = 1}^n{sum \over k_i} < sum i=1nkisum<sum
那么有 ∑ i = 1 n 1 k i < 1 \sum\limits_{i = 1}^n{1 \over k_i} < 1 i=1nki1<1
那么我们可以令 s u m = l c m ( k 1 , k 2 , k 3 , . . . , k n ) sum = lcm(k_1,k_2,k_3,...,k_n) sum=lcm(k1,k2,k3,...,kn)
这样 s u m ∗ k i sum * k_i sumki可以不剩余并且可以 s u m k i sum \over k_i kisum的分给每个位置的 a i a_i ai
即有 ∑ i = 1 n s u m k i < s u m \sum\limits_{i = 1}^n{sum \over k_i} < sum i=1nkisum<sum 满足此式子即说明有一个解
解为每个位置分 s u m k i sum \over k_i kisum

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int n,m,k;
int a[N],b[N];
//PII p[N];

void solve(){
    cin >> n;
    int lcm = 1;
    for(int i = 0;i < n;i ++){
        cin >> a[i];
        lcm = (a[i] * lcm) / __gcd(a[i],lcm);
    }  
    int sum = 0;
    for(int i = 0;i < n;i ++) sum += lcm / a[i];
    if(sum >= lcm){
        cout << -1 << endl;
        return;
    }
    for(int i = 0;i < n;i ++) cout << lcm / a[i] << " ";
    cout << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

D - Fixing a Binary String

直接从头开始遍历并且记录连续的0或1的个数
如果遍历过程中个数大于k了 那么就有两种切割情况:

  • 直接从刚大于时的位置前切开
  • 看末尾的连续序列长度是否小于k 如果小于k并且 s i = = s n s_i == s_n si==sn那就说明此处可以拼接上去 就从此序列开始位置+ (k - 末尾的连续序列长度 - 1)处切割

然后看这两种切割方式是否可以达成连续k个0或1交替出现即可
如果遍历过程中个数小于k了 :

  • 那么就在此前切割

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int n,m,k;
int a[N],b[N];
//PII p[N];
int flag;

void check(string ans){
    int len = 1;
    for(int i = 1;i < n;i ++){
        if(ans[i] == ans[i - 1]){
            len ++;
            if(len > k){
                flag = 1;
                break;
            }
        } else{
            if(len != k){
                flag = 1;
                break;
            }
            len = 1;
        }
    }    
}

void solve(){
    cin >> n >> k;
    string s; cin >> s;
    int pos = -1,cnt = 1;
    int pos2 = -1;
    int st = 0;
    int mx = 1;
    for(int i = n - 2;i >= 0;i --){
        if(s[i] != s[i + 1]){
            break;
        } else{
            mx ++;
        }
    }
    for(int i = 1;i < n;i ++){
        if(s[i] == s[i - 1]){
            cnt ++;
            if(cnt > k){
                pos = i - 1;
                if(s[i] == s[n - 1]){
                    if(mx >= k) pos2 = -1;
                    else if(i - st >= k - mx) pos2 = st + k - mx - 1;
                }
                break;
            }
        } else{
            if(cnt != k){
                pos = i - 1;
                break;
            }
            st = i;
            cnt = 1;
        }
    }
    if(pos == -1){
        cout << n << endl;
        return;
    }
    string s1 = s.substr(0,pos + 1);
    string s2 = s.substr(pos + 1);
    reverse(s1.begin(),s1.end());
    string ans = s2 + s1;
    flag = 0;
    check(ans);
    if(!flag){
        cout << pos + 1 << endl;
        return;
    }
    if(pos2 == -1){
        cout << -1 << endl;
        return;
    }
    s1 = s.substr(0,pos2 + 1);
    s2 = s.substr(pos2 + 1);
    reverse(s1.begin(),s1.end());
    ans = s2 + s1;
    flag = 0;
    check(ans);
    if(!flag){
        cout << pos2 + 1 << endl;
        return;
    }
    cout << -1 << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

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

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

相关文章

skywalking学习

文章目录 前言一、skywalking单体安装部署1. 下载skywalking2. 部署oap和oap-ui服务3. 测试skywalking监控springboot应用 二、搭建swck(skywalking集群)1.安装k8s2.下载swck3.设置pod自动注入java agent 三、skywalking监控python四、skywalking监控cpp总结参考 前言 本文主要…

RTKLIB之RTKPLOT画图工具

开源工具RTKLIB在业内如雷贯耳&#xff0c;其中的RTKPLOT最近正在学习&#xff0c;发现其功能之强大&#xff0c;前所未见&#xff0c;打开了新的思路。 使用思博伦GSS7000卫星导航模拟器,PosApp软件仿真一个载具位置 1&#xff0c;RTKPLOT支持DUT 串口直接输出的NMEA数据并…

HCL模拟器下做M-LAG测试(以及和华为配置对比)-二层架构

1.简单二层架构 1.1 拓扑图 1.2 配置 1.2.1 Leaf1配置 system-mac必须配置&#xff0c;否则会有一个node处于unknown状态&#xff0c;即使配置主节点的mac&#xff0c;主节点也需要配置system-mac为自己的mac ## M-LAG配置[Leaf1] m-lag system-mac 0001-0001-0001 # 手动设…

MFC 教程-回车时窗口退出问题

【问题描述】 MFC窗口默认时&#xff0c;按回车窗口会退出 【原因分析】 默认调用OnOK() 【解决办法】 重写虚函PreTranslateMessage BOOL CTESTMFCDlg::PreTranslateMessage(MSG* pMsg) {// TODO: 在此添加专用代码和/或调用基类// 修改回车键的操作反应 if (pMsg->…

物理安全防护如何创新强化信息安全体系?

物理安全防护是信息安全体系的重要组成部分&#xff0c;它通过保护实体设施、设备和介质等&#xff0c;防止未授权访问、破坏、盗窃等行为&#xff0c;从而为信息系统提供基础的安全保障。要创新强化信息安全体系中的物理安全防护&#xff0c;可以从以下几个方面着手&#xff1…

企业数字化转型的测度难题:基于大语言模型的新方法与新发现

《经济研究》新文章《企业数字化转型的测度难题&#xff1a;基于大语言模型的新方法与新发现》运用机器学习和大语言模型构造一套新的企业数字化转型指标。理论分析和数据交叉验证均表明&#xff0c;构建的指标相对已有方法更准确&#xff1a; 1.第一步&#xff1a;选择“管理…

Redis常用命令——List篇

提到List&#xff0c;我们第一时间想到的就是链表。但是在Redis中&#xff0c;List更像是一种双端队列&#xff0c;例如C中的deque。它可以快速高效的对头部和尾部进行插入和删除操作。本片文章主要对List列表的相关命令进行详解&#xff0c;希望本篇文章会对你有所帮助。 文章…

js--hasOwnProperty()讲解与使用

@TOC 前言 hasOwnProperty(propertyName)方法 是用来检测属性是否为对象的自有属性 object.hasOwnProperty(propertyName) // true/false 讲解 hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继…

高考志愿选专业,如何分析自己的兴趣爱好?

之所以在选择专业的时候比较迷茫&#xff0c;就是对自己不够了解&#xff0c;没有分析过自己的兴趣爱好&#xff0c;所以也不知道如何选择适合自己的专业&#xff0c;但是他们又不得不做出更深入的了解&#xff0c;因为专业的选择将关系到未来的职业道路和生活方向。 对于绝大…

java 大型企业MES生产管理系统源码:MES系统与柔性化产线控制系统的关系、作用

MES定义为“位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统”,它为操作人员/管理人员提供计划的执行、跟踪以及所有资源(人、设备、物料、客户需求等)的当前状态。 MES系统与柔性化产线控制系统的关系 MES&#xff08;制造执行系统&#xff09;是一种…

Apifox的使用

1、了解Apifox的工具特点和使用方法 2、使用Apifox辅助生成接口文档&#xff0c;尝试使用Apifox进行其他前后端调试。 Apifox IDEA 插件快速上手 | Apifox 帮助文档 Apifox IDEA 插件来啦&#xff01;是真的超好用&#xff01;_哔哩哔哩_bilibili 21分钟学会Apifox_哔哩哔哩…

Python 机器学习 基础 之 【实战案例】中药数据分析项目实战

Python 机器学习 基础 之 【实战案例】中药数据分析项目实战 目录 Python 机器学习 基础 之 【实战案例】中药数据分析项目实战 一、简单介绍 二、中药数据分析项目实战 三、数据处理与分析实战 1、数据读取 2、中药材数据集的数据处理与分析 2.1数据清洗 2.2、 提取别…

什么是大型语言模型 ?

引言 在本文[1]中&#xff0c;我们将从高层次概述大型语言模型 (LLM) 的具体含义。 背景 2023年11月&#xff0c;我偶然间听闻了OpenAI的开发者大会&#xff0c;这个大会展示了人工智能领域的革命性进展&#xff0c;让我深深着迷。怀着对这一领域的浓厚兴趣&#xff0c;我加入了…

计算机网络--计算机网络概念

计算机网络--计算机网络概念 计算机网络--物理层 计算机网络--数据链路层 计算机网络--网络层 计算机网络--传输层 计算机网络--应用层 0.计算机网络简介 0.2 计算机网络的功能简介 数据通信(连通性)资源共享&#xff1a; 软件硬件数据 分布式处理 多台计算机各自承担同…

每日一题——Python实现PAT甲级1015 Reversible Primes(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 is_prime函数分析&#xff1a; decimal_to_base函数分析&#xff1a; 主循…

Segment Anything

参考&#xff1a;【图像分割】Segment Anything&#xff08;Meta AI&#xff09;论文解读-CSDN博客 背景 提示分割任务&#xff1a;在给定任何分割提示下返回一个有效的分割掩码目标&#xff1a;开发一个可提示的图像分割的基础模型&#xff0c;在一个广泛的数据集上预训练&a…

【网络安全的神秘世界】在win11搭建pikachu靶场

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 下载pikachu压缩包 https://github.com/zhuifengshaonianhanlu/pikachu 下载好的pikachu放在phpstudy_pro/www目录下 创建pikachu数据库 打开phpstudy软件…

数据结构--二叉树(二)

链式二叉树 链式二叉树是链式树集合中的一种&#xff0c;该树的每个根节点最多只有两个孩子节点&#xff0c;我们一般用左右孩子来称呼&#xff0c;在初学链式二叉树时&#xff0c;由于大家对链式二叉树的结构掌握还不够深入&#xff0c;为了降低本章的学习难度及成本&#xff…

大模型多轮问答的两种方式

前言 大模型的多轮问答难点就是在于如何精确识别用户最新的提问的真实意图&#xff0c;而在常见的使用大模型进行多轮对话方式中&#xff0c;我接触到的只有两种方式&#xff1a; 一种是简单地直接使用 user 和 assistant 两个角色将一问一答的会话内容喂给大模型&#xff0c…

u盘内容无故消失了是什么原因?u盘部分内容无故消失了怎么恢复

在数字化时代&#xff0c;U盘作为便携存储设备&#xff0c;承载着许多重要的数据。然而&#xff0c;有时我们可能会遭遇U盘部分内容无故消失的情况&#xff0c;这无疑给我们的工作和生活带来了不小的困扰。本文将为您解析U盘内容消失的可能原因&#xff0c;并分享几招实用的数据…