Codeforces Round 953 (Div. 2)(A~D题解)

这次比赛是我最顺利的一次比赛,也是成功在中途打进前1500,写完第三道题的时候也是保持在1600左右,但是后面就啥都不会了,还吃了点罚时,虽说如此也算是看到进步了,D题学长说很简单,但是我当时分析错了,出了一点小问题,不然最后也能定格在2000左右,下次加油。

A. Alice and Books

 

题意:就是说给你n本书,让你从中间分开,阅读边编号最大的那本书,然后问你最多能读多少页,这个很简单,最后一本书肯定是要读的,我们只需要遍历从1到~n-1本书,找到那本书页数最多然后加起来就OK了

#include<bits/stdc++.h>
using namespace std;
#define int long longint t;
int n;
int a[105];
int maxn=0;
signed main()
{cin>>t;while(t--){maxn=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n-1;i++){maxn=max(maxn,a[i]);}cout<<maxn+a[n]<<"\n";}return 0;
}

 B. New Bakery

 

题意:就是说给你n个面包,每个面包有两种卖价,一个是a元,一个是b元,b元的计算是

(b-i+1)也就是说越往后卖b价越低

思路:既然b价格越来越低,那么等b的价格和a一样的时候就按a的价格卖即可,因此我们一开始做出判断如果a>b那就全按a的价格来卖,如果a<b,那么等b的价格低到和a一样的时候就按a元来卖就有最大价值

ps:同时要注意 b是否真的会低到a的价格

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int a,b;
signed main()
{cin>>t;while(t--){cin>>n>>a>>b;if(a>=b){cout<<a*n<<"\n";}else{int sum=0;int flag=b-a;if(n>flag){sum=(a+1+b)*(b-a)/2+(n-flag)*a;}else{sum=(b+b-n+1)*n/2;}cout<<sum<<"\n";}}return 0;
}

 C. Manhattan Permutations

 

题意:就是给你一个数组,数组的数值是1~n,然后问你其中产生的曼哈顿值是否能达到k

思路:我们首先要判断哪些情况下不会达到,首先就是因为你是交换产生的曼哈顿值,曼哈顿值一但产生就必然是偶数,而不可能是奇数,当k为奇数时直接输出NO即可

其次就是当整个序列反转的时候产生最大的曼哈顿值,因而假如我们的k要是大于反转之后的曼哈顿值也要输出NO

然后就是很简单的根据k去进行翻转就好,我们要对k的值进行判断,我们要从第一个数开始交换,然后每次交换都是要根据k值的大小去交换的(这个地方不会的直接私我吧,文学功底有限,实在太难纯文本将清楚了)

