贪心问题 难度[普及-]一赏

目录

#小A的糖果
删数问题
陶陶摘苹果(升级版)
P5019 NOIP2018 提高组 铺设道路


小A的糖果

原文链接:
P3817 小A的糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

小 A 有 n 个糖果盒,第 i 个盒中有 a_i 颗糖果。

小 A 每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中糖的个数之和都不大于 x,至少得吃掉几颗糖。

输入格式

输入的第一行是两个用空格隔开的整数,代表糖果盒的个数 n 和给定的参数 x

第二行有 n 个用空格隔开的整数,第 i 个整数代表第 i 盒糖的糖果个数 a_i

输出格式

输出一行一个整数,代表最少要吃掉的糖果的数量。

样例 #1

样例输入 #1
3 3
2 2 2
样例输出 #1
1

样例 #2

样例输入 #2
6 1
1 6 1 2 0 4
样例输出 #2
11

样例 #3

样例输入 #3
5 9
3 1 4 1 5
样例输出 #3
0

提示

样例输入输出 1 解释

吃掉第 2 盒中的一个糖果即可。

样例输入输出 2 解释

第 2 盒糖吃掉 6 颗,第 4 盒吃掉 2 颗,第 6 盒吃掉 3 颗。

数据规模与约定

在这里插入图片描述

做题思想过程(菜)

#include <bits/stdc++.h>
using namespace std;
int main()
{ios::sync_with_stdio(0),cout.tie(0);cin.tie(0);int N,x,ans=0,chg;cin>>N>>x;int num[N];for (int i = 0; i < N; i++)cin>>num[i];for (int i = 1; i < N; i++){if (num[i]+num[i-1]>x){chg = num[i]+num[i-1]-x;num[i] -= chg;ans+= chg;}}cout<<ans;	return 0;
}

上述问题4个测试点没过

  • 原因一: 没开long long
    开了long long 再过俩
  • 原因二 : 没 考虑第一个首位
    e.g. 输入
3 10
9999 0 11

