Codeforces Round 1014 (Div. 2)(A-D)

题目链接:Dashboard - Codeforces Round 1014 (Div. 2) - Codeforces

A. Kamilka and the Sheep

思路

最大值-最小值

代码

void solve(){int n;cin>>n;vi a(n+10);int mx=0;int mi=inf;for(int i=1;i<=n;i++){cin>>a[i];mi=min(mi,a[i]);mx=max(mx,a[i]);}cout<<mx-mi<<"\n";
}

B. Lady Bug

思路

可以发现我们能把这两串01串分成如上的两组,其中在每组中是任意交换的,所以我们只需要保证每一组的0的数量都>=n/2即可

代码

void solve(){int n;cin>>n;string a,b;cin>>a>>b;a=" "+a;b=" "+b;int ct1_0=0;int ct2_0=0;for(int i=1;i<=n;i++){if(i%2){if(a[i]=='0'){ct1_0++;}if(b[i]=='0'){ct2_0++;}}else{if(a[i]=='0'){ct2_0++;}if(b[i]=='0'){ct1_0++;}}}if((ct1_0>=(n+1)/2)&&(ct2_0>=n/2)){cout<<"YES\n";}else{cout<<"NO\n";}
}

C. Asuna and the Mosquitoes

思路

通过对于样例的推导,我们发现如果在有偶数的情况下,我们可以将偶数变大奇数转化成1,然后最后将所有偶数加在最大的奇数上,那么答案便显而易见,ans=sum-ct1+1,ct1是奇数的数量

代码

void solve(){int n;cin>>n;int sum=0;int mx=0;int ct0=0,ct1=0;for(int i=1;i<=n;i++){int x;cin>>x;if(x%2) ct1++;else ct0++;sum+=x;mx=max(mx,x);}if(ct0==0||ct1==0){cout<<mx<<"\n";return;}sum-=ct1;cout<<sum+1<<"\n";
}

D. Mishkin Energizer

思路

此题我写的O(n)的构造方法过于麻烦,这里仅供参考一下思路吧(代码太屎了看看就行)

首先如果此字符串中只有一种字符,或者三个字符数量相等特判输出结果

然后我们每次遇到含量不同后贪心的将其改成含量相同,如以下几种情况

然后我们发现在这个过程下现在只有最后有一串连续的相同的字符我们没法去处理,那么我们便单独拿到最后处理

关于这个最后的处理其实是有很多种情况的,大体分为两种

1.在前面构造的过程中我们没有占用最后连续相同串的第一个字符如下情况构造

2.我们占用了第一个字符,这里又分为两种情况构造

-1我们最后的连续相同串的前面的第二个字符与这连续的串是相同的,我们便以这个字符为i构造便能平衡出来

-2不同的情况我们需要先把前面变出个与最后字符串相同的情况,然后再以这个为i再平衡

