牛客周赛 Round 17

A、

题目描述:

游游拿到了一个边长为n的正方形披萨,她准备切k刀(每刀只能横着或竖着切开),最终会形成若干个小矩形披萨。游游希望每个小披萨的面积相等,且矩形的长和宽的差的绝对值尽可能小。你能帮游游求出每个小矩形的面积吗?

输入描述:

两个正整数n和k,用空格隔开。
1≤n,k≤100

输出描述:

一个浮点数,代表每个小矩形的面积,小数点后保留2位。

示例1

输入

2 1

输出

2.00

示例2

输入

3 3

输出

1.50
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e5+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n,k;
signed main()
{cin>>n>>k;int mmax=0;for(int i=0;i<=k;i++){int j=k-i;	int x=i+1;int y=j+1;int sum=x*y;mmax=max(mmax,sum);}cout<<fixed<<setprecision(2)<<n*n*1.0/mmax<<"\n";return 0;
} 

 枚举即可。

B、

题目描述:

游游拿到了一个长度为n的字符串,她每次操作会选择一个区间[l,r],将第l个字母到第r个字母各重复一次,插入到该字母的后面。

例如,对于字符串"abcd",若选择区间[2,3]进行操作,字符串将变成"abbccd"

游游将进行q次操作。她想知道,q次操作结束后,最终的字符串是什么样子?

输入描述:

第一行输入两个正整数n和q,分别代表字符串长度和操作次数。
第二行输入一个仅由小写英文字母组成的字符串,代表初始的字符串。
接下来的q行,每行输入两个正整数l,r,代表操作的区间。
1≤n≤1000
1≤q≤10
1≤l≤r≤10^6
保证每次操作时,r不大于当前的字符串长度。

输出描述:

一个字符串,代表所有操作结束后形成的字符串。

示例1

输入

6 2
abcdef
2 4
3 6

输出

abbbccccdddef

说明

第一次操作后,字符串变成abbccddef

第二次操作后,字符串变成abbbccccdddef

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e5+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n,q;
string s;
signed main()
{cin>>n>>q;cin>>s;int l,r;fp(i,1,q){string t="";cin>>l>>r;l--;r--;for(int j=0;j<s.size();j++){t+=s[j];if(l<=j&&j<=r){t+=s[j];}}s=t;}cout<<s<<"\n";return 0;
} 

 暴力即可

C、

题目描述:

游游拿到了一个大小为n的数组,数组第i个数为ai​。

游游会选择一些元素,使得这些元素都等于它们的平均数。

例如,假设数组为 [5 , 4 , 2 , 4],游游选择第一个和第三个元素,最终数组将变成 [3.5 , 4 , 3.5 ,4]
游游最多可以选择k个元素,她希望最终数组最大值和最小值的差尽可能小。你能帮她求出这个差吗?
 

输入描述:

第一行输入两个正整数n和k,用空格隔开。分别代表数组大小、以及游游最多可以选择的元素数量。
第二行输入n个正整数ai​,代表每个数组的元素。

1≤n,ai​≤200000

1≤k≤n

输出描述:

 

一个浮点数,代表最终数组的最大值和最小值的差。

如果你的答案和正确答案的相对误差不超过10−610^{-6}10−6,则认为答案正确。

示例1

输入

4 2
5 4 2 4

输出

0.5

示例2

输入

4 4
5 4 2 4

输出

0
  1. 将数组排序

  2. 枚举选择最小值的元素数量i和最大值的元素数量j(i + j = k)

  3. 计算选择这些元素后的最小值和最大值

  4. 更新答案

 

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
const int inf=1e9;
#define int long long
#define fp(i,a,b) for(int i=a;i<=b;i++)
typedef double db;
int n,k;
int a[N],sum[N]; 
signed main()
{cin>>n>>k;fp(i,1,n)cin>>a[i];sort(a+1,a+1+n);fp(i,1,n)sum[i]=sum[i-1]+a[i];if(n==k){cout<<fixed<<setprecision(6)<<0.00<<"\n";return 0;}db ans=3e18;for(int i=0;i<=k;i++){int j=k-i;db x=sum[i]+sum[n]-sum[n-j];db mi=min(1.0*a[i+1],x*1.0/k);db ma=max(1.0*a[n-j],x*1.0/k);ans=min(ans,ma-mi);}cout<<fixed<<setprecision(6)<<ans<<"\n";return 0;
}

D、

题目描述:

游游准备去开车旅行,她初始在1号城市,准备前往n号城市。
游游打开了携程,她查询到了地图上有若干城市,城市之间有一些道路连接。每条道路有承重限制,当游游的车重量超过了承重时,她就不能走这条道路。
游游是一个贪心的人,她希望总路程不超过h的前提下,携带尽可能多的物品出行。游游想知道,自己的车最多重量能达到多少?

输入描述:

