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

实验三:贪心

1.减肥的小k1

题目描述

小K没事干,他要搬砖头,为了达到较好的减肥效果,教练规定的方式很特别:
每一次,小K可以把两堆砖头合并到一起,消耗的体力等于两堆砖头的重量之和。

经过 n-1次合并后, 就只剩下一堆了。小K在搬砖头时总共消耗的体力等于每次合并所耗体力之和。小K为了偷懒,希望耗费的体力最小。

例如有 3堆砖头,数目依次为 1、2、9 。可以先将 1 、 2 堆合并,新堆数目为3 ,耗费体力为 3 。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为 12 ,耗费体力为12 。所以总共耗费体力 =3+12=15。可以证明 15为最小的体力耗费值。

输入要求

共两行。

第一行是一个整数 n(1≤n≤1000) ,表示砖头堆数。

第二行n个整数,每个整数表示每堆砖头的砖头块数。

输出要求

一个整数,也就是最小的体力耗费值。

输入样例

3
1 2 9

输出样例

15

这个问题很简单,只需要每次挑两个最小的加到sum里,再将两个数之和放回到数组中,并使得数组有序,操作n-1次之后就得到了想要的解。

#include<bits/stdc++.h>
using namespace std;
int main()
{int n,a[1000],sum=0,i;cin >> n;for ( i = 0; i < n; i++){cin >> a[i];}sort(a, a + n);// 计算两个最小数之和,加入到sum中,并且放回到原数组中使其有序for ( i = 0; i < n - 1; i++) {int temp = a[i + 1] + a[i];//记录前两个最小的值int k = i + 2;//k为第三个的下标// 找到一个合适的位置放置 tempwhile (a[k] < temp && k < n){// 比较第三个和前两个的和,若第三个比前两个要小// 这里 a[k-1]是无效位,因为已经将a[k-1]和a[k-2]的值赋给了temp,可以随意覆盖。a[k - 1] = a[k];//前移k++;}// 找到正确的位置将数字放入该位置a[k - 1] = temp;sum += temp;}cout << sum << endl;return 0;
}

2.最小跳数

题目描述

给定一个非负整数数组,假定你的初始位置为数组第一个位置。数组中的每个元素代表你在那个位置能够跳跃的最大长度。你的目标是到达最后一个下标位置,并且使用最少的跳跃次数。

输入要求

输入一组非负整数数组,数组长度不超过500。

输出要求

最少经过几次跳跃,可以到达最后一个位置。

输入样例

2 3 1 1 4

输出样例

2

#include<bits/stdc++.h>
using namespace std;
int a[501]={0},ct=0;//ct表示跳跃的次数
int jump(int i,int len)
{int k,j=0,l,max=0;// 已经退出了if(i>=len-1) return 0;// 还要继续跳k=a[i];ct++;// 再向前跳k步可以跳出范围if(i+k>=len-1) return 0;// 找出未来a[i]个元素中能跳到的最远距离for(l=i+1;l<=i+k;l++){// 设置一个max用于记录能跳到的最大距离// 如果在位置 l 跳长度为 a[l] 的距离,到达 l+a[l]// 如果 l+a[l] > max 就将下一个落点设置到 j=l 处// 按此方法,每次都跳到该区间中能到达的最远位置,就能得到最优解if(max<=l+a[l]){//更新数据j=l;max=l+a[l];}}jump(j,len); //跳到最远的数组里
}
int main()
{int x,len,i=0;while(cin>>x){a[i++] = x;}len = i;//len表示数组长度jump(0,len);cout<<ct<<endl;return 0;
}

3.区间问题

题目描述

给出n个区间的起点和终点,求最少使用其中多少个区间可以将所有区间所在的区域完全覆盖。(测试的数据确保这1点)。

输入要求

第1行一个整数n,表示n个区间;

第2行开始n行,每行2个整数,表示一个区间范围。

类似[1,4][5,6]被认为是覆盖了[1,6]。

