Edu Codeforces Round167 (Div2)--(A~D)题解

Problem - A - Codeforces

思路:当且仅当y<=-2是追不上的。

void solve(){                   Aint x,y; cin>>x>>y;if(y<=-2) cout<<"NO"<<endl;else cout<<"YES"<<endl;
}

Problem - B - Codeforces

思路:因为不能破坏stra,所以只能在stra的左端或者右端添加字符,那么stra,strb相同的片段在strb中只能是连续的,不能拆开的,不然补不全。因此枚举strb连续的子串在stra中出现的最大长度即可。

void solve(){           B           写了44分钟。。stra,strb相同的片段在strb中只能是连续的,不能拆开的,不然是子序列也没用,补不全。   好好好...stra为子串,strb为子序列string stra,strb; cin>>stra>>strb;int na=stra.size(),nb=strb.size();int maxn=0;for(int i=0;i<nb;i++){int idx=i,cnt=0;for(int j=0;j<na;j++){if(stra[j]==strb[idx]) idx++,cnt++;}maxn=max(maxn,cnt);}cout<<na+nb-maxn<<endl;
}

Problem - C - Codeforces

思路:很明显的贪心。首先在1和0/-1之间,肯定先选1,在0和-1之间肯定先选0。当1和1,-1和-1,先记录下来,后面贪心再用。目标是让cura和curb尽量接近。所以like和hate是用来控制他们尽量接近的。要注意的是like==hate的时候,是不能跳过操作的。例如输入输入完之后curb=100,cura=10,like=20,hate=20。这个时候hate大可以全给curb,like全给cura。这样可以得到ans=30。其他的情况也类似贪心即可。

int a[200005],b[200005];
void solve(){           C     贪心,注意细节int n; cin>>n;int cura=0,curb=0,like=0,hate=0;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i];for(int i=1;i<=n;i++){                  数据的读入都错了。。直接cin>>a>>b了。。if(a[i]==1&&b[i]==1) like++;else if(a[i]==-1&&b[i]==-1) hate++;else if(a[i]==1) cura++;else if(b[i]==1) curb++;}if(cura>curb) swap(cura,curb);  cura<=curbif(like>hate){
//        like-=hate;              这样还不够贪心。如果dif很大很大,那么可以把hate给curb,like全给curaint dif=curb-cura;if(hate>=dif) curb=cura,hate-=dif;             尽量让cura==curbelse curb-=hate,hate=0;like-=hate;dif=curb-cura;if(like>=dif) {like-=dif,cura=curb;cout<<cura+like/2<<endl;}else {cura+=like;cout<<min(cura,curb)<<endl;}}else if(hate>like){
//        hate-=like;           这样还不够贪心。如果dif很大很大,那么可以把hate给curb,like全给curaint dif=curb-cura;if(like>=dif) cura=curb,like-=dif;              尽量让cura==curbelse cura+=like,like=0;hate-=like;dif=curb-cura;if(hate>=dif){hate-=dif,curb=cura;if(hate&1) cout<<cura-hate/2-1<<endl;else cout<<cura-hate/2<<endl;}else cout<<cura<<endl;}else if(hate==like){int dif=curb-cura;if(hate>=dif/2) cura+=dif/2,curb-=dif/2;else cura+=like,curb-=hate;cout<<min(cura,curb)<<endl;}
}

Problem - D - Codeforces

思路:排序+贪心。贪心地选dif更小的操作,输入时记录每一个dif,之后升序排序。要注意的是,暴力的跑是o(n*m)是肯定不行的。但是实际上同样数量的不同类型金属锭,是可以一起计算的。所以可以用一个桶cnt[i]来记录剩余数量为i的金属锭有几个。但是最大的金属锭数量是1e9,桶是不能记录的。但是最大的a只有1e6,所以可以记录小的mindif是多少,以及对应的a。在输入金属锭大小的时候,如果能冶炼金属a,那么直冶炼,这样保证所有金属锭数量<=1e6,桶是可以记录的。最后从1e6到1遍历cnt即可。

