Codeforces Round 951 (Div. 2) 题解分享

news2024/12/24 2:33:03

A. Guess the Maximum

思路

贪心

毫无疑问的是,Alice会选择所有区间最大值的最小值-1,即min\sum - 1

关键是如何选取。我们注意到区间长度越大,这个区间的最大值是随着它不减的,所以如果Bob要让Alice选的最小的话,选择的区间长度一定是2。

因此我们从左往右遍历一遍区间长度为2的情况即可。

code

inline void solve() {
     int n; cin >> n;
     vector<int> a(n + 1);
     for (int i = 1; i <= n; i ++ ) cin >> a[i];
     int minv = 1e9;
     for (int i = 1; i < n; i ++ ) {
     	minv = min(minv, max(a[i], a[i + 1]));
     }
     cout << minv - 1 << endl;
	 return;
}

B. XOR Sequences

思路

Q:该怎么做?真的是打暴力么?

A:打暴力肯定是错误的,题目中给了一个神奇的条件,x != y,假设我们让a和b分别从i和j的位置开始相等,即满足a_{I} XOR x = b_{j} XOR y,当我们注意到这个条件的时候,自然而然的就会把x异或过去。

Q:我懂了,然后怎么做,感觉还是找不出来数量。

A:结合样例二,x XOR y = 1000,而答案为8。

Q:其实这样也能猜出来是2的(0的个数次)

A:后面3个零,也就是8。后面如果选的bj后面三位有1,这样往上加1的过程肯定是两个相等的情况一定是小于8的,换句话说,这个一卡着了最大长度。

code

inline void solve() {
    int a, b; cin >> a >> b;
	int x = a ^ b;
    cout << (x & (-x)) << endl;
	return;
}

 C. Earning on Bets

思路

题目大意是让你分配任意的钱,使得任意一处获奖得到的钱能够严格大于你花的钱的总数。

Q:首先猜一个lcm

A:然后用lcm实现刚好合适()

code

inline void solve() {
     ll n; cin >> n;
     vector<ll> a(n + 1);
     ll g = 1;
     for (int i = 1; i <= n; i ++ ) {
     	cin >> a[i];
     	g = lcm(g, a[i]);
     }
     ll sum = 0;
     for (int i = 1; i <= n; i ++ ) {
     	sum += g / a[i];
     }
     if (sum >= g) cout << -1 << endl;
     else {
     	for (int i = 1; i <= n; i ++ ) {
     		cout << g / a[i] << ' ';
     	}
     	cout << endl;
     }
	 return;
}

D. Fixing a Binary String

思路

模拟 + 贪心

题目是将字符串切两半,然后左边一半翻转接到右边去

只有最右边才可以衔接变成k个连续的,

那么我们贪下切的位置

从右边往左边看,000011100.

我们可以0|00011100

就是要把连续的k个都要放到右边部分,不然的话翻转了也没啥用啊。

而对于最右边的两个0,就是去跟左边翻转后的匹配的,最后检查一次即可。

举样例切的位置的例子。

注意,这只是切的位置,还要检查一遍的。

样例1

111 | 00001

样例2

1 | 110

样例3

1110001 | 00011

样例4

| 00000

样例5

1010 | 01

样例6

0111000 | 1

样例7

110 | 001100110

自己举的例子

| 0011001100110011   p = 2

101110 | 000  p = 3

1 | 11100011  p = 3

就是典型的讨论 + 模拟吧,大意再总结下就是最右边连续的如果小于k的话,那么一定要跟翻转后的左边去匹配的,接着再把所有连续的k个都放到右边,因为如果连续的k个在左边的话,翻转一点用都没有。

code