输出要求

从起点开始,按区间先后顺序,输出选中的区间。所选的区间应尽可能向终点扩展。

输入样例

7
1 5
1 6
3 6
1 7
6 9
9 10
7 9

输出样例

1 7
6 9
9 10

输入区间,按照区间左端点将区间进行排序,左端点相同的区间按照右端点排序。

在给定的区间内找到最小值和最大值作为做起点和终点。

初始右区间设定为起点,左区间设定为起点。

#include<bits/stdc++.h>
using namespace std;
struct Area
{int left, right;
}area[100],r[100];
// 定义比较区间大小的规则
bool cmp(Area a,Area b)
{if (a.left < b.left)return true;else if (a.left == b.left && a.right < b.right)return true;else  return false;
}
int main()
{// 初始化int n,i,cnt=0;cin >> n;for ( i = 0; i < n; i++) {cin >> area[i].left >> area[i].right;}// 排序sort(area, area + n, cmp);int right = area[0].left - 1;// 初始的右端点int end = area[n - 1].right;// 终点// 遍历每个区间段,更新右端点的范围for (i = 0; i < n-1;) {int max_right = area[i].right;// 定义能得到的最大右端点int max_index = i;while (area[i].left <= right + 1 && i < n){// 该区间左边小于当前的右端点,+1 这种情况代表两个区间是紧挨着的if (area[i].right > max_right){max_right= area[i].right;//记录能到达的最大的右端点的值max_index = i;//记录能到达的最大的右端点的区间编号}i++;}// 这里每次循环的右端点是受限的,只有一小部分区间会参与// 随着右端点的右移,算法不断接近最优解right = max_right;//更新右的值r[cnt++] = area[max_index];//数组中记录被选择的区间i = max_index;if (right == end) break;//嘿嘿终于到终点啦~~结束}for (i = 0; i < cnt; i++){cout << r[i].left << " " << r[i].right << endl;}return 0;
}

4.种树

题目描述

一条街的一边有几座房子。因为环保原因居民想要在路边种些树,路边的地区被分割成块,并被编号成1…N;
每个部分为一个单位尺寸大小并最多可种一棵树,每个居民想在门前种些树并指定了三个号码B,E,T,这三个数表示该居民想在B和E之间最少种T棵树。
当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l。
居民们想种树的各自区域可以交叉。你的任务是求出能满足所有要求的最少的树的数量。

输入要求

第一行包含数据N,区域的个数;

第二行包含H,房子的数目;

下面的H行描述居民们的需要:B E T。

输出要求

输出能满足所有要求的最少的树的数。

输入样例

9

4

1 4 2

4 6 2

8 9 2

3 5 2

输出样例

5

#include<iostream>
#include<algorithm>
using namespace std;struct request
{//定义一个结构体来存储居民的需求int B,E,T;//B:左端点,E:右端点,T:需要种的树的数量
}a[500];
bool cmp(request a,request b)
{if(a.E==b.E)return a.B<b.B;return a.E<b.E;
}
int main()
{int B,E,T;int N,H;cin>>N>>H;for(int i=1;i<=H;i++){cin>>a[i].B>>a[i].E>>a[i].T;}sort(a+1,a+1+H,cmp);//按照右端点的大小对需求进行排序int num=0;//num表示树的总数int road[10000]={0};//用road数组记录道路上是否已经种树for(int i=1;i<=H;i++)//遍历每一条需求{int ans=0;for(int j=a[i].B;j<=a[i].E;j++)ans+=road[j];//ans表示B到E已经种了多少棵树for(int j=a[i].E;j>=a[i].B&&ans<a[i].T;j--)//尽量从右开始种树 {if(!road[j])//如果tr[j]的位置上还没被种树的话,种树 {road[j]=1;ans++;num++;}}}cout<<num<<endl;return 0;
}

相关文章:

实验三:贪心