第一行输入三个正整数n,m,h,代表城市数量和道路数量,以及总路程的限制。
接下来的m行,每行输入四个正整数u,v,w,d,代表有一条道路连接了u号城市和v号城市,道路的最大承重为w,道路长度为d。
2≤n≤10^5
1≤m≤10^5
1≤u,v≤n
1≤w,d,h≤10^9

输出描述:

如果游游无法到达n号城市,则输出-1。
否则输出一个正整数,代表游游的车的最小重量。

示例1

输入

3 3 5
1 2 7 3
1 3 6 4
3 2 4 2

输出

6

说明

 

直接走1-3这条路,道路的承重为6。

如果走1-2-3这两条路,虽然总里程也不超过5,但由于2-3道路承重为4,所以游游的车的重量会更小。

 

spfa+二分 你用dijkstra也行 

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
const int inf=2e9;
#define int long long
#define fp(i,a,b) for(int i=a;i<=b;i++)
int n,m,hh;
int e[N],ne[N],h[N],w[N],d[N],idx;
int dis[N];
bool vis[N];
void add(int x,int y,int z,int t)
{e[idx]=y;ne[idx]=h[x];w[idx]=z;d[idx]=t;h[x]=idx++;
}
int spfa(int x)
{fp(i,1,n)vis[i]=0,dis[i]=inf;vis[1]=1;dis[1]=0;queue<int>q;q.push(1);while(!q.empty()){int now=q.front();q.pop();vis[now]=0;for(int i=h[now];~i;i=ne[i]){int j=e[i];if(dis[j]>dis[now]+d[i]&&w[i]>=x){dis[j]=dis[now]+d[i];if(vis[j]==0){vis[j]=1;q.push(j);}}}}return dis[n]<=hh;
}
signed main()
{memset(h,-1,sizeof h);cin>>n>>m>>hh;fp(i,1,m){int x,y,z,t;cin>>x>>y>>z>>t;add(x,y,z,t);add(y,x,z,t);}int l=-1,r=1e9;  while(l<r){int mid=(l+r+1)>>1;if(spfa(mid))l=mid;else r=mid-1;}cout<<l<<"\n";return 0;
}

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

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

相关文章

vue中的rules表单校验规则使用方法 :rules=“rules“

一、el-form里面必写属性值 :ref"dataForm" // 提交表单时进行校验 :rules"rules" // return 下的校验规则 :model"userForm" // 绑定表单的值 <el-formref"dataForm" // 必写属性值:rules"rules"…

CV论文阅读大合集

YearNameAreamodeldescriptiondrawback2021 ICMLClip &#xff08;Contrastive Language-Image Pre-training&#xff09;contrastive learning、zero-shot learing、mutimodel用文本作为监督信号来训练可迁移的视觉模型CLIP’s zero-shot performance, although comparable to…

Eureka处理流程

1、Eureka Server服务端会做什么 1、服务注册 Client服务提供者可以向Server注册服务&#xff0c;并且内部有二层缓存机制来维护整个注册表&#xff0c;注册表是Eureka Client的服务提供者注册进来的。 2、提供注册表 服务消费者用来获取注册表 3、同步状态 通过注册、心跳机制…

海康多相机同步取流保存图片

话不多说&#xff0c;直接上代码。代码里包含了多窗口显示图像和保存图片。 #"rtsp://admin:123456qq192.168.10.192/stream1" # rtsp://admin:Admin123192.168.100.103:554/Streaming/Channels/101 #rtsp://admin:Admin123192.168.100.103:554/cam/realmonitor?ch…

redis缓存击穿,redisson分布式锁,redis逻辑过期

什么是缓存击穿&#xff1a; 缓存击穿是指在高并发环境下&#xff0c;某个热点数据的缓存过期&#xff0c;导致大量请求同时访问后端存储系统&#xff0c;引起系统性能下降和后端存储压力过大的现象。 解决方案&#xff1a; 1. redisson分布式锁 本质上是缓存重建的过程中&…

「Verilog学习笔记」四选一多路器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 通过波形示意图我们可以发现&#xff0c;当sel为0&#xff0c;1&#xff0c;2时&#xff0c;输出mux_out分别为d3&#xff0c;d2&#xff0c;d1&#xff0c;那么sel3…

PHP中文转拼音实现

pinyin.php 床前明月光&#xff0c;疑是地上霜。 举头望明月&#xff0c;低头思故乡 <?php /*** PHP 汉字转拼音 [包含20902个基本汉字5059生僻字]* author 楼教主(cik520qq.com)* version v1.2* note 请开启 mb_string 扩展*/var_dump(pinyin(床前明月光&#xff0c;疑是…

【Redis】的简介和安装配置(Linux和windows)及操作命令