inline void solve() {
     int n, k; cin >> n >> k;
     string s; cin >> s;    
     s = " " + s;
     int j = n, len = 0;
     while (len < k && s[j] == s[n]) j -= 1, len += 1;
     int ok = j, ji = len;
     if (j == 0) return cout << n << endl, void();
     if (s[j] != s[n]) {
     	while (true) {
     		char cur = s[j];
     		len = 0;
     		while (s[j] == cur) j -= 1, len += 1;
     		if (len == k) ok = j;
     		else if (len > k) {
     			ok = j + len - k;
     			break;
     		}else break;
     		if (j == 0) break;
    	}
     }
     if (ok == 0) {
     	if (ji == k) cout << n << endl;
     	else cout << -1 << endl;
     	return;
     }
     reverse(s.begin() + 1, s.begin() + 1 + ok);
     s = " " + s.substr(1 + ok) + s.substr(1, ok);
     len = 0;
     int cur = s[1] - '0';
     bool flag = true;
     for (int i = 1; i <= n - k; i ++ ) {
     	if (s[i] - '0' != cur) flag = false;
     	len += 1;
     	if (len == k) len = 0, cur ^= 1;
     	if (s[i + k] == s[i]) flag = false;
     }
     if (k == n) {
     	char tt = s[1];
     	for (int i = 1; i <= n; i ++ ) if (s[i] != tt) flag = false;
     }
     if (flag) cout << ok << endl;
     else cout << -1 << endl;
	 return;
}

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

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

相关文章

1 c++多线程创建和传参

什么是进程&#xff1f; 系统资源分配的最小单位。 什么是线程&#xff1f; 操作系统调度的最小单位&#xff0c;即程序执行的最小单位。 为什么需要多线程&#xff1f; &#xff08;1&#xff09;加快程序执行速度和响应速度, 使得程序充分利用CPU资源。 &#xff08;2&…

FastAPI:在大模型中使用fastapi对外提供接口

通过本文你可以了解到&#xff1a; 如何安装fastapi&#xff0c;快速接入如何让大模型对外提供API接口 往期文章回顾&#xff1a; 1.大模型学习资料整理&#xff1a;大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业RAG系统&#xff0c;如何评估…

Helm离线部署Rancher2.7.10

环境依赖&#xff1a; K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中&#xff0c;Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…

RPA-UiBot6.0数据整理机器人—杂乱数据秒变报表

前言 友友们是否常常因为杂乱的数据而烦恼?数据分类、排序、筛选这些繁琐的任务是否占据了友友们的大部分时间?这篇博客将为友友们带来一个新的解决方案,让我们共同学习如何运用RPA数据整理机器人,实现杂乱数据的快速整理,为你的工作减负增效! 在这里,友友们将了…

SpringBoot3+Mybatis-Plus+h2数据库,入门Mybatis-Plus

SpringBoot3Mybatis-Plush2数据库&#xff0c;入门Mybatis-Plus mybatis-plus官网地址maven依赖数据库脚本配置文件实体类Mapper入门程序启动程序测试单元测试测试结果 Service层接口service层接口单元测试测试结果 项目结构 mybatis-plus官网地址 https://www.baomidou.com/ …

RocketMq源码解析六:消息存储

一、消息存储核心类 rocketmq消息存储的功能主要在store这个模块下。 核心类就是DefaultMessageStore。我们看下其属性 // 配置文件 private final MessageStoreConfig messageStoreConfig; // CommitLog 文件存储实现类 private final CommitLog commitLog; …

微信小程序学习笔记(1)

文章目录 一、文件作用app.json&#xff1a;project.config.json:sitemap.json页面中.json 二、项目首页三、语法**WXML**和**HTML**WXSS 和CSS的区别小程序中.js文件的分类 一、文件作用 app.json&#xff1a; 当前小程序的全局配置&#xff0c;包括所有页面路径、窗口外观、…

[Cloud Networking] Layer3 (Continue)

文章目录 1. DHCP Protocol1.1 DHCP 三种分配方式1.2 DHCP Relay (中继) 2. 路由协议 (Routing Protocol)2.1 RIP (Routing Information Protocol)2.2 OSPF Protocol2.3 BGP Protocol2.4 IS-IS Protocol2.5 ICMP&#xff08;Internet Control Message Protocol&#xff09; 1. …

架构设计-全局异常处理器404、405的问题

java web 项目中经常会遇到异常处理的问题&#xff0c;普遍的做法是使用全局异常处理&#xff0c;这样做有以下几种原因&#xff1a; 集中化处理&#xff1a;全局异常处理允许你在一个集中的地方处理整个应用程序中的异常。这有助于减少代码重复&#xff0c;因为你不必在每个可…

