基础贪心问题
1.部分背包问题

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 110;
double v[N], w[N];
pair<double, int> a[N];
int n, m;int main(){cin>>n>>m;double x, y;for(int i = 0; i < n; i++){cin>>v[i]>>w[i];a[i] = {w[i] / v[i], i};}sort(a, a + n, greater<pair<double, int>>());double sum = 0, ans = 0;int i = 0;while(sum + v[a[i].second] <= m && i < n){sum += v[a[i].second];ans += w[a[i].second];i++;}if(sum < m && i < n){double x = m - sum;ans += x * a[i].first;}printf("%.2lf", ans);return 0;
}
2.排队接水

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
pair<double, int> a[N];
int n; int main(){cin>>n;double x;for(int i = 0; i < n; i++){cin>>x;a[i] = {x, i};}sort(a, a + n);double sum = 0;int m = n;for(int i = 0; i < n; i++){cout<<a[i].second + 1<<" ";m--;sum += m * a[i].first;}cout<<endl;sum /= n;printf("%.2lf", sum);return 0;
}
3.线段覆盖
按区间右端点升序排序,如果能接上就接

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e6 + 10;
pair<int, int> a[N];
int n; bool cmp(const pair<int, int>& p, const pair<int, int>& q){return p.second < q.second;
}int main(){cin>>n;int x, y;for(int i = 0; i < n; i++){cin>>x>>y;a[i] = {x, y};}sort(a, a + n, cmp);int st, ed = -1e9;int cnt = 0;for(int i = 0; i < n; i++){if(a[i].first >= ed){st = a[i].first;ed = a[i].second;cnt++;}}cout<<cnt;return 0;
}
4.合并果子
用小根堆维护最小值,每次取出两个最小值

#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int>> q;
int n; int main(){cin>>n;int x;for(int i = 0; i < n; i++){cin>>x;q.push(x);}int sum = 0, a = 0, b = 0;while(q.size() > 1){a = q.top();q.pop();b = q.top();q.pop();sum += a + b;q.push(a + b);}cout<<sum;return 0;
}
5.小A的糖果
如果两个相邻的多了,那就先减去第二个,因为第二个还关联第三个

#include<iostream>
#include<queue>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int n, m; int main(){cin>>n>>m;for(int i = 0; i < n; i++){cin>>a[i];}long long sum = 0;for(int i = 0; i < n - 1; i++){if(a[i] + a[i + 1] > m){int x = a[i] + a[i + 1] - m;if(a[i + 1] >= x) a[i + 1] -= x;else{a[i] -= x - a[i + 1];a[i + 1] = 0;}sum += x;}}cout<<sum;return 0;
}
6.删数问题
删掉下坡数

#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int n, m;
string s;int main(){cin>>s;cin>>n;int len = s.size();for(int i = 0; i < len; i++){a[i] = s[i] - '0';}while(n--){for(int i = 0; i < len; i++){if(a[i] > a[i + 1]){for(int j = i; j < len; j++) a[j] = a[j + 1];len--;break;}}}int z = 0, st = 0;while(a[z] == 0 && st < len - 1){z++, st++;}for(int i = st; i < len; i++){cout<<a[i];}return 0;
}
7.陶陶摘苹果(升级版)
按花费力气升序排序,先摘花费力气小的

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
pair<int, int> q[N];
int n, m, a, b;bool cmp(const pair<int, int>& pp, const pair<int, int>& qq){if(pp.second != qq.second) return pp.second < qq.second;else return pp.first < qq.first;
}int main(){cin>>n>>m;cin>>a>>b;int x, y;for(int i = 1; i <= n; i++){cin>>x>>y;q[i] = {x, y};}sort(q + 1, q + n + 1, cmp);int cnt = 0;for(int i = 1; i <= n; i++){if(m - q[i].second >= 0 && a + b >= q[i].first){cnt++;m -= q[i].second;}}cout<<cnt;return 0;
}
8.铺设道路
大的带着小的填,如果后面一个大于前一个高度,那就多填这个差值,最后加上第一个需要填的高度