int n,m;
typedef struct node{int a,b,dif;bool operator < (const node &x) const{if(dif!=x.dif) return dif<x.dif;return a<x.a;}
}node;
node arr[1000006];
int cnt[1000006];
void solve(){                   D    排序+贪心cin>>n>>m;for(int i=1;i<=n;i++) cin>>arr[i].a;for(int i=1;i<=n;i++) {cin>>arr[i].b;arr[i].dif=arr[i].a-arr[i].b;}sort(arr+1,arr+n+1);int ans=0,aa=arr[1].a,mindif=arr[1].dif;for(int i=1;i<=m;i++){int x; cin>>x;if(x>=aa){ans+=(x-aa)/mindif+1;x=x-((x-aa)/mindif+1)*mindif;}cnt[x]++;}int idx=1;for(int i=1e6;i>=1&&idx<=n;i--){if(cnt[i]){int x=i;while(x<arr[idx].a&&idx<=n) idx++;if(idx>n) break;aa=arr[idx].a,mindif=arr[idx].dif;ans+=((x-aa)/mindif+1)*cnt[i];x=x-((x-aa)/mindif+1)*mindif;cnt[x]+=cnt[i];}}cout<<ans*2<<endl;
}

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

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

相关文章

C++编程逻辑讲解step by step:重载运算符+和-,实现按订单出入库操作。

题目 每按订单发一次货品A&#xff0c;库存都会相应地减少&#xff0c;每次退货&#xff0c;库存都会增加。分别定义货品A库存和订单为两个类&#xff1a;Inventory和Order&#xff0c;库存类Inventory中有货品名称、货品余量属性&#xff1b;订单类Order中有货品名称、数量、…

CSF视频文件格式转换WMV格式

如果大家看过一些高校教学讲解视频的话&#xff0c;很可能见过这样一个难得的格式&#xff0c;".csf "&#xff0c;非常漂亮 。 用暴风影音都可以打开观看&#xff0c;会自动下载解码。 但是一旦我们想要利用或者上传视频的时候就麻烦了&#xff0c;一般网站不认这…

下载旧版本vscode及扩展,离线下载远程linux服务器插件

背景 工作的内网没有网络&#xff0c;无法使用网络来下载插件和vscode软件&#xff0c;且有远程linux服务器需求&#xff0c;linux服务器中lib相关库比较旧且无法更新&#xff0c;所以需要选择一个旧版本的vscode&#xff0c;相应插件也需要选择旧版本的 旧版本vscode下载 没…

Windows下activemq集群配置(broker-network)

1.activemq版本信息 activemq&#xff1a;apache-activemq-5.18.4 2.activemq架构 3.activemq集群配置 activemq集群配置基于Networks of Brokers 这种HA方案的优点&#xff1a;是占用的节点数更少(只需要2个节点),而且2个broker都可以响应消息的接收与发送。不足&#xff…

Docker 部署 MariaDB 数据库 与 Adminer 数据库管理工具

文章目录 MariaDBmariadb.cnf开启 binlog Adminerdocker-compose.ymlAdminer 连接 MariaDB MariaDB MariaDB是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是MySQL的一个分支和替代品。 官网&#xff1a;https://mariadb.com/镜像&#xff…

SpringBoot控制反转和依赖注入

目录 一、内聚和耦合 二、分层解耦 三、具体实现 四、bean的组件扫描 五、bean注入 一、内聚和耦合 在了解分层解耦的概念之前我们我们要去先了解一下内聚和耦合。内聚&#xff1a;通常将的是软件中各个模块之间的功能联系。耦合衡量软件各个模块之间的依赖、关联的程度。一…

jquery使用infinitescroll无线滚动+自定义翻页

jquery版本 jquery-1.8.3.js infinitescroll版本 2.0.0 如果infinitescroll版本最新的jquery版本也要用新的 接口用nodejs jquery.infinitescroll.js官网地址 前端代码《接口返回JSON数据》 <!DOCTYPE html> <html lang"en"> <head><meta cha…

【逻辑回归实现多分类】

逻辑回归实现多分类原理 一、逻辑回归是什么&#xff1f;1. Sigmoid函数 二、如何扩展到多分类1. 一对多&#xff08;OvR&#xff09;实现细节 2. 一对一&#xff08;OvO&#xff09;3. 多对多&#xff08;MvM&#xff09;实现细节 三、sklearn库实现1. 引入库2. 加载并准备数据…