#include<bits/stdc++.h>
using namespace std;
#define int long longint t;
int n,k;
int maxn;//用于计算最大差值 
int a[200005];
signed main()
{cin>>t;while(t--){cin>>n>>k;for(int i=1;i<=n;i++)a[i]=i;if(k%2!=0){cout<<"NO\n";continue;}maxn = 0; for(int i=1;i<=n;i++){maxn+=abs(n-i+1-i);}if(maxn<k){cout<<"NO\n";continue;}int flag=2*(n-1);int num=1;while(k!=0){if(k>=flag){
//            	cout<<flag<<"\n";
//            	cout<<a[num]<<" "<<a[n-num+1]<<"flag\n";int t=a[num];a[num]=a[n-num+1];a[n-num+1]=t;k-=flag;num++;flag=2*(n-num+1-num);}else{int cnt=k/2;int t=a[num];a[num]=a[num+cnt];a[num+cnt]=t;k=0;}}cout<<"YES\n";for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<"\n";}return 0;
}

D. Elections 

 

题意:就是说有n个候选人,c个无主见人士,无主见的人会将票投给下标最小的那个的人,然后问你想要让第i个当选,要排除最少多少个竞争者

 思路:我们需要去对于

(1)第一个要特判,如果第一个加上未决定的票数就可以大于最多的,那么第一个人不用将任何候选人排除

(2)如果我票数就是最多的且我的下标小的话也可以在同票数的情况下获胜,并且第一个人+c个人的票也无法超过我,因此,也不需要排除别人

 (3)其余的需要判断其是否比最大值那个下标小,或者说把前面的都筛掉之后+c能否大于最多那个人得票数,如果这两个条件满足其一,就输出i-1即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,c;
int a[200005];
int pre[200005];
bool cmp(pair<int,int> a, pair<int,int> b)
{if(a.first==b.first) return a.second>b.second;return a.first<b.first;
}
void solve()
{cin >> n >> c;vector<pair<int,int>> b(n+1);b[0]={0,0};for(int i=1;i<=n;i++){cin >> a[i];b[i]={a[i],i};}sort(b.begin(),b.end(), cmp);for(int i=1;i<=n;i++){pre[i]=pre[i-1]+b[i].first;}int sum=0;for(int i=1;i<=n;i++){if(i==1 && a[i]+c>=b[n].first){cout << 0 << ' '; }else if(((a[i]==b[n].first && i<=b[n].second)) && a[1]+c<a[i]){cout << 0 << ' ';}else{cout << i-(b[n].second<=i || sum+a[i]+c>=b[n].first)<<' ';}sum+=a[i];}cout << "\n";
}
signed main()
{cin >> t;while(t--){solve();}return 0;
}

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

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

相关文章

爱了爱了,11款超良心App推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/今天&#xff0c;我们向你推荐十款与众不同但又不错的win10软件&#xff0c;它们都有各自的功能和优点&#xff0c;相信你一定会喜欢。 1.图片处…

Git/TortoiseGit ssh client 配置

1. Git ssh client 配置 Git 默认的 ssh client 是 <Git 安装目录>/usr/bin/ssh.exe 修改方法为打开 Git Bash 执行&#xff1a; git config --global core.sshCommand "/C/Program Files/TortoiseGit/bin/TortoiseGitPlink.exe" 注意&#xff1a;如果路径…

​单级高频谐振小放

目录 高频交流等效电路 质量指标 增益 通频带 选择性 高频交流等效电路 质量指标 增益 YL撇是怎么来的。 通频带 选择性

Django中间件探索:揭秘中间件在Web应用中的守护角色与实战应用

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

Git管理(Linux版本)

在Linux中我们如何把自己的代码上传到gitee中呢&#xff0c;本期将为大家讲解详细的步骤。 目录 查看Linux环境是否存在git工具 在gitee上创建代码仓库 复制仓库的HTTP路径到Linux中 代码上传 在仓库下创建文件或者将文件移动到仓库下 使用三板斧进行文件的上传 add …

Podman常用命令

Podman 是 Red Hat 的一个开源项目&#xff0c;可以免费下载。它是容器化领域的一个相对较新的人&#xff0c;1.0 版将于 2019 年发布。此后 Podman 取得了长足的进步&#xff0c;其崛起伴随着 Docker 的逐渐衰落&#xff0c;该项目在许多方面创造了我们今天所知的容器世界。 容…

使用 Oracle SQL Developer 导入数据

使用 Oracle SQL Developer 导入数据 1. 导入过程 1. 导入过程 选择要导入数据的表&#xff0c; 然后单击右键&#xff0c;选择"导入数据"&#xff0c; 浏览本地文件&#xff0c;选择正确的工作表&#xff0c; 按默认&#xff0c; 按默认&#xff0c; 根据情况修改&…

2. 机器学习概述

机器学习是对能通过经验自动改进的计算机算法的研究。 ---汤姆. 米切尔 1997 通俗来讲&#xff0c;机器学习就是让计算机从数据中进行自动学习&#xff0c;得到某种知识&#xff08;或规律&#xff09;。在早期的工程领域&#xff0c;机器学习也经常被称为模式识别&#xff08;…

guli商城业务逻辑-基础篇笔记

这里写目录标题 0.1 viscode设置用户代码片段1.实现多级菜单接口1.1 对接前端菜单1.2 对接网关接口解决跨域问题&#xff0c;如果不解决跨域&#xff0c;浏览器还是访问不了api1.3 把商品服务添加网关1.4 修改前端显示分类菜单1.5 给菜单添加删除修改功能1.5.1 删除功能的后端业…

Oracle 入门--前提

目录 1.sqlplus 2.dual是什么&#xff1f; 3.SQL语句的种类 4.Oracle是如何工作的 5.Oracle查看配置文件 6.修改配置文件 7.常用的参数设置 1.sqlplus 管理数据库&#xff1a;启动&#xff0c;关闭&#xff0c;创建&#xff0c;删除对象......查看数据库的运行状态&…

【分布式计算】java消息队列机制

消息队列是一种在不同组件或应用之间进行数据传递的技术&#xff0c;通常用于处理异步通信。它允许消息的发送者&#xff08;生产者&#xff09;和接收者&#xff08;消费者&#xff09;之间进行解耦。 概念 消息队列是一种先进先出&#xff08;FIFO&#xff09;的数据结构&…

机器学习(V)--无监督学习(一)聚类

根据训练样本中是否包含标签信息&#xff0c;机器学习可以分为监督学习和无监督学习。聚类算法是典型的无监督学习&#xff0c;目的是想将那些相似的样本尽可能聚在一起&#xff0c;不相似的样本尽可能分开。 相似度或距离 聚类的核心概念是相似度(similarity)或距离(distance…

嵌入式学习记录6.14(练习)

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(1028,783); //设置左侧背景QLabel *lab1new QLabel(this);lab1->…

【内存管理之堆内存】

1.栈上的基元 2.栈上的聚合对象 3.手动分配和释放 4.分配堆内存 5.数组内存分配和释放 6.数组内存分配 7.不要使用野指针 8.黑暗时代

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、事件标志、软件定时器、内存管理

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

12 款 Android 照片恢复应用程序列表

丢失难忘的照片总是令人痛苦的。如果软件崩溃或意外删除&#xff0c;Android 设备上的照片也可能会丢失。这时照片恢复应用程序就派上用场了。查看我们为 Android 收集的顶级照片恢复应用程序。 但是&#xff0c;您不会想为自己选择任何照片恢复应用程序。因此&#xff0c;我们…

Doris:冷热分层

目录 一、冷热分层介绍 二、存储策略&#xff08;Storage policy&#xff09; 2.1 创建存储资源 2.2 创建存储策略 2.3 使用存储策略 三、使用限制 一、冷热分层介绍 冷热分层支持所有 Doris 功能&#xff0c;只是把部分数据放到对象存储上&#xff0c;以节省成本&am…

openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步

一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本&#xff0c;该版本生命周期为0.5年。根据openGauss官网介绍&#xff0c;6.0.0-RC1与之前的版本特性功能保持兼容,另外&#xff0c;在和之前版本兼容的基础上增加了很多新功能&#xff0c;比如分区表性能优化…

go的netpoll学习

go的运行时调度框架简介 Go的运行时&#xff08;runtime&#xff09;中&#xff0c;由调度器管理&#xff1a;goroutine&#xff08;G&#xff09;、操作系统线程&#xff08;M&#xff09;和逻辑处理器&#xff08;P&#xff09;之间的关系 以实现高效的并发执行 当一个gorout…

统计完全子字符串

很不错的计数问题&#xff0c;用到了分组循环技巧和滑动窗口 代码的实现方式也非常值得多看 class Solution { public:int f(string s,int k){int res 0;for(int m1;m<26&&k*m<s.size();m){int cnt[27]{};auto check[&](){for(int i0;i<26;i){if(cnt[i]…