#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int n;int main(){cin>>n;for(int i = 0; i < n; i++) cin>>a[i];int ans = 0; for(int i = 1; i < n; i++){if(a[i] > a[i - 1]){ans += a[i] - a[i - 1];}}ans += a[0];cout<<ans;return 0;
}
9.混合牛奶
按照价格升序排序,先买便宜的

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 2e6 + 10;
pair<int, int> q[N];
int n, m;int main(){cin>>n>>m;int x, y;for(int i = 0; i < m; i++){cin>>x>>y;q[i] = {x, y};}//cout<<"-------------------"<<endl;sort(q, q + m);int ans = 0, sum = 0;for(int i = 0; i < m; i++){if(sum + q[i].second <= n){ans += q[i].first * q[i].second;sum += q[i].second;//cout<<ans<<endl;}else if(sum < n){ans += (n - sum) * q[i].first;sum = n;break;}else if(sum >= n){break;}//cout<<q[i].first<<" "<<sum<<endl;}cout<<ans;return 0;
}
10.纪念品分组
让大的和小的组合

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 3e4 + 10;
int a[N];
int n, m;int main(){cin>>m>>n;for(int i = 0; i < n; i++) cin>>a[i];sort(a, a + n, greater<int>());int cnt = 0;for(int i = 0, j = n - 1; i <= j; i++){if(a[i] + a[j] <= m){j--;}cnt++;}cout<<cnt;return 0;
}
11.跳跳!
高低高低,反复跳

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 3e4 + 10;
long long a[N];
int n, m;int main(){cin>>n;for(int i = 0; i < n; i++) cin>>a[i];sort(a, a + n, greater<int>());long long sum = 0, ed = 0;for(int i = 0, j = n - 1; i <= j; i++, j--){sum += (a[i] - ed) * (a[i] - ed);sum += (a[j] - a[i]) * (a[j] - a[i]);ed = a[j]; }cout<<sum;return 0;
}
12.分组(难)
二分查找当前满足条件的最后一个小组,如果可以进这个小组,那就进去,否则就新建一个小组

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N], q[N], siz[N];
int n, m;int main(){cin>>n;for(int i = 0; i < n; i++) cin>>a[i];sort(a, a + n);q[0] = 1e9;int cnt = 0, res = 0;for(int i = 0; i < n; i++){int l = 0, r = cnt + 1;while(l + 1 < r){int mid = (l + r) / 2;if(a[i] < q[mid]) r = mid;else l = mid;}if(a[i] == q[l]){q[l]++, siz[l]++;}else{q[++cnt] = a[i] + 1, siz[cnt] = 1;}}int ans = 1e9;for(int i = 1; i <= cnt; i++){ans = min(ans, siz[i]);}cout<<ans;return 0;
}
13.国王游戏(难)
按照左手和右手乘积升序排序,所得的奖赏之和最少

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e3 + 10;
pair<int, int> q[N];
int n, m;bool cmp(const pair<int, int>& pp, const pair<int, int>& qq){if(pp.first * pp.second != qq.first * qq.second) return pp.first * pp.second < qq.first * qq.second;else if(pp.first != qq.first) return pp.first < qq.first;else return pp.second > qq.second;
}int main(){cin>>n;int a, b;for(int i = 0; i <= n; i++){cin>>a>>b;q[i] = {a, b};}sort(q + 1, q + n + 1, cmp);long long ans = 0, sum = 0, res = 1;for(int i = 1; i <= n; i++){cout<<q[i].first<<" "<<q[i].second<<endl;res *= q[i - 1].first;sum = res / q[i].second;ans = max(ans, sum);}cout<<ans;return 0;
}
相关文章:
基础贪心问题
1.部分背包问题 #include<iostream> #include<algorithm> using namespace std; const int N 110; double v[N], w[N]; pair<double, int> a[N]; int n, m;int main(){cin>>n>>m;double x, y;for(int i 0; i < n; i){cin>>v[i]>&g…...
day13 java final 类和对象的初始化执行顺序
final [面试题]请简述final关键字final修饰类(最终的类)-太监类:该类不能被继承。(比如:String StringBuilder,....) final修饰方法(最终的方法):不能被重写 final修饰的变量 :值不…...
蓝桥杯gcd汇总
gcd3014 问题描述 小明和小红是一对恋人,他们相爱已经三年了,在今年的七夕节,小明准备给小红一个特殊的礼物。他想要送给小红一些数字,让小红算出有多少对正整数 (a,b) 满足以下条件: clcm(a,b)−dgcd(a,b)x其中 c,…...
极市平台 | 综述:一文详解50多种多模态图像融合方法
本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。 原文链接:综述:一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…...
数据结构系列-队列的结构和队列的实现
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,…...
MySQL——查询数据的处理
一、并列 连接两个数据列的值,并进行输出的格式化处理(显示为一种统一的格式) concat( 列 1 格式化字 符 ) mysql> select concat(vend_name, vend_country) from vendors; --------------------------------- | concat(vend_name, ve…...
【机器学习300问】59、计算图是如何帮助人们理解反向传播的?
在学习神经网络的时候,势必会学到误差反向传播,它对于神经网络的意义极其重大,它是训练多层前馈神经网络的核心算法,也是机器学习和深度学习领域中最为重要的算法之一。要正确理解误差反向传播,不妨借助一个工具——计…...
ctfshow web入门 php特性 web108--web115
web108 ereg函数相当于而preg_match()函数 ereg函数的漏洞:00截断。%00截断及遇到%00则默认为字符串的结束 strrev函数就是把字符串倒过来 就是说intval处理倒过来的传参c0x36d(877)?ca%00778 web109 异常处理类 通过异常处理类Excepti…...
京东API接口采集商品详情数据(测试入口如下)
京东API接口采集商品详情数据 请求示例,API接口接入Anzexi58 在当今数字化时代,电商平台的API接口成为了获取商品详情数据的重要途径之一。作为中国最大的自营式电商企业,京东提供了丰富的API接口供开发者使用,以便获取京东平台上…...
Mac brew 安装软件
Mac brew 安装软件 homebrew 速度慢 将brew 切换到国内镜像源 # 速度一般 # 步骤一 cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git# 步骤二 cd "$(brew --repo)/Library/Taps/homebrew/homebr…...
【顶部距离计算】计算元素顶部与浏览器顶部的距离
在开发中,我们常常需要计算某个元素顶部与浏览器视口顶部的距离,只需要一个方法即可计算 解决:使用getBoundingClientRect()方法 代码示例: 接收一个参数element表示需要计算的元素 // 计算该元素的顶部距离浏览器的顶部距离 c…...
守护人类健康:人工智能赋能医疗领域创新应用
编者按:每年的4月7日是世界卫生日,又称世界健康日,旨在引起世界各国人民对卫生、健康工作的关注,提高人们对卫生领域的素质和认识,强调健康对于劳动创造和幸福生活的重要性。那么,如果医疗技术能够更加智能…...
linux常用指令(一)——cat、more、cp
cat命令: 用于查询看文件内容 语法:cat linux路径 参数必填,表示要查看文件的目录的路径,(相对,绝对,特殊路径符都可以使用) more命令: 用于查看文件内容,…...
基于RTThread的学习(三):正点原子潘多拉 QSPI 通信 W25Q128 实验
1、基于芯片创建工程 2、QSPI配置 2.1、RTThing_setting 设置组件 2.2、配置board.h 文件 2.3、cubemx生成QSPI的硬件初始化代码;HAL_QSPI_MapInit; 这里注意:你所买的开发板对应的qspi 连接的是否是cubemx 上边显示的,如果不是你需要将引脚…...
Mac反编译APK
文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…...
Java数据结构-队列
目录 1. 队列概念2. 模拟实现队列2.1 链式队列2.2 循环队列 3. 双端队列4. 队列的应用4.1 用队列实现栈4.2 用栈实现队列 1. 队列概念 队列是一种只能在一端进行插入数据操作,另一端进行删除数据操作的数据结构,插入数据的叫队尾,删除数据的…...
JVM专题——类文件结构
本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/class-file-structure.html 🚀 基础(上) → 🚀 基础(中) → 🚀基础(下&am…...
零基础10 天入门 Web3之第2天
10 天入门 Web3之第2天Web3 是互联网的下一代,它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术,该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划,可帮助大家入门 Web3: 一、这是第二…...
Vue和FastAPI实现前后端分离
前言 近期接触了一些开源大模型应用服务,发现很多用的都是FastAPI web框架,于是乎研究了一下它的优势,印象最深有两个:一个是它的异步处理性能比较好,二是它可以类似java swagger的API交互文档,这个对应前…...
34470A是德科技34470A数字万用表
181/2461/8938产品概述: Truevolt数字万用表(34460A、34461A、34465A、34470A)利用是德科技的新专利技术,使您能够快速获得见解、测量低功耗设备并保持校准的测量结果。Truevolt提供全方位的测量能力,具有更高的精度、…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