目录 一、概述 1.介绍 2.特点 二、安配 1. 安装 2. 配置 3. 主机连接 1.Linux连接 2.windows连接 三、命令 1. 字符串(String) 2. 哈希(Hash) 3. 列表&#xff08;List&#xff09; 4. 集合&#xff08;Set&#xff09; 一、概述 1.介绍 Redis是一个开源的、基…

零代码复现-TCGA联合GEO免疫基因结合代谢基因生信套路(二)

零代码复现-TCGA联合GEO免疫基因结合代谢基因生信套路&#xff08;二&#xff09;-关键基因集的获取和生存数据准备 前面的分析中&#xff0c;下载TCGA和GEO的数据&#xff0c;并进行简单的处理&#xff0c;接下来就是相关基因集的获取和整理&#xff0c;为后期聚类和降维做准…

【PyQt学习篇 · ⑥】:QWidget - 事件

文章目录 事件消息显示和关闭事件移动事件调整大小事件鼠标事件进入和离开事件鼠标按下和释放事件鼠标双击事件鼠标按下移动事件 键盘事件焦点事件拖拽事件绘制事件改变事件右键菜单输入法 事件转发机制案例一案例二案例三 事件消息 显示和关闭事件 showEvent(QShowEvent)方法…

小白如何制作电子画册?看这里,超多画册模板任你挑!

传统纸质版的画册&#xff0c;制作起来即费力又费时&#xff0c;花费还高&#xff0c;想要修改内容还得重新制作&#xff0c;特别麻烦。现在互联网发达&#xff0c;如今已经用上了H5的技术&#xff0c;小白也能快速制作一本翻页电子画册。 只需用FLBOOK&#xff0c;在线就可以制…

git reflog 恢复git reset --hard 回退的内容

首先使用 git reflog 查看处理的历史&#xff0c;历史是由新到旧排列的&#xff0c;找到回退前的commit的id&#xff0c;找的过程可以只关注HEAD的部分&#xff0c;HEAD括号中的值越大越旧&#xff0c;越小越新。 找到后执行以下命令 git reset --hard 你的commit_id 然后…

Linux的历史与环境

目录 Linux的背景介绍 Linux的时代背景-硅谷模式 计算机发展 UNIX发展历史 Linux诞生的偶然与必然 Linux开源 Linux发行版本 搭建Linux的环境 1.直接安装在物理机上 2.使用虚拟机软件 3.使用云服务器 &#xff08;1&#xff09;购买云服务器 &#xff08;2&#x…

OceanBase:03-集群部署

目录 一、集群规划 二、配置要求 三、部署前配置 1.配置 limits.conf 2.配置 sysctl.conf 3.关闭防火墙 4.关闭 SELinux 5.创建数据目录&#xff0c;修改文件所有者信息 6.设置无密码 SSH 登录 7.安装jdk 四、解压执行安装 五、集群部署 1.OBD命令行部署 2. OBD白…

2019年408真题复盘

紫色标记是认为有一定的思维难度或重点总结 红色标记是这次刷真题做错的 记录自己对题目的一些想法与联系&#xff0c;可能并不太关注题目本身。 分数用时 选择部分 80/8036min大题部分41/7094min总分121130min 摘自知乎老哥&#xff1a;“我做历年真题时&#xff0c;绝大部分…

图数据库Neo4j——SpringBoot使用Neo4j 简单增删改查 复杂查询初步

前言 图形数据库是专门用于存储图形数据的数据库&#xff0c;它使用图形模型来存储数据&#xff0c;并且支持复杂的图形查询。常见的图形数据库有Neo4j、OrientDB等。 Neo4j是用Java实现的开源NoSQL图数据库&#xff0c;本篇博客介绍如何在SpringBoot中使用Neo4j图数据库&…

python连接clickhouse (CK)

Author: tkhywang 2810248865qq.com Date: 2023-11-01 11:28:58 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-11-01 11:36:25 FilePath: \PythonProject02\Python读取clickhouse2 数据库数据.py Description: 这是默认设置,请设置customMade, 打开koroFileHead…

【Linux】:Linux开发工具之Linux编辑器vim的使用

&#x1f52b;1.Linux编辑器-vim使用 &#x1f4e4; vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以…

CentOS操作系统的特点

CentOS操作系统的特点如下&#xff1a; 免费开源&#xff1a;CentOS是一个免费开源的操作系统&#xff0c;完全免费&#xff0c;无需花费任何成本。 稳定性高&#xff1a;CentOS以其出色的稳定性和安全性而闻名。它是一个基于Red Hat Enterprise Linux&#xff08;RHEL&#x…

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取 由于一些工程的仿真文件不易产生&#xff0c;所以我们可以利用 quartus 软件自带的 SignalTap 工具对波形进行抓取 对各个信号进行分析处理&#xff0c;让电子器件与FPGA进行正常通讯工作&#xff0c;也验证所绘制的波形图是否一…