1.减肥的小k1 题目描述 小K没事干&#xff0c;他要搬砖头&#xff0c;为了达到较好的减肥效果&#xff0c;教练规定的方式很特别&#xff1a; 每一次&#xff0c;小K可以把两堆砖头合并到一起&#xff0c;消耗的体力等于两堆砖头的重量之和。 经过 n-1次合并后&#xff0c; …...

MySQL日志文件

文章目录1.MySQL中的日志文件2.bin log的作用3.redo log的作用4.bin log和redo log的区别&#xff08;1&#xff09;存储的内容&#xff08;2&#xff09;功能&#xff08;3&#xff09;写入时间&#xff08;4&#xff09;写入方式5.两阶段提交6.undo log的作用1.MySQL中的日志…...

Intel8086处理器使用NASM汇编语言实现操作系统08-关于负数的相关处理idiv/cbw/cwde/cdqu/cwd/cdq/cdo/

很多人都知道一个有符号的数&#xff0c;最高位是1&#xff0c;则表示负数&#xff0c;最高位是0&#xff0c;则表示正数&#xff0c;如果假设我的CPU是4位CPU&#xff0c;那么对于1001这个数&#xff0c;是表示9&#xff0c;还是表示-7呢&#xff1f;&#xff1f;&#xff1f;…...

JavaScript 混淆技术

根据JShaman&#xff08;JShaman是专业的JavaScript代码混淆加密网站&#xff09;提供的消息&#xff0c;JavaScript混淆技术大体有以下几种&#xff1a; 变量混淆 将带有JS代码的变量名、方法名、常量名随机变为无意义的类乱码字符串&#xff0c;降低代码可读性&#xff0c;如…...

安装库报错:No CUDA runtime is found, using CUDA_HOME=‘/usr/local/cuda-11.3‘

1、报错内容 安装库时报错&#xff1a; No CUDA runtime is found, using CUDA_HOME/usr/local/cuda-11.32、检查 查看cuda版本和pytorch版本 python 进入python环境 import torch torch.__version__ torch.cuda.is_available()nvidia-smi 因此发现是由于该虚拟环境中CUDA与…...

CVTE前端面经(2023)

CVTE前端面经项目介绍&#xff08;重点&#xff09;在数据B中找到数组A对应的值&#xff0c;并把数组B对应的值放在数据最前面css1 定位2 外边距3 css高级应用3.1. 过渡3.2. 变形2. 浮动2.1 浮动元素特点2. 2 清除浮动3. html5语义标签4. 实现圣杯布局的两种方式4.1 定位浮动4.…...

基于EB工具的TC3xx_MCAL配置开发02_ICU模块配置

目录 1.概述2. ICU 硬件通道属性确认3. ICU通道配置3.1 添加一个Chanel3.2 IcuChannel->General配置3.3 IcuSignalMeasurement配置3.4 GtmTimerInputConfiguration配置3.5 MCU中的关联配置3.5.1 分配TIM资源给ICU使用3.5.2 设置TIM通道时钟分频系数1.概述 本篇开始我们基于…...

jmeter高阶系列--beanshell返回值中提取参数

1 准备环境 jmeter版本&#xff1a; ** &#xff0c;JDK&#xff1a;1.8将json.jar包置于…\apache-jmeter-5.1\lib\下&#xff1b;否则会报&#xff1a;Typed variable declaration : Class: JSONObject not found in namespace的错误&#xff1b;处理器&#xff1a;Beanshel…...

面向对象

面向对象面向对象一、什么是对象二、什么是面向对象三、对象四、什么是类五、实例变量六、实例方法七、方法重载(overload)八、构造方法九、对象的创建过程十、构造方法重载十一、this关键字面向对象 一、什么是对象 万物皆对象。 二、什么是面向对象 面向对象是一种编程思想。…...

mpi4py 运行过程中出现Read -1, expected xxx, errno = 1 解决方案

