贪心算法[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…...

知识产权与标准化
知识产权与标准化 导航 文章目录 知识产权与标准化导航一、知识产权概述二、保护范围与对象三、保护期限四、知识产权归属五、侵权判定六、标准的分类 一、知识产权概述 知识产权:知识产权是指人们就其智力劳动成果所依法享有的专有权利,通常是国家赋予创造者对其…...

【LeetCode:2769. 找出最大的可达成数字 + 模拟】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

编程5年的老哥说:我代码里从来不用锁,谁爱...
技多不压身! 大家好,我是 javapub。 今天一个朋友找我吐槽,说自己平时在工作中几乎用不到需要上锁的场景,就算有也只是并发很小、或者直接从有业务设计上就规避掉了。但一到面试,都是各种锁题,很头疼。 面…...

CogAgent:开创性的VLM在GUI理解和自动化任务中的突破
尽管LLMs如ChatGPT在撰写电子邮件等任务上能够提供帮助,它们在理解和与GUIs交互方面存在挑战,这限制了它们在提高自动化水平方面的潜力。数字世界中的自主代理是许多现代人梦寐以求的理想助手。这些代理能够根据用户输入的任务描述自动完成如在线预订票务…...

C++容器之位集(std::bitset)
目录 1 概述2 使用实例3 接口使用3.1 constructor3.2 count_and_size3.3 test3.4 any3.5 none3.6 all3.7 set3.8 reset3.9 filp3.10 to_string3.11 to_ulong3.12 to_ullong3.13 operators1 概述 位集存储位(只有两个可能值的元素:0或1,true或false,…)。 该类模拟bool…...

《Ai学习笔记》自然语言处理 (Natural Language Processing):常见机器阅读理解模型(上)02
Glove 词向量: 在机器理解中的词的表示: 词袋(bow,bag of words) one-hot 词向量 word2vec glove 目的:将一个词转换成一个向量 Word2vec 是一种用于生成词向量的工具包,由Google在2013年开源推出…...

老师如何在线发布期末考试成绩查询?
在这个数字化时代,教育领域也迎来了翻天覆地的变化。传统的纸质成绩查询方式已经逐渐被在线成绩查询所替代。如何高效、便捷地进行在线期末考试成绩查询? 成绩的录入与上传。教师需要将学生的考试成绩准确无误地录入系统。这一步骤需要细心和耐心&#x…...

TensorBoard相关学习
TensorBoard是Google为TensorFlow框架开发的一个强大的可视化工具,它可以帮助用户更直观地理解、分析和调试机器学习模型的训练过程。通过TensorBoard,你可以可视化模型的结构、监控训练过程中的指标变化(如损失函数、准确率)、查…...

敏感数据处理的艺术:安全高效的数据提取实践与挑战
在数字化时代,数据已成为驱动经济社会发展的核心要素之一。然而,伴随数据量的爆炸性增长,敏感数据的管理和保护成为了信息安全领域的重大挑战。敏感数据,包括个人身份信息、财务记录、健康档案、商业秘密等,一旦泄露&a…...

使用Python操作excel单元格——获取带公式单元格的值
一、前言 通过使用Python的openpyxl库,来操作excel单元格,获取带公式的单元格中的值。 把学习的过程分享给大家。大佬勿喷! 二、程序展示 1、表格准备 使用前面创建过的表格,获取B6单元格的求和值。 2、获取表格的值 wb o…...

PHP开发入门
PHP官网:PHP: Hypertext Preprocessor apache官网:https://httpd.apache.org/ 一、搭建PHP环境 下载apache 进入官网点击download 选择下载windows版本文件 点击进入下载界面 点击下载64位版本文件 下载后解压文件 解压文件后进入 D:\httpd-2.4.59-24…...