这样就把所有情况考虑了一遍,当然在实现过程中还涉及id的维护等等,反正调起来很麻烦,还是用官方题解做吧,这里只是参考

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;void solve(){int n;cin>>n;string s;cin>>s;s=" "+s;int x,y,z;x=y=z=0;for(int i=1;i<=n;i++){if(s[i]=='I') x++;if(s[i]=='T') y++;if(s[i]=='L') z++;}if((x==0&&y==0)||((x==0&&z==0))||(y==0&&z==0)){cout<<"-1\n";return;}if(x==y&&y==z){cout<<"0\n";return;}char ch='0';    //记录的是最后连续相同串的前面第2个字符vi ans;int ct=0;int i=1;bool f=false;int id=0;int num=0;bool b=false;while(i<=n){if(i==n){   //特判i==n的情况if(s[i]==s[i-1]){   //最后有连续的两个字符f=true;id=i+ct;num=2;}else{  //字符单独和前面不同ans.push_back(i-1+ct);ans.push_back(i+ct);}break;}if(s[i]!=s[i+1]){ans.push_back(i+ct);if((s[i]=='T'&&s[i+1]=='I')||(s[i]=='I'&&s[i+1]=='T')) ch='L';if((s[i]=='T'&&s[i+1]=='L')||(s[i]=='L'&&s[i+1]=='T')) ch='I';if((s[i]=='L'&&s[i+1]=='I')||(s[i]=='I'&&s[i+1]=='L')) ch='T';ct++;i+=2;}else{int t=i;while(t<=n&&s[t]==s[i]){t++;}if(t==n+1){if(s[i]==s[i-1]){   //之前的构造占用了最后连续字符的第一个字符id=i+ct;num=n-i+2;f=true;break;}else{id=i+ct;num=n-i+1;b=true;f=true;break;}}ch=s[t];int cnt=t-i;t--;for(int j=1;j<=2*cnt-1;j++){ans.push_back(t+ct);}ct+=(2*cnt-1);i=t+2;}}if(f){if(b){ans.push_back(id-1);ans.push_back(id-1);for(int i=1;i<=2*(num+1)-1;i++){ans.push_back(id);}}else{if(ch!=s[n]){ans.push_back(id-3);for(int i=1;i<=2*num;i++){ans.push_back(id-2);}}else{for(int i=1;i<=2*(num-1);i++){ans.push_back(id-3);}}}}cout<<ans.size()<<"\n";for(auto x:ans){cout<<x<<"\n";}}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

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

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

相关文章

开源AI智能体项目OpenManus的部署

关于开源AI智能体项目OpenManus的部署与背景信息整理如下&#xff1a; 1. OpenManus 背景与核心亮点 开发背景&#xff1a;Manus作为一款闭源的通用型AI智能体产品&#xff0c;因内测邀请码稀缺&#xff08;二手平台炒至10万元&#xff09;引发争议。开源社区迅速反应&#xff…

使用jieba库进行TF-IDF关键词提取

文章目录 一、什么是TF-IDF&#xff1f;二、为什么选择jieba库&#xff1f;三、代码实现1.导入必要的库2. 读取文件3.将文件路径和内容存储到DataFrame4.加载自定义词典和停用词5.分词并去除停用词 四、总结 一、什么是TF-IDF&#xff1f; TF-IDF&#xff08;Term Frequency-I…

【学Rust写CAD】20 平铺模式结构体(spread.rs)

这个 Spread。rs文件定义了渐变超出定义区域时的扩展方式&#xff0c;通常用于处理渐变在边界之外的行为。 源码 //color/spread.rs #[derive(Debug, Clone, Copy)] pub struct Pad; // 空结构体&#xff0c;表示 Pad 模式#[derive(Debug, Clone, Copy)] pub struct Reflect…

[操作系统,学习记录]3.进程(2)

1.fork(); 玩法一&#xff1a;通过返回值if&#xff0c;else去执行不同的代码片段 玩法二&#xff1a;if&#xff0c;else然后调用execve函数去执行新的程序 2.进程终止&#xff1a; 退出码&#xff0c;子进程通过exit/return返回&#xff0c;父进程wait/waitpid等待而得&am…

Masked Attention 在 LLM 训练中的作用与原理

在大语言模型&#xff08;LLM&#xff09;训练过程中&#xff0c;Masked Attention&#xff08;掩码注意力&#xff09; 是一个关键机制&#xff0c;它决定了 模型如何在训练时只利用过去的信息&#xff0c;而不会看到未来的 token。这篇文章将帮助你理解 Masked Attention 的作…

【自学笔记】PHP语言基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. PHP 简介2. PHP 环境搭建3. 基本语法变量与常量数据类型运算符 4. 控制结构条件语句循环语句 5. 函数函数定义与调用作用域 6. 数组7. 字符串8. 表单处理9. 会话…

css选择最后结尾的元素DOM

前言 选中最后一个元素&#xff0c;实际使用非常频繁。 解决方案 使用 CSS 提供的选择器&#xff0c;即可完成。 如下代码示例&#xff0c;两种选择器均可实现。 <p>...</p>p:last-child{ background:#ff0000; }p:nth-last-child(1){background:#ff0000; }p&…

Axios 相关的面试题

在跟着视频教程学习项目的时候使用了axios发送请求&#xff0c;但是只是跟着把代码粘贴上去&#xff0c;一些语法规则根本不太清楚&#xff0c;但是根据之前的博客学习了fetch了之后&#xff0c;一看axios的介绍就明白了。所以就直接展示axios的面试题吧 本文主要内容&#xff…

瑞芯微RKRGA(librga)Buffer API 分析

一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中&#xff0c;有两组配置 buffer 的API&#xff1a; importbuffer 方式&#xff1a; importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式&#xff1a; wrapbuffer_virtualaddr wrapb…

C语言:多线程

多线程概述 定义 多线程是指在一个程序中可以同时运行多个不同的执行路径&#xff08;线程&#xff09;&#xff0c;这些线程可以并发或并行执行。并发是指多个线程在宏观上同时执行&#xff0c;但在微观上可能是交替执行的&#xff1b;并行则是指多个线程真正地同时执行&…

Linux线程池实现

1.线程池实现 全部代码&#xff1a;whb-helloworld/113 1.唤醒线程 一个是唤醒全部线程&#xff0c;一个是唤醒一个线程。 void WakeUpAllThread(){LockGuard lockguard(_mutex);if (_sleepernum)_cond.Broadcast();LOG(LogLevel::INFO) << "唤醒所有的休眠线程&q…

微信小程序逆向开发

一.wxapkg文件 如何查看微信小程序包文件&#xff1a; 回退一级 点击进入这个目录 这个就是我们小程序对应的文件 .wxapkg概述 .wxapkg是微信小程序的包文件格式&#xff0c;且其具有独特的结构和加密方式。它不仅包含了小程序的源代码&#xff0c;还包括了图像和其他资源文…

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…

视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验

264、x265、libaom、vvenc 对比测试实验 测试机器配置&#xff1a;Apple M1 Pro -16G编码器版本&#xff08;选择自己编译&#xff09;&#xff1a;所有源码都是当前最新更新的状态&#xff0c;此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…

【二刷代码随想录】双指针-数组相关题型、推荐习题

一、双指针-数组 相关题型与常用思路 1、单个数组 &#xff08;1&#xff09;原地移除元素类 如推荐习题中的&#xff08;1&#xff09;、&#xff08;2&#xff09;、&#xff08;3&#xff09;&#xff0c;都属于此类。引入双指针 pre、last &#xff0c;用 pre 指针表明数…

Level DB --- TableCache

TableCache 是Level DB 中重要的类&#xff0c;Level DB 中多层&#xff08;multi level&#xff09;&#xff0c;且每一层&#xff08;level&#xff09;有多个 key-value file&#xff0c;TableCache正是用来缓存多层以及多层中的file数据&#xff0c;更快速地检索。 table …

搜索-BFS

马上蓝桥杯了&#xff0c;最近刷了广搜&#xff0c;感觉挺有意思的&#xff0c;广搜题类型都差不多&#xff0c;模板也一样&#xff0c;大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置&#xff0c;假设最后一个点是我们的&…

智能预测维护:让设备“未卜先知”,减少宕机烦恼

智能预测维护:让设备“未卜先知”,减少宕机烦恼 1. 引言:设备维护的痛点与出路 在工业生产和自动化领域,设备故障一直是令人头疼的问题。设备一旦故障,轻则影响生产效率,重则造成严重损失,甚至带来安全隐患。传统的设备维护方式主要有两种: 被动维护(Reactive Maint…

安卓的布局方式

一、RelativeLayout 相对布局 特点&#xff1a;每个组件相对其他的某一个组件进行定位。 (一)主要属性 1、设置和父组件的对齐&#xff1a; alignParentTop &#xff1a; 设置为true&#xff0c;代表和父布局顶部对齐。 其他对齐只需要改变后面的Top为 Left、Right 或者Bottom&…

SSM中药分类管理系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 SS…