当前位置: 首页 > news >正文

Codeforces Round 925 (Div. 3)(A~E)

题目暂时是AC,现在是Hack阶段,代码仅供参考。

A. Recovering a Small String

题目给出的n都可以由字母来组成,比如4可以是a+a+b,字母里面排第一个和第二个,即1+1+2=4。但是会歧义,比如a+b+a为1+2+1=4,也是4,答案就不唯一,输出字典序最小的那三个字母。

直接枚举。

#include <bits/stdc++.h>
//#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;int n;void solve(){cin>>n;per(i,'a','z'){per(j,'a','z'){per(k,'a','z'){int ti=i-'a'+1;int tj=j-'a'+1;int tk=k-'a'+1;if(ti+tj+tk==n){cout<<(char)i<<(char)j<<(char)k<<endl;return;}}}}
}void init(){}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);int t;cin>>t;while(t--)solve(),init();return 0;
}

B. Make Equal

你可以任选序列中的两个数 i < j,让 a[i] 减去 1~a[i] 的任意值 加到 a[j] 上面,这个操作可以无限执行,问是否可以让序列的每个数都相等。(也可以不执行操作)

关键要想到每个数都要相等的话,那么每个数都要变成序列的平均值,然后模拟就行了。

#include <bits/stdc++.h>
#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;
const int N=2e5+5;int n,a[N],sum;void no(){cout<<"NO"<<endl;
}void yes(){cout<<"YES"<<endl;
}void solve(){cin>>n;per(i,1,n)cin>>a[i],sum+=a[i];if(sum%n!=0)return no();sum/=n;//每一个都要是sum的平均值int nowtake=0;per(i,1,n){if(a[i]==sum)continue;else if(a[i]<sum){if(nowtake>=sum-a[i]){nowtake-=sum-a[i];}else return no();}else if(a[i]>sum){nowtake+=a[i]-sum;}}if(nowtake)return no();else return yes();
}void init(){sum=0;
}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);int t;cin>>t;while(t--)solve(),init();return 0;
}

C. Make Equal Again

给你一个序列A,你可以选择任意一个连续区间,全部变成任意一个数,比如[2,2,9,10],选择3~4,全部变成2,就会变成[2,2,2,2],这个操作你只能执行一次,问你将序列A中的每个数都相等至少要改变几个数。

从答案入手,最大范围是 l=1,r=n,就是全部修改,然后看看 l 和 r 能不能往里面变,让答案更小。

显然可以分类讨论。

如果a[l] == a[r],那就是要改中间的部分。

如果a[l] != a[r],那就是要改左边或者右边更短的那一截。

#include <bits/stdc++.h>
#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;
const int N=2e5+5;int n,a[N];void solve(){cin>>n;per(i,1,n)cin>>a[i];int l=1,r=n;if(a[l]!=a[r]){while(a[l]==a[1])l++;while(a[r]==a[n])r--;cout<<min(n-l+1,r)<<endl;}else{while(a[l]==a[1])l++;while(a[r]==a[n])r--;if(l<=r)cout<<r-l+1<<endl;else cout<<0<<endl;}
}void init(){per(i,1,n)a[i]=0;
}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);int t;cin>>t;while(t--)solve(),init();return 0;
}

补题:D. Divisible Pairs

对于序列中 i < j 的两个数,如果有 (a[i]+a[j])%x==0 并且 (a[i]-a[j])%y==0 那么称之为一个漂亮对,问你有几个漂亮对。

朴素算法很容易写出来,但是这道题的范围要求复杂度小于等于nlogn。

n^2过不了。

per(i,1,n){per(j,i+1,n){if((a[i]+a[j])%x==0 and (a[i]-a[j])%y==0){ans++;}}}

循环显然没有可以改进的空间了,所以我们需要对判断条件入手。

(a[i]+a[j])%x==0 and (a[i]-a[j])%y==0

也就是(箭头根据模运算律展开)

1、(a[i]+a[j])%x==0  ->  (a[i]%x+a[j]%x)%x==02、(a[i]-a[j])%y==0  ->  (a[i]%y-a[j]%y)%y==0

最终可以得到下面两个条件

1、a[i]%x + a[j]%x == x 或者 a[i]%x + a[j]%x == 02、a[i]%y 和 a[j]%y 的余数相等

