贪心算法[1]
首先用最最最经典的部分背包问题来引入贪心的思想。

由题意可知我们需要挑选出价值最大的物品放入背包,价值即单位价值。
我们需要计算出每一堆金币中单位价值。金币的属性涉及两个特征,重量和价值。
所以我们使用结构体。
上代码。
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct Item {int c, w;
};//定义结构体,c代表价值,w代表重量
Item item[1010];//创建结构体变量
bool cmp(Item a, Item b){//定义排序方式return a.w * b.c > b.w * a.c;//单价的转换形式
}//排序函数,说白了就是比性价比
int main() {int N, V;cin >> N >> V;for (int i = 1; i <= N; i++) {cin >> item[i].c >> item[i].w;}sort(item + 1, item + N + 1, cmp);//输入后排序double ans = 0;for(int i=1; i<=N; i++){if(V <= item[i].c){ans += (double)item[i].w / item[i].c * V;//double强转V = 0;break;}else{ans += item[i].w;V -= item[i].c;}}printf("%.2lf", ans);return 0;
}
第二种写法
class Item {//定义一个类里面包含价值和重量两个参数,以方便创建vector数组
public:int w, v;//变量Item(int w, int v) :w(w), v(v) {//列表初始化}};
double solve(vector<int>& wei, vector<int>& val,int t)
{vector<Item>ans;//声明类型为Item的vector数组,每一个元素包含两个变量for (int i = 0; i < wei.size(); i++){ans.push_back(Item(wei[i], val[i]));//将价值和重量填入创建的Item类型数组}sort(ans.begin(), ans.end(), [](Item& a, Item& b) {return(double)a.v / a.w > (double)b.v / b.w; });//对vector数组进行排序,lamba表达式【】为定义排序的格式,这里也可以定义一个bool函数来实现排序的方式double res = 0;for (auto& items : ans)//遍历{if (items.w <= t)//如果第一堆金币总重量小于背包重量全部放入{res += items.v;t -= items.w;}else {res +=(double)items.v / items.w * t;//将剩余的重量用最大的价值单价填入break;}}return res;
}int main()
{int n, t,w,v;cin >> n >> t;vector<int>wei;//创建重量数组vector<int>val;//创建价值数组for (int i = 0; i < n; i++){cin >> w >> v;wei.push_back(w);val.push_back(v);}double ans = solve(wei, val,t);printf("%.2lf", ans);
}

这一题选自洛谷p1223题,根据题意我们可以知道要想得到最短的等待时间得先让排队时间少的先接水。下面介绍两种方法进行解决。
由于题目既要有接水时间又要有序号且这两个元素是对应同一个人,所以我们第一种方法使用结构体。
上代码。
#include <iostream>
#include <vector>
#include <algorithm>
#include<cstdio.h>using namespace std;
struct human {int b, num;//输出的两个变量有联系,用结构体
};
bool cmp(human a, human x)//定义比较的方式
{return a.b < x.b;
}
int main()
{struct human ans[1001];int n, i, j;double time = 0;cin >> n;for (int i = 1; i <= n; i++){cin >> ans[i].b;//每个人的时间ans[i].num = i;//每个人对应的序号}sort(ans + 1, ans + n + 1, cmp);for (int i = 1; i <= n; i++){cout << ans[i].num << " ";}cout << endl;for (j = n - 1; j >= 1; j--){i = n - j;//此时的总人数time += ans[i].b * j;//当前人的等待时间要乘以此时的总人数}printf("%.2lf",time);return 0;
}
第二种方法,不使用结构体,使用vector+pair。
#include <iostream>//洛谷p1223
#include <vector>
#include <algorithm>using namespace std;
int main() {int n;double sum = 0;cin >> n;vector<pair<int, int>> a(n);//既要记录每个人的序号也要记录每个人的时间,定义vector的元素类型为pairfor (int i = 0; i < n; i++) {cin >> a[i].first;//第一个为时间,调用每一个为pair类型元素的firsta[i].second = i + 1;//第二个为序号,调用每一个为pair类型元素的second}sort(a.begin(), a.end());//排序,升序for (int i = 0; i < n; i++) {sum += a[i].first * (n - i - 1);//先排上的人后面所有人都要等待cout << a[i].second << " ";}printf("\n%.2f", sum / n);return 0;
}
相关文章:
贪心算法[1]
首先用最最最经典的部分背包问题来引入贪心的思想。 由题意可知我们需要挑选出价值最大的物品放入背包,价值即单位价值。 我们需要计算出每一堆金币中单位价值。金币的属性涉及两个特征,重量和价值。 所以我们使用结构体。 上代码。 #include <i…...
卢文岩博士受邀参与中国科学院大学校友论坛 解码DPU核心价值
近日,第五届中国科学院大学校友创新论坛正式举行,本次论坛聚焦科技前沿领域,旨在搭建高端对话平台,促进产学研深度融合。在大算力时代——AI技术前沿沙龙上,中科驭数高级副总裁、CTO卢文岩博士受邀分享《DPU——连接算…...
2024年上半年软件设计师试题及答案(回忆版)
目录 基础知识选择题案例题1.缺陷识别的数据流图2.球队、球员、比赛记录的数据库题3.用户、老师、学生、课程用例图4.算法题5.程序设计题基础知识选择题 树的节点,度为4的有4个,度为3的有8个,度为2个有6个,度为1的有10个,问有几个叶子结点 二位数组,一个元素2个字节,A0…...
QGIS使用python代码导出给定坐标图片
代码基于https://blog.csdn.net/x572722344/article/details/108121230进行修改,代码在QGIS内部编译器运行 # -*- coding: utf-8 -*- from osgeo import ogr# 像素[高, 宽] px_geosize [2.645859085290482, 2.6458015267176016]# 待裁剪影像的坐标范围[min_x, min…...
看花眼,眼花缭乱的主食冻干到底应该怎么选?靠谱的主食冻干分享
随着科学养猫知识的普及,主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性,还能提供均衡的营养,有助于维护猫咪的口腔和消化系统健康。许多猫主人认识到了主食冻干喂养的诸多益处,计划尝试这种喂养方式&#…...
开源VS闭源:谁更能推动AI技术的普及与发展?
一、引言 在人工智能(AI)技术的浪潮中,开源与闭源两种模式一直并存,并各自在推动AI技术普及与发展上发挥着重要作用。然而,关于哪种模式更能有效地推动AI技术的普及与发展,一直存在着激烈的讨论。本文将深…...
前端面试题日常练-day28 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末。 1. 在Vue中,以下哪个选项用于监听组件生命周期钩子函数? a) watch b) computed c) lifecycle d) created 2. 在Vue中,以下哪个选项用于在列表渲染时为每个元素…...
好消息!DolphinScheduler官网集成LLM模型问答AI kapa.ai
不少小伙伴可能发现了,Apache DolphinScheduler官网最近默默上线了kapa.ai作为LLM的问答AI。 集成kapa.ai之后,社区用户可以点击Apache DolphinScheduler官网首页右下角的「Ask AI」模块,在接下来弹出的问答框输入自己的问题,即可…...
【软考】下篇 第19章 大数据架构设计理论与实践
目录 大数据处理系统架构特征Lambda架构Lambda架构介绍Lambda架构实现Lambda架构优缺点Lambda架构与其他架构模式对比 Kappa架构Kappa架构介绍Kappa架构实现Kappa架构优缺点 常见Kappa架构变形(Kappa、混合分析系统)Kappa架构混合分析系统的Kappa架构 La…...
创新指南|降低 TikTok CPA 的 9 项专家策略
企业在 TikTok 上投放广告,往往最想确保获得最佳的投资回报。然而,这往往说起来容易做起来难。您需要了解如何利用不同的营销工具、定位策略和创意执行来实现您的业务目标并提高成本效率。本文将分享 9 个行之有效的策略,助您有效降低 TikTok…...
jmeter服务器性能监控分析工具ServerAgent教程
ServerAgent介绍:支持监控CPU,memory,磁盘,网络等,和JMeter集成,在JMeter的图形界面中,可以实时看到监控的数据,但是,它只能监控硬件资源使用情况。 不能监控应用服务 S…...
工作纪实50-Idea下载项目乱码
下载了公司的一份项目代码,发现是gbk格式的,但是我的日常习惯又是utf-8,下载项目以后全是乱码,一脸懵 借用网友的一张图,如果是一个一个文件这么搞,真的是费劲,好几百个文件! 步骤…...
37. 解数独 - 力扣(LeetCode)
基础知识要求: Java: 方法、for循环、if else语句、数组 Python: 方法、for循环、if else语句、列表 题目: 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行…...
使用uniapp编写的微信小程序进行分包
简介: 由于小程序发布的时候每个包最多只能放置2MB的东西,所以把所有的代码资源都放置在一个主包当中不显示,所以就需要进行合理分包,,但是分包后整个小程序最终不能超过20MB。 一般情况下,我习惯将tabba…...
设计模式19——观察者模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 观察者模式(Observ…...
C++算术运算和自增自减运算
一 引言 表示运算的符号称为运算符。 算术运算; 比较运算; 逻辑运算; 位运算; 1 算术运算 算术运算包括加、减、乘、除、乘方、指数、对数、三角函数、求余函数,这些都是算术运算。 C中用、-、*、/、%分别表示加、减…...
Python深度学习:【模型系列】一文搞懂Transformer架构的三种注意力机制
文章目录 1. 什么是注意力机制?2. Transformer 的注意力层2.1 注意力机制基础2.2 理解Q,K,V2.3 交叉注意力层2.4 全局自注意力层2.5 因果注意力层3. 位置编码4. 多头注意力机制5. 总结1. 什么是注意力机制? 注意力机制最初受到人类视觉注意力的启发,目的是让模型在处理大…...
微服务架构中Java的应用
在微服务架构中,Java是一种非常常用的编程语言。Java生态系统非常庞大,有许多框架和工具可以用来构建和管理微服务。 以下是一些在微服务架构中使用Java编写的应用程序的示例: Spring Boot和Spring Cloud:Spring Boot是一种用于快…...
【强训笔记】day25
NO.1 思路:哈希质数判断。 代码实现: #include <iostream> #include<string> #include<cmath> using namespace std;bool isprime(int n) {if(n<2) return false;for(int i2;i<sqrt(n);i){if(n%i0) return false;}return true…...
知识产权与标准化
知识产权与标准化 导航 文章目录 知识产权与标准化导航一、知识产权概述二、保护范围与对象三、保护期限四、知识产权归属五、侵权判定六、标准的分类 一、知识产权概述 知识产权:知识产权是指人们就其智力劳动成果所依法享有的专有权利,通常是国家赋予创造者对其…...
GLM-4.1V-9B-Base与MATLAB联动:科学计算可视化报告的自动生成
GLM-4.1V-9B-Base与MATLAB联动:科学计算可视化报告的自动生成 1. 科研工作流中的痛点与解决方案 科研人员每天都要面对大量实验数据,从原始数据到最终的可视化报告往往需要经历繁琐的步骤。传统的数据分析流程通常包括:数据整理→MATLAB编程…...
Qwen2.5-14B-Instruct+Pixel Script Temple:高校戏剧系AI辅助教学实战案例
Qwen2.5-14B-InstructPixel Script Temple:高校戏剧系AI辅助教学实战案例 1. 项目背景与价值 在高校戏剧教育领域,剧本创作一直是教学难点。传统教学模式下,学生需要花费大量时间在格式规范、基础场景构建等基础性工作上,而教师…...
华为云AI开发认证HCCDA通关指南:从试题解析到实战应用
1. 华为云HCCDA认证:AI开发者的黄金敲门砖 最近两年,AI技术在各行各业的应用越来越广泛,很多开发者都在寻找能够系统学习AI开发的途径。华为云推出的HCCDA(Huawei Cloud Certified Developer Associate)认证࿰…...
别只盯着协议!用TC8测试案例深度解读车载网络中的ARP与ICMP:安全与稳定的隐藏关卡
车载以太网底层协议实战:从TC8测试案例看ARP与ICMP的安全设计 当一辆现代汽车以100km/h行驶时,其车载网络每秒需要处理超过5000条网络报文。这些报文中的绝大多数,都由ARP和ICMP这样的基础协议承载。在传统IT领域被视为"简单"的协议…...
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置 1. 千问3.5-2B模型介绍 千问3.5-2B是Qwen系列的小型视觉语言模型,它能够同时理解图片和生成文本。这个模型特别适合需要结合视觉和语言理解的任务场景…...
3大创新让OpenRocket成为开源工程工具的典范:从问题到实践的完整指南
3大创新让OpenRocket成为开源工程工具的典范:从问题到实践的完整指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket OpenRocket是一款基于Jav…...
Python MCP服务端框架源码剖析(2024最新LTS版内核解密)
第一章:Python MCP服务端框架源码剖析(2024最新LTS版内核解密)Python MCP(Modular Control Protocol)服务端框架2024 LTS版标志着其架构从单体调度向轻量级异步模块总线的重大演进。该版本基于 Python 3.11 构建&#…...
PHY芯片寄存器设计揭秘:从5位地址到分页扩展的演进史
PHY芯片寄存器设计演进:从5位地址到分页扩展的技术革命 当我们在享受千兆以太网带来的高速数据传输时,很少有人会想到这背后隐藏着一场持续了数十年的寄存器架构演进。PHY芯片作为网络通信的物理层核心,其寄存器设计经历了从简单固定到复杂可…...
终极PDF批量处理指南:如何用PDF Arranger自动化文档操作
终极PDF批量处理指南:如何用PDF Arranger自动化文档操作 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive gra…...
Z-Image-GGUF中文支持实测:古风建筑、水墨山水、国潮设计等本土化效果展示
Z-Image-GGUF中文支持实测:古风建筑、水墨山水、国潮设计等本土化效果展示 1. 引言:当AI绘画遇上东方美学 最近在测试各种文生图模型时,我发现了一个挺有意思的现象:很多国外开发的AI绘画工具,在处理中国传统文化元素…...
