备战蓝桥杯---贪心刷题1

话不多说,直接看题:

本质是一个数学题:

我们令xi<0表示反方向传递,易得我们就是求每一个xi的绝对值之和min,我们令平均值为a爸。

易得约束条件:

x1-x2=a1-a,x2-x3=a2-a.....

解得x1=x1-0,x2=x1-((n-1)*a-a2-...an)。。。。

这样就把问题转化成|x1-c1|+|x2-c2|+|...|....

又ci=ci+1+a-ai我们就可以吧c解出来,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
long long n,a[N];
long long sum=0;
long long c[N];
int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);sum+=a[i];}long long av=sum/n;for(int i=n;i>1;i--){c[i]=c[i+1]+av-a[i];}c[1]=0;sort(c+1,c+n+1);long long res=0;for(int i=1;i<=n;i++) res+=abs(c[i]-c[(i+1)/2]);cout<<res;
}

接题:

先转换一下,我们从小岛的角度来看,看看每一个小岛可以被覆盖在x轴上对应的范围,这样问题就转换成了给定若干个区间,最少选多少个点可以使得每一个区间至少选了一个点。

如何贪心?我们先按照右端点排序,扫描每一个线段,若上一个右端点不在区间,那么选右端点。

若在则跳过。

如何严格证明?

我们记cnt为算法得到的结果,opt为最优解。

显然选了cnt个,那么就有cnt个互不相交的区间,因此答案一定大于等于cnt+opt是最优解,得证!

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,d;
struct node{double l,r;
}seg[N];
bool cmp(node a,node b){return a.r<b.r;
}
int main(){cin>>n>>d;bool ff=0;for(int i=0;i<n;i++){int x,y;scanf("%d%d",&x,&y);if(y>d) ff=1;else{double ck=sqrt(d*d-y*y);seg[i].l=x-ck,seg[i].r=x+ck;}}if(ff) cout<<-1<<endl;else{sort(seg,seg+n,cmp);int cnt=0;double last=-1000000000;for(int i=0;i<n;i++){if(last<seg[i].l){cnt++;last=seg[i].r;}}cout<<cnt;}
}

接题:

很容易想到,假如每一个人的钱都比平均大,那么都取平均即可。

假如有一个人少,那么让它填满,剩下的平均分摊给大于平均的。

下面是严格的证明:

我们把方差的每一项看成xi,xi的和为0,由均值不等式知我们要让每一个数尽可能相同,假如有一个小于平均值,假设它不选满,则结果肯定变大。

因此,若a1<平均值,那么我们就取a1,后面的式子满足加起来和为s-a1,因此剩下的加起来就是s-a1-(n-1)/n*s;此时每一个取到(s-a1)/(n-1)是最优的,而若此时大于该值,那么后面的肯定也大(排过序),因此取其即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=500100;
int n,a[N];
int main(){long double s;scanf("%d%Lf",&n,&s);for(int i=0;i<n;i++) scanf("%d",&a[i]);sort(a,a+n);long double res=0,av=s/n;for(int i=0;i<n;i++){double cur=s/(n-i);if(a[i]<cur) cur=a[i];res+=(cur-av)*(cur-av);s-=cur;}printf("%.4Lf\n",sqrt(res/n));
}

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

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

相关文章

火鸟门户系统—旅游度假模块

旅游度假 简介 旅游度假功能为用户提供一站式旅游度假服务&#xff0c;车站、酒店民宿、门票、跟团游、货运、签证等多个方面&#xff0c;满足用户多样化的旅游需求。 功能 订单&#xff1a;提供订单预订服务&#xff0c;用户可以根据自身需求选择合适的旅行产品。酒店民宿…

人工智能+的广泛应用,已渗透到生活的方方面面

引言 随着科技的不断进步和人工智能技术的快速发展&#xff0c;我们正处于一个人工智能时代。人工智能不仅仅是一种技术&#xff0c;更是一种革命性的变革力量&#xff0c;它正在以前所未有的方式改变着我们的生活和工作方式。 人工智能&#xff08;AI&#xff09;指的是人工…

C++算法补充---STL

这里写目录标题 CSTL容器字符串函数(string容器函数)字符串转字符 算法交换函数拿到容器或者数组的第一个最大&#xff08;小&#xff09;值元素的下标或者值排序函数求字符数组的有效长度atoi函数&#xff08;将字符串类型的数字转为真正的int型数字&#xff09;string转字符 …

mt7601 kernel 4.19内核版本使用iw,以及交叉编译后使用iwpriv

目录 内核自带 内核配置 移植 iw工具 移植mt7601源码 内核自带 内核配置 在linux内核4.19版本中已经把mt7601的驱动加入到内核源码中。 内核需要需要开启mac802.11 使用iwpriv 提示如下&#xff0c;iwpriv工具无法使用了&#xff0c;而iwconfig可以使用 /opt/ko # iwp…

数论与线性代数——整除分块【数论分块】的【运用】【思考】【讲解】【证明(作者自己证的QWQ)】

文章目录 整除分块的思考与运用整除分块的时间复杂度证明 & 分块数量整除分块的公式 & 公式证明公式证明 代码code↓ 整除分块的思考与运用 整除分块是为了解决一个整数求和问题 题目的问题为&#xff1a; ∑ i 1 n ⌊ n i ⌋ \sum_{i1}^{n} \left \lfloor \frac{n}{…