Java实现数据结构——顺序表

目录 一、前言 二、实现 2.1 增 2.2 删 2.3 查 2.4 改 2.5 销毁顺序表 三、Arraylist 3.1 构造方法 3.2 常用操作 3.3 ArrayList遍历 四、 ArrayList具体使用 4.1 杨辉三角 4.2 简单洗牌算法 一、前言 笔者在以前的文章中实现过顺序表 本文在理论上不会有太详细…

MySQL从入门到高级 --- 15.优化 16.pymysql

文章目录 第十五章 && 第十六章&#xff1a;15.优化15.1 查询SQL执行效率15.2 定位低效率执行SQL15.3 explain分析执行计划 - 基本使用15.4 explain分析执行计划 - id15.5 explain分析执行计划 - select_type15.6 explain分析执行计划 - type15.7 explain分析执行计划 …

计算机网络期末考试知识点(关键词:江中)

目录 大家端午节快乐呀&#xff01;又到了一年两度的期末考试月了&#xff0c;这里给大家整理了一些复习知识点&#xff0c;大家可以边吃粽子边复习&#xff0c;事半功倍哈哈哈。祝各位期末过&#xff01;过&#xff01;过&#xff01;。 1 第一章 计算机网络体系结构 计算机…

【python】在【机器学习】与【数据挖掘】中的应用:从基础到【AI大模型】

目录 &#x1f497;一、Python在数据挖掘中的应用&#x1f495; &#x1f496;1.1 数据预处理&#x1f49e; &#x1f496;1.2 特征工程&#x1f495; &#x1f497;二、Python在机器学习中的应用&#x1f495; &#x1f496;2.1 监督学习&#x1f49e; &#x1f496;2.2…

ue5创建地图瓦片

先在虚幻商城下载免费的paperzd插件&#xff0c;并启用。 导入资源后&#xff0c;先通过应用paper2d纹理资源&#xff0c;将去掉导入ue时产生的边缘模糊&#xff0c;再点击下面的创建瓦片集&#xff0c; 打开瓦片集&#xff0c;发现选中不对&#xff0c; 改变瓦片大小为16*…

如何学习自动化测试?(附教程)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 自动化测试介绍 自动化测试(Automated Testing)&#xff0c;是指把以人为驱动的测试行为转化为…

汇聚荣科技有限公司实力怎么样?

汇聚荣科技有限公司&#xff0c;一家专注于高新技术研发和应用的企业&#xff0c;在业界享有一定的声誉。那么&#xff0c;这家公司的实力究竟如何?我们将从公司概况、技术研发、市场表现、企业文化和未来展望五个方面进行详细探讨。 一、公司概况 汇聚荣科技有限公司经过多年…

【Python核心数据结构探秘】:元组与字典的完美协奏曲

文章目录 &#x1f680;一、元组⭐1. 元组查询的相关方法❤️2. 坑点&#x1f3ac;3. 修改元组 &#x1f308;二、集合⭐1. 集合踩坑❤️2. 集合特点&#x1f4a5;无序性&#x1f4a5;唯一性 ☔3. 集合&#xff08;交&#xff0c;并&#xff0c;补&#xff09;&#x1f3ac;4. …

月薪6万,想离职...

大家好&#xff0c;我是无界生长&#xff0c;国内最大AI付费社群“AI破局俱乐部”初创合伙人。这是我的第 39 篇原创文章——《月薪6万&#xff0c;想离职...》 是的&#xff0c;你没有看错&#xff0c;我月薪6万&#xff0c;却想离职&#xff0c;很不可思议吧&#xff1f;周围…

如何为色盲适配图形用户界面

首发日期 2024-05-25, 以下为原文内容: 答案很简单: 把彩色去掉, 测试. 色盲, 正式名称 色觉异常. 众所周知, 色盲分不清颜色. 如果用户界面设计的不合理, 比如不同项目只使用颜色区分, 而没有形状区分, 那么色盲使用起来就会非常难受, 甚至无法使用. 色盲中最严重的情况称为…

车载电子电气架构 - 智能座舱技术及功能应用

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…