所以只需要把每个数对x和y取余之后保留下来,再去匹配条件就可以了。

#include <bits/stdc++.h>
#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;
const int N=2e5+5;int n,x,y,tmp,ans;map<pair<int,int>,int>f;void solve(){cin>>n>>x>>y;per(i,1,n){cin>>tmp;int l=tmp%x,r=tmp%y;ans+=f[{x-l,r}];if(l==0)ans+=f[{0,r}];f[{l,r}]++;}cout<<ans<<endl;
}void init(){f.clear();ans=0;
}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);int t;cin>>t;while(t--)solve(),init();return 0;
}

E. Anna and the Valentine's Day Gift

博弈论,主要难度在于读题和代码细节。

Anna和Sasha在玩游戏,Anna先手开始第一回合。

Anna回合的操作:选择一个数,翻转。如:255变成552。250变成52(去掉开头的0)

Sasha回合的操作:选择两个数拼接成一个数,方向任意。如:255,10变成25510或者10255

如果轮到Sasha的时候无法找出两个数,那么游戏结束。

若最后留下来的那一个数>=10^m,那么Sasha胜利,否则Anna胜利。

问两个人都执行他们的最优操作,最后谁会胜利。

对于Anna来说最优的操作是让结尾0最多的数翻转,才会减少最终拼接数的位数。

对于Sasha来说拼接的意义就是让结尾0最多的数,不能被翻转。

那么处理一下输入,保留一下总位数和结尾0的数量,排个序,模拟。

#include <bits/stdc++.h>
//#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;
const int N=2e5+5,M=2e6+5;int n,tmp,m;
vector<pair<int,int>>v;//几位数,结尾几个0void solve(){cin>>n>>m;per(i,1,n){cin>>tmp;int cnt=0,cntz=0;bool flag=true;while(tmp){int bit=tmp%10;if(bit!=0)flag=false;if(flag)cntz++;//记录结尾0的数量cnt++;//记录位数tmp/=10;}v.push_back({cnt,cntz});}sort(v.begin(),v.end(),[](pair<int,int>a,pair<int,int>b){return a.se>b.se;});//根据结尾0的数量降序排序,每次都对结尾0最多的进行操作int all=0;//算一下最后总位数会剩下多少,用来和10^m的m比较bool Anna=true;per(i,0,v.size()-1){if(Anna){Anna=false;v[i].fr-=v[i].se;//总位数减去结尾0的数量}else {Anna=true;//Sasha回合保护一个结尾,所以不用变}all+=v[i].fr;//累计总位数}if(all>=m+1){//m是1后面有几个0,总位数是m+1cout<<"Sasha"<<endl;}else cout<<"Anna"<<endl;
}void init(){v.clear();
}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);int t;cin>>t;while(t--)solve(),init();return 0;
}

相关文章:

Codeforces Round 925 (Div. 3)(A~E)

题目暂时是AC&#xff0c;现在是Hack阶段&#xff0c;代码仅供参考。 A. Recovering a Small String 题目给出的n都可以由字母来组成&#xff0c;比如4可以是aab&#xff0c;字母里面排第一个和第二个&#xff0c;即1124。但是会歧义&#xff0c;比如aba为1214&#xff0c;也是…...

@RequestBody、@RequestParam、@RequestPart使用方式和使用场景

RequestBody和RequestParam和RequestPart使用方式和使用场景 1.RequestBody2.RequestParam3.RequestPart 1.RequestBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 2.RequestParam 接收的参数是来自HTTP 请求体 或 请…...

LeetCode、1143. 最长公共子序列【中等,二维DP】

文章目录 前言LeetCode、1143. 最长公共子序列【中等&#xff0c;二维DP】题目链接与分类思路2022年暑假学习思路及题解二维DP解决 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者…...

162基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理

基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理&#xff0c;选择信号峭度最大的频段进行滤波&#xff0c;输出多尺度谱峭度及降噪结果。程序已调通&#xff0c;可直接运行。 162 matlab 信号处理 多尺度谱峭度 (xiaohongshu.com)...

Android Studio六大基本布局的概览和每个布局的关键特性以及实例分析