目录 问题描述 代码1&#xff08;串行&#xff09; 代码2&#xff08;并行&#xff09; 代码2执行时所用指令 错误信息 解决方案 解决方案1 解决方案2 问题描述 今天正在学习使用mpi4py&#xff0c;在对比运行以下2个代码时疯狂报错&#xff1a; 代码1&#xff08;串…...

PMP考前冲刺3.07 | 2023新征程,一举拿证

题目1-2&#xff1a;1.某公司启动了一个新型智能家电研发敏捷项目&#xff0c;组织上聘请了一位敏捷管理专业人士。在项目执行过程中&#xff0c;敏捷团队反馈用户故事包含的信息不足&#xff0c;无法理解需求&#xff0c;敏捷管理专业人应该怎么做&#xff1f;A.教导产品负责人…...

60条Python日常工作中的高频写法,收藏

一、 数字 1 求绝对值 绝对值或复数的模 In [1]: abs(-6) Out[1]: 62 进制转化 十进制转换为二进制&#xff1a; In [2]: bin(10) Out[2]: 0b1010十进制转换为八进制&#xff1a; In [3]: oct(9) Out[3]: 0o11十进制转换为十六进制&#xff1a; In [4]: hex(15) Out[4]:…...

(小甲鱼python)函数笔记合集七 函数(XI)总结 python函数的函数文档、类型注释、内省详解

一、基础复习 函数的基本用法 创建和调用函数 函数的形参与实参等等函数的几种参数 位置参数、关键字参数、默认参数等函数的收集参数*args **args 解包参数详解函数中参数的作用域 局部作用域 全局作用域 global语句 嵌套函数 nonlocal语句等详解函数的闭包&#xff08;工厂函…...

Leetcode是什么

力扣&#xff08;LeetCode&#xff09;是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷&#xff0c;力扣为全球程序员提供了专业的IT 技术职业化提升平台&#xff0c;有效帮助程序员实现快速进步和长期成长。 此外&#xff0c;力扣&#xff08;Leet…...

2023-03-07 MySQL—基于规则优化-子查询优化

简介 在使用MySQL编写查询语句时,有时候无法避免的会写出一些执行起来十分耗时、耗性能的语句,但是MySQL在执行这些语句的时候,还是会竭尽全力的做出一些优化,把这个很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以被称作查询重写 条件化简 我们编写查询…...

Rocketmq技术详解

Rocketmq技术详解 运维部署 docker-compose.yml version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876volumes:- ./logs:/opt/logs- ./store:/opt/storenetworks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxisw…...

TeeChart VCL/FMX v2023 crack

TeeChart VCL/FMX v2023 crack TeeChart Pro VCL允许您为所有领域(包括商业、工程、金融、统计、科学、医疗、实时和网络)创建通用和专用图表和绘图应用程序。TeeChart Pro VCL具有多种图表类型的图表库&#xff0c;包括2D或3D线条、条形图、水平条、区域、点、饼图、箭头、气泡…...

[Java·算法·困难]LeetCode32. 最长有效括号

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3&#x1f449;️ 力扣原文 题目 给你一个只包含 ( 和 ) 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 示例 输入&#xff1a;s "(()&q…...

pytorch如何搭建一个最简单的模型,

一、搭建模型的步骤 在 PyTorch 中&#xff0c;可以使用 torch.nn 模块来搭建深度学习模型。具体步骤如下&#xff1a; 定义一个继承自 torch.nn.Module 的类&#xff0c;这个类将作为我们自己定义的模型。 在类的构造函数 __init__() 中定义网络的各个层和参数。可以使用 to…...

JS实现css的hover效果,兼容移动端

Hi I’m Shendi JS实现css的hover效果&#xff0c;兼容移动端 功能概述 CSS的hover即触碰时触发&#xff0c;在电脑端鼠标触碰&#xff0c;移动端手指触摸 有的时候光靠css实现不了一些效果&#xff0c;例如元素触发hover&#xff0c;其他元素触发动画效果&#xff0c;所以需要…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...