手写三维点云配准的迭代最近点(ICP)算法

在本篇博客中,主要深入研究迭代最近点(ICP)算法,特别是针对三维点云配准的实现。分析一个C++代码片段并解释其关键组成部分。(主要参考高博的ICP算法) 简介 ICP是计算机视觉和机器人领域广泛使用的技术,用于将两组三维点进行配准。其主要应用是将一组观测点与参考模型进…

在idea中使用sql语言提醒

1.Settings中设置 2. 配置好数据库名字 3. altenter 注入方言 注入后是下面这样

Linux:冯·诺依曼结构 OS管理机制

Linux&#xff1a;冯诺依曼结构 & OS管理机制 冯诺依曼结构OS管理机制OS对下层硬件的管理OS对上层用户的服务 冯诺依曼结构 我们常见的计算机&#xff0c;比如笔记本&#xff0c;台式电脑。以及一下不常见的计算机&#xff0c;比如服务器&#xff0c;几乎都遵循冯诺依曼体…

如何理解Java注解反射

Java 8 中文版 - 在线API手册 - 码工具 什么是注解 ◆Annotation是从JDK5.0开始引入的新技术 ◆Annotation的作用: 不是程序本身&#xff0c;可以对程序作出解释.(这一点和注释(comment)没什么区别) 可以被其他程序(比如:编译器等)读取 Annotation的格式: > 注解是以&quo…

redis 的StringRedisTemplate

6.3 StringRedisTemplate 尽管JSON的序列化方式可以满足我们的需求&#xff0c;但依然存在一些问题&#xff0c;如图&#xff1a; 为了在反序列化时知道对象的类型&#xff0c;JSON序列化器会将类的class类型写入json结果中&#xff0c;存入Redis&#xff0c;会带来额外的内存…

ES8 学习 -- async 和 await / 对象方法扩展 / 字符串填充

文章目录 1. async 和 await1.1 基本语法1.2 使用示例1.3 案例练习 2. 对象方法扩展2.1 Object.values(obj)2.2 Object.entries(obj)2.3 Object.getOwnPropertyDescriptors(obj)使用示例 3. 字符串填充4. 函数参数的末尾加逗号 1. async 和 await async 函数&#xff0c;使得异…

JavaScript 设计模式之代理模式

代理模式&#xff0c;代理&#xff08;proxy&#xff09;是一个对象&#xff0c;它可以用来控制对另一个对象的访问。 现在页面上有一个香港回归最想听的金典曲目列表&#xff1a; <ul id"container"><li>我的中国心</li><li>东方之珠<…

Photoshop 2024 Mac/win---图像处理的新纪元,解锁无限创意

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;以其卓越的性能和广泛的应用领域&#xff0c;赢得了设计师、摄影师、图形艺术家等各类创意工作者的青睐。它提供了丰富的绘画和编辑工具&#xff0c;让用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实…

Redis缓存设计与性能优化【缓存和数据库不一致问题,解决方案:1.加过期时间这样可以一段时间后自动刷新 2.分布式的读写锁】

Redis缓存设计与性能优化 缓存与数据库双写不一致 缓存与数据库双写不一致 在大并发下&#xff0c;同时操作数据库与缓存会存在数据不一致性问题 1、双写不一致情况 2、读写并发不一致 解决方案&#xff1a; 1、对于并发几率很小的数据(如个人维度的订单数据、用户数据等)&a…

LabelConvert: 目标检测和图像分割数据集格式转换工具

LabelConvert LabelConvert是一个目标检测和图像分割的数据集格式转换工具&#xff0c;支持labelme、labelImg与YOLO、VOC和COCO 数据集格式之间的相互转换。 支持的转换格式 安装 pip install label_convert具体使用方法 由于文章篇幅所限&#xff0c;请移步LabelConvert官…

算法学习——LeetCode力扣动态规划篇8(300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组、1143. 最长公共子序列)

算法学习——LeetCode力扣动态规划篇8 300. 最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删…

Flutter开发之图片选择器

使用FLutter开发了一个图片选择的组件&#xff0c;功能如下&#xff1a; 1、支持设置最大可选图片的个数&#xff1b; 2、根据选择的图片个数自适应容器组件的高度&#xff1b; 3、可设置容器的最大高度&#xff1b; 4、支持点击放大和删除功能&#xff1b; 具体效果如下 …

Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

漂亮哇塞的可视化大屏页面该如何设计?

要提升可视化界面的设计美观度&#xff0c;可以从以下几个方面入手&#xff1a; 使用高质量的图片和素材&#xff1a;使用高质量的图片和素材可以让界面更加美观。可以选择高清晰度的图片和素材&#xff0c;使得整个界面的质感更加高端。突出重点&#xff1a;在界面设计中&…

《QT实用小工具·八》数据库通用翻页类

1、概述 源码放在文章末尾 该项目实现数据库通用翻页类&#xff0c;主要包含如下功能&#xff1a; 1:自动按照设定的每页多少行数据分页 2:只需要传入表名/字段集合/每页行数/翻页指示按钮/文字指示标签 3:提供公共静态方法绑定字段数据到下拉框 4:建议条件字段用数字类型的主…