ONLYOFFICE 8.1 版本桌面编辑器测评

在现代办公环境中&#xff0c;办公软件的重要性不言而喻。从文档处理到电子表格分析&#xff0c;再到演示文稿制作&#xff0c;强大且高效的办公软件工具能够极大提升工作效率。ONLYOFFICE 作为一个功能全面且开源的办公软件套件&#xff0c;一直以来都受到广大用户的关注与喜爱…

OpenAI推出自我改进AI- CriticGPT

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

rust 如何debug

rust如何debug 如果创建的是一个二进制文件&#xff0c;并不是一个可执行文件 比如使用napi-rs/cli 创建出来的一个xxxx.node文件 我们想在vscode 中调试 1.1 创建launch.json {"version": "0.2.0","configurations": [{"type": &qu…

Android C++系列:认识JNI

1. 什么是JNI JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 JNI不仅仅是Android特有的,它是属于Java平台的,它允许在Java虚拟机内运行的java代码与其他编程语言(如c, c++和汇编语言)编写的程序和库进行交互。…

如何进行黄金期货日内波段交易-EE trade

日内波段交易是一种在单个交易日内抓取较大波段趋势的方法&#xff0c;旨在利用市场的短期波动获取利润。黄金期货市场由于其高波动性和高杠杆性&#xff0c;成为日内波段交易的理想选择。以下是黄金期货日内波段交易的详细策略和方法。 一、日内波段交易整体设计思想 1. 顺应…

【鸿蒙学习笔记】逻辑控制语句

官方文档&#xff1a;ArkTS语言介绍 目录标题 逻辑If语句Switch语句条件表达式 循环For语句For-of语句While语句Do-while语句Break语句Continue语句 异常Throw和Try语句 逻辑 If语句 if (condition1) {// 语句1 } else if (condition2) {// 语句2 } else {// else语句 }Switc…

【Linux】生物信息学常用基本命令

wget网址用于直接从网上下载某个文件到服务器&#xff0c;当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候&#xff0c;可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…

独立开发者系列(12)——下单与支付

做业务有个绕不开的业务逻辑&#xff0c;就是支付。这里总结一个基础的支付电商逻辑闭环流程&#xff0c;完成支付基础体系的实现。这里假定我们要实现的是一个独立的电商平台上允许用户在平台充值&#xff0c;其他的类似多多购物或者淘宝购物的流程逻辑。 数据表结构的逻辑设…

使用uniapp编写微信小程序

使用uniapp编写微信小程序 文章目录 使用uniapp编写微信小程序前言一、项目搭建1.1 创建项目方式1.1.1 HBuilderX工具创建1.1.2 命令行下载1.1.3 直接Gitee下载 1.2 项目文件解构1.2.1 安装依赖1.2.2 项目启动1.2.3 文件结构释义 1.2 引入uni-ui介绍 二、拓展2.1 uni-app使用uc…

简单的身份切换和执行工具su-exec —— 筑梦之路

简介 su-exec是一个理想的用于身份切换和权限控制的工具&#xff0c;尤其适合对性能和空间有要求的环境。无论是开发人员还是系统管理员&#xff0c;都值得将它纳入工具箱&#xff0c;以提高工作效率和系统的安全性 官方网站&#xff1a;GitHub - ncopa/su-exec: switch user …

【高考】人生规划指南

作为一个正处在这个选择的十字路口的高考考生&#xff0c;我认为在选择专业和学校时&#xff0c;要根据自己的具体情况和个人目标来权衡。首先&#xff0c;我认为专业是首要考虑因素。因为专业是直接决定未来职业发展方向的&#xff0c;如果不喜欢或者不适合的专业选择&#xf…

数字时代的文化革命:Facebook的社会影响

随着数字技术的飞速发展和互联网的普及&#xff0c;社交网络如今已成为人们日常生活中不可或缺的一部分。在众多社交平台中&#xff0c;Facebook作为最大的社交网络之一&#xff0c;不仅连接了全球数十亿用户&#xff0c;更深刻影响了人们的社会互动方式、文化认同和信息传播模…