1. 线性布局 (LinearLayout) 描述: 线性布局是一种按指定方向(水平或垂直)排列其子视图的布局容器。通过android:orientation属性可设置为horizontal或vertical。 关键属性: android:orientation: 指定布局方向。android:layout_weight: 子视图权重,用于分配剩余空间。示…...

【go语言】一个简单HTTP服务的例子

一、Go语言安装 Go语言&#xff08;又称Golang&#xff09;的安装过程相对简单&#xff0c;下面是在不同操作系统上安装Go语言的步骤&#xff1a; 在Windows上安装Go语言&#xff1a; 访问Go语言的官方网站&#xff08;golang.org&#xff09;或者使用国内镜像站点&#xff0…...

LeetCode Python - 15.三数之和

目录 题目答案运行结果 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可…...

C#中implicit和explicit

理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str -> object o -> int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…...

探讨java系统中全局唯一ID实现方案

为什么需要全局唯一ID 我们这里引用美团 Leaf 的场景介绍&#xff1a;在复杂分布式系统中&#xff0c;往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中&#xff0c;数据日渐增长&#xff0c;对数据分库分表后需要有一…...

微信小程序(四十四)鉴权组件插槽-登入检测

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.鉴权组件插槽的用法 2.登入检测示范 源码&#xff1a; app.json {"usingComponents": {"auth":"/components/auth/auth"} }app.js App({globalData:{//定义全局变量isLoad:false} })…...

【ES】--ES集成热更新自定义词库(字典)

目录 一、问题描述二、具体实施1、Tomcat实现远程扩展字典2、验证生效3、ES配置远程扩展字典4、为何不重启ES能实现热更新 一、问题描述 问题现象: 前面完成了自定义分词器词库集成到ES中。在实际项目中词库是时刻在变更的&#xff0c;但又不希望重启ES&#xff0c;对此我们应…...

能源管理师——为能源可持续发展护航

能源管理师是在能源管理领域具有专业知识和技能的专业人士&#xff0c;他们的工作对于实现能源的有效利用和可持续发展至关重要。 能源管理师的主要职责是协助企业或组织进行能源管理&#xff0c;包括能源规划、能源审计、节能措施的实施和能源绩效的评估等。他们通过对能源使…...

设计模式理解:单例模式+工厂模式+建设者模式+原型模式

迪米特法则&#xff1a;Law of Demeter, LoD, 最少知识原则LKP 如果两个软件实体无须直接通信&#xff0c;那么就不应当发生直接的相互调用&#xff0c;可以通过第三方转发该调用。其目的是降低类之间的耦合度&#xff0c;提高模块的相对独立性。 所以&#xff0c;在运用迪米特…...

DataX源码分析 writer

系列文章目录 一、DataX详解和架构介绍 二、DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 文章目录 系列文章目录前言DataX的Writer写入流…...

为自己的项目媒体资源添加固定高度

为自己的项目媒体资源添加固定高度 未媒体资源添加固定高度&#xff0c;不仅有利于确定懒加载后的切确位置&#xff0c;还可以做骨架屏、loading动画等等&#xff0c;但是因为历史数据中很多没有加高度的媒体资源&#xff0c;所以一直嫌麻烦没有做。 直到这个季度有一个自上而…...

家政小程序系统源码开发:引领智能生活新篇章

随着科技的飞速发展&#xff0c;小程序作为一种便捷的应用形态&#xff0c;已经深入到我们生活的方方面面。尤其在家庭服务领域&#xff0c;家政小程序的出现为人们带来了前所未有的便利。它不仅简化了家政服务的流程&#xff0c;提升了服务质量&#xff0c;还为家政服务行业注…...

多表查询

目录 统计出一张数据表中的数据量 查询 dept 表中的数据量 查询 emp 表中的数据量 实现 emp 与 dept 的多表查询 笛卡尔积 消除笛卡尔积 把数据表 emp 的别名定为 e&#xff0c;数据表 dept 的别名定为 d&#xff0c;然后在查询中分别使用 e 和 d 代替这两个表 Oracle从…...

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下&#xff0c;三元操作替换if条件语句可以精简代码&#xff0c;并且更为直观&#xff0c;但是在下面的情况中使用三元操作将会返回警告。 借图&#xff1a; 案例 比如原代码&#xff1a; class classA{publ…...

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测 目录 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预…...

vue3-内置组件-Suspense

Suspense (实验性功能) <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...