正确输出 9990 但是输出了9989 (给减成负数


删数问题

题目描述

键盘输入一个高精度的正整数 N N N(不超过 250 250 250 位),去掉其中任意 k k k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 N N N k k k,寻找一种方案使得剩下的数字组成的新数最小。

输入格式

输入两行正整数。

第一行输入一个高精度的正整数 n n n

第二行输入一个正整数 k k k,表示需要删除的数字个数。

输出格式

输出一个整数,最后剩下的最小数。

样例 #1

样例输入 #1

175438 
4

样例输出 #1

13

#include <bits/stdc++.h>
using namespace std;
int main()
{ios::sync_with_stdio(0),cout.tie(0);cin.tie(0);string S;cin>>S;int k,i;cin>>k;while(k){if(S[0]=='0'){S.erase(0,1);continue;}	// 坑 删的时候怎么有0for (i=0;S[i]<S[i+1];){i++;}S.erase(i,1);k--;} while(S[0]=='0'&&S.length()>1)S.erase(0,1);cout<<S;return 0;
}
}

不会(一个点没过,搁置

陶陶摘苹果(升级版)

题目描述

又是一年秋季时,陶陶家的苹果树结了 n n n 个果子。陶陶又跑去摘苹果,这次他有一个 a a a 公分的椅子。当他手够不着时,他会站到椅子上再试试。

这次与 NOIp2005 普及组第一题不同的是:陶陶之前搬凳子,力气只剩下 s s s 了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在 s < 0 s<0 s<0 之前最多能摘到多少个苹果。

现在已知 n n n 个苹果到达地上的高度 x i x_i xi,椅子的高度 a a a,陶陶手伸直的最大长度 b b b,陶陶所剩的力气 s s s,陶陶摘一个苹果需要的力气 y i y_i yi,求陶陶最多能摘到多少个苹果。

输入格式

1 1 1 行:两个数 苹果数 n n n,力气 s s s

2 2 2 行:两个数 椅子的高度 a a a,陶陶手伸直的最大长度 b b b

3 3 3 行~第 3 + n − 1 3+n-1 3+n1 行:每行两个数 苹果高度 x i x_i xi,摘这个苹果需要的力气 y i y_i yi

输出格式

只有一个整数,表示陶陶最多能摘到的苹果数。

样例 #1

样例输入 #1
8 15
20 130
120 3
150 2
110 7
180 1
50 8
200 0
140 3
120 2

样例输出 #1

4

提示

对于 100 % 100\% 100% 的数据, n ≤ 5000 n\leq 5000 n5000, a ≤ 50 a\leq 50 a50, b ≤ 200 b\leq 200 b200, s ≤ 1000 s\leq 1000 s1000, x i ≤ 280 x_i\leq 280 xi280, y i ≤ 100 y_i\leq 100 yi100


#include <bits/stdc++.h>
using namespace std;struct Struct {int x, y;
};bool cmp(const Struct& a, const Struct& b) {return a.y < b.y;
}int main() {ios::sync_with_stdio(0), cout.tie(0), cin.tie(0);int n, s;cin >> n >> s;Struct ap[n];int a, b, x, y, f = 0;cin >> a >> b;for (int i = 0; i < n; i++) {cin >> x >> y;if (a + b >= x) {ap[f].x = x;ap[f].y = y;f++;}}sort(ap, ap + f, cmp);int i=0,ans=0;while(s){if(s>ap[i].y&&i<f){s-=ap[i].y;ans++;i++;}elsebreak;}cout<<ans;return 0;
}

为什么不用桶排序…(上面的也没过

![#include <bits/stdc++.h>
using namespace std;struct Struct {int x, y;
};
int to[300];
int main() {ios::sync_with_stdio(0), cout.tie(0), cin.tie(0);int n, s;cin >> n >> s;int a, b, x, y;cin >> a >> b;for (int i = 0; i < n; i++) {cin >> x >> y;if (a + b >= x) {to[y]++;}}int ans=0;for(int i=0;i<300;i++){while(to[i]>0&&s>i){s-=i;ans++;to[i]--;}}cout<<ans;return 0;
}

换桶排序了,还是第一个点没过
您猜怎么着,S=0,还有免费的苹果.
while(to[i]>0&&s>=i) 加上=即可


铺设道路

[P5019 NOIP2018 提高组] 铺设道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

春春是一名道路工程师,负责铺设一条长度为 n n n 的道路。

铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块首尾相连的区域,一开始,第 i i i 块区域下陷的深度为 d i d_i di

春春每天可以选择一段连续区间 [ L , R ] [L,R] [L,R] ,填充这段区间中的每块区域,让其下陷深度减少 1 1 1。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 0 0 0

春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 0 0 0

输入格式

输入文件包含两行,第一行包含一个整数 n n n,表示道路的长度。 第二行包含 n n n 个整数,相邻两数间用一个空格隔开,第 i i i 个整数为 d i d_i di

输出格式

输出文件仅包含一个整数,即最少需要多少天才能完成任务。

样例 #1

样例输入 #1
6   
4 3 2 5 3 5
样例输出 #1
9

提示

【样例解释】
一种可行的最佳方案是,依次选择:
[ 1 , 6 ] [1,6] [1,6] [ 1 , 6 ] [1,6] [1,6] [ 1 , 2 ] [1,2] [1,2] [ 1 , 1 ] [1,1] [1,1] [ 4 , 6 ] [4,6] [4,6] [ 4 , 4 ] [4,4] [4,4] [ 4 , 4 ] [4,4] [4,4] [ 6 , 6 ] [6,6] [6,6] [ 6 , 6 ] [6,6] [6,6]

【数据规模与约定】

对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 10 1 ≤ n ≤ 10 1n10
对于 70 % 70\% 70% 的数据, 1 ≤ n ≤ 1000 1 ≤ n ≤ 1000 1n1000
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 100000 , 0 ≤ d i ≤ 10000 1 ≤ n ≤ 100000 , 0 ≤ d_i ≤ 10000 1n100000,0di10000


题解太强了(
题解一:贪心

#include<bits/stdc++.h>
using namespace std;
int n,a[100005];
long long ans=0;
int main()
{cin>>n;for(int i=1;i<=n;i++)     cin>>a[i];/**/for(int i=2;i<=n;i++)     if(a[i]>a[i-1]) ans+=a[i]-a[i-1];cout<<ans+a[1];   //+a[1]return 0;
}
//其实这个可以不用数组

题解二递推

#include<bits/stdc++.h>
using namespace std;
int n,a[110000],f[110000];
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>a[i];f[1]=a[1];	//初始化for(int i=2;i<=n;i++){if(a[i]<=a[i-1])f[i]=f[i-1];	//推else f[i]=f[i-1]+(a[i]-a[i-1]);  //后面比前面 *深* 时}cout<<f[n]<<endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

用PowerPoint创建毛笔字书写动画

先看看下面这个毛笔字书写动画&#xff1a; 这个动画是用PowerPoint创建的。下面介绍创建过程。 1、在任何一款矢量图片编辑软件中创建一个图片&#xff0c;用文字工具输入文字内容。我用的是InkScape。排好版后将图片保存为.svg格式的矢量图片文件。 2、打开PowerPoint&…

openEuler 22.03 GPT分区表模式下磁盘分区管理

目录 GPT分区表模式下磁盘分区管理parted交互式创建分区步骤 1 执行如下步骤对/dev/sdc磁盘分区 非交互式创建分区步骤 1 输入如下命令直接创建分区。 删除分区步骤 1 执行如下命令删除/dev/sdc1分区。 GPT分区表模式下磁盘分区管理 parted交互式创建分区 步骤 1 执行如下步骤…

【刷题篇】双指针(一)

文章目录 1、移动零2、复写零3、快乐数4、盛最多水的容器 1、移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 class Solution { pub…

SRC公益漏洞挖掘思路分享

0x00 前言 第一次尝试挖SRC的小伙伴可能会觉得挖掘漏洞非常困难&#xff0c;没有思路&#xff0c;不知道从何下手&#xff0c;在这里我分享一下我的思路 0x01 挖掘思路 确定自己要挖的漏洞&#xff0c;以及该漏洞可能存在的功能点&#xff0c;然后针对性的进行信息收集 inurl…

[1726]java试飞任务规划管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java试飞任务规划管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

延时任务通知服务的设计及实现(三)-- JDK的延迟队列DelayQueue

一、接着上文 上文我们讲述了使用redisson的RDelayedQueue实现分布式延迟队列&#xff0c;本文我们将自己JDK的延迟队列DelayQueue实现。 相比前者的实现&#xff0c;作为进程内的延迟队列&#xff0c;它会遇到许多技术难点&#xff1a; 如何支持分布式的多个节点部署场景应…

matplotlib和pandas与numpy

1.matplotlib介绍 一个2D绘图库&#xff1b; 2.Pandas介绍&#xff1a; Pandas一个分析结构化数据的工具&#xff1b; 3.NumPy 一个处理n纬数组的包&#xff1b; 4.实践&#xff1a;绘图matplotlip figure()生成一个图像实例 %matplotlib inline&#xff1a;图形直接在…

就业班 第三阶段(redis) 2401--5.7 day2 redis2 哨兵(前提是做好了主从)+redis集群

1、设置密码&#xff08;redis&#xff09; 先在redis.conf里面找到这个 后面写上要设置的密码即可 2、哨兵模式 监控redis集群中master状态的的工具 在做了主从的前提下 主 从1 从2 作用 1)&#xff1a;Master状态检测 2)&#xff1a;如果Master异常&#xff0c;则会进行…

Linux--基础IO(文件描述符fd)

目录 1.回顾一下文件 2.理解文件 下面就是系统调用的文件操作 文件描述符fd&#xff0c;fd的本质是什么&#xff1f; 读写文件与内核级缓存区的关系 据上理论我们就可以知道&#xff1a;open在干什么 3.理解Linux一切皆文件 4.C语言中的FILE* 1.回顾一下文件 先来段代码…

数据结构——链表(精简易懂版)

文章目录 链表概述链表的实现链表的节点&#xff08;单个积木&#xff09;链表的构建直接构建尾插法构建头插法构建 链表的插入 总结 链表概述 1&#xff0c;链表&#xff08;Linked List&#xff09;是一种常见的数据结构&#xff0c;用于存储一系列元素。它由一系列节点&…

Mysql查询语句(一)简单查询和简单条件查询

MySQL的所有语句中&#xff0c;我们日常用的最多的其实就是查询语句。因此这篇文章主要介绍查询语句中的一些基础语法。 目录 简单查询 简单条件查询 简单查询 最简单的查询语句的语法如下所示&#xff1a; SELECT * FROM student; 它的语法解析如下&#xff1a; SELECT关…

学习笔记:【QC】Android Q qmi扩展nvReadItem/nvWriteItem

一、qmi初始化 流程图 初始化流程: 1、主入口&#xff1a; vendor/qcom/proprietary/qcril-hal/qcrild/qcrild/rild.c int main(int argc, char **argv) { const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **); rilInit RIL_Init; funcs rilInit…

122. Kafka问题与解决实践

文章目录 前言顺序问题1. 为什么要保证消息的顺序&#xff1f;2.如何保证消息顺序&#xff1f;3.出现意外4.解决过程 消息积压1. 消息体过大2. 路由规则不合理3. 批量操作引起的连锁反应4. 表过大 主键冲突数据库主从延迟重复消费多环境消费问题后记 前言 假如有家公司是做餐饮…

无法添加以供审核,提交以供审核时遇到意外错误。如果问题仍然存在,请联系我们

遇到问题&#xff1a; 无法添加以供审核 要开始审核流程&#xff0c;必须提供以下项目&#xff1a; 提交以供审核时遇到意外错误。如果问题仍然存在&#xff0c;请联系我们。 解决办法&#xff1a; 修改备案号为小写&#xff0c; 例如&#xff1a;京ICP备2023013223号-2A 改…

自然语言(NLP)

It’s time for us to learn how to analyse natural language documents, using Natural Language Processing (NLP). We’ll be focusing on the Hugging Face ecosystem, especially the Transformers library, and the vast collection of pretrained NLP models. Our proj…

运动控制“MC_MoveVelocity“功能块详细应用介绍

1、运动控制单位u/s介绍 运动控制单位[u/s]介绍-CSDN博客文章浏览阅读91次。运动控制很多手册上会写这样的单位,这里的u是英文单词unit的缩写,也就是单位的意思,所以这里的单位不是微米/秒,也不是毫米/秒,这里是一个泛指,当我们的单位选择脉冲时,它就是脉冲/秒,也就是…

【排序算法】第四章:归并排序(近万字讲解,通俗易懂)

归并排序 归并排序本质就是一种思想&#xff0c;在很多题目都可以用到 一、归并排序的原理 归并排序&#xff08;MergeSort&#xff09; 是建立在归并操作上的一种有效的排序算法&#xff0c;采用分治法排序&#xff0c;分为分解、合并两个步骤。 分解&#xff1a;将数组分割…

GESP一级考试笔记(C++)

考纲 GESP C 一级考纲 一、计算机基础知识 二、变量 1.变量的声明 想要使用变量&#xff0c;必须先做“声明”&#xff0c;也就是告诉计算机要用到的数据叫什么名字。变量声明的标准语法可以写成&#xff1a;数据类型 变量名; #include <iostream> using namespace s…

速览Coinbase 2024Q1 财报重点:业务全面开花,净利润达11.8亿美元

作者&#xff1a;范佳宝&#xff0c;Odaily 星球日报 近期&#xff0c;Coinbase 发布了其 2024 年第一季度财报。 报告显示&#xff0c;Coinbase 第一季度营收为 16.4 亿美元&#xff0c;高于分析师平均预期的 13.4 亿美元&#xff1b;净利润为 11.8 亿美元&#xff0c;合每股…

PyCharm怎么安装Comate与使用示范

目录 简单介绍Comate 安装步骤详解 Comate使用示范详解 使用总结 简单介绍Comate Baidu Comate智能编码助手是一款基于文心大模型打造的编码辅助工具&#xff0c;具备多重优势&#xff0c;包括代码智能、应用场景丰富、创造价值高、广泛应用等。它能帮助开发者提升编码效率…