最小化价格

Wannafly挑战赛15:A-最小化价格(贪心) 题目链接 1013. Battle Over Cities (25) Time limit:1000 ms Memory limit:65536 kB Problem Descrpition 现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格 要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格 每个队伍的人都要在同一个地方每个地方只能有一个... 阅读详情

题目描述

现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格
要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格
每个队伍的人都要在同一个地方每个地方只能有一个队伍

输入描述:

第一行n,m
第二行n个数,表示每组的人数
接下来m行,每行两个数,表示可容纳的最大人数和选择的价格

输出描述:

输出最小化选择的价格,无解输出-1
示例1

输入

3 4
2 3 4
1 2
2 3
3 4
4 5

输出

12

备注:

所有数据小于1e5



题解:贪心,把人数场地人数与小组人数都从大到小排列,然后每次搜索匹配,把每次满足条件的情况中价格最小的,这里可以用优先队列,把满足条件的情况按价格从小到大排列,因为人数都是从大到小排列的,所以满足多人数的场地一定满足少人数的场地,不用将cnt复0,每次将所有情况加入后从中找到价格最小的一个场地即可,即是队列的队首


#include<bits/stdc++.h>
#include<queue>
using namespace std;

const int maxn = 1e5+10;

struct node{
	int num;
	int pri;
}t[maxn];



int cmpn(node a,node b)
{
	return a.num > b.num;
}

int cmpp(int a,int b)
{
	return a > b;
}

int main()
{
	int n,m;
	int peo[maxn];
	
	cin >> n >> m;
	for(int i = 0; i < n; i++){
		cin >> peo[i];
	} 
	
	for(int i = 0; i < m; i++){
		cin >> t[i].num >> t[i].pri;
	}
	
	sort(t,t+m,cmpn);
	sort(peo,peo+n,cmpp);
	priority_queue< int , vector<int>, greater<int> >q;		//从小到大排列 
	long long sum = 0;
	int cnt = 0;
	
	for(int i = 0; i < n; i++){
		while(t[cnt].num >= peo[i]){		//场地人数满足小组成员,加入队列 
			q.push(t[cnt].pri);
			cnt++;			//cnt不用复位0,因为人数均从大到小排列,满足大的一定也满足小的 
		}
		if (q.empty()){			//如果队列为空说明没有满足的场地,则输出-1 
			printf("-1\n");
			return 0;
		}
		sum += q.top();		//选取最小的
		q.pop(); 
		
	} 
	
	cout << sum << endl;
	return 0;
	

	return 0;
}

【深度优先搜索】【图论】【树】2646. 最小化旅行的价格总和 现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。 每个节点都关联一个价格。给你一个整数数组 price ,其中 price[i] 是第 i 个节点的价格。 给定路径的 价格总和 是该路径上所有节点的价格之和。 另给你一个二维整数数组 trips ,其中 trips[i] = [starti, endi] 表示您从节点 阅读详情

相关推荐

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 350

n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到m的时候此人出圈,直到圈中只剩一人为止.求最后一个人的原始编号。

#include int   yuesefu(int n,int m)     { int i,r=0;    for(i=1;i  r=(r+m)%(n-i+1);    return r+1;  }   void main(){  int n=5,m=2;  int j;  j=yuesefu(n,m);  printf("%d",j);} 分析:目标是算出来第n-1次被踢出去的人的下

每天进步一点点,踏踏实实向着理想迈进 7976

TESSY创建单元测试或集成测试工程

我们以tessy5.1为例,给大家展示单元测试和集成测试工程的创建过程。

空气中的告白专栏 1686

约瑟夫环问题

一、问题描述 约瑟夫环问题是一个很经典的问题:一个圈共有N个人(N为不确定的数字),第一个人的编号为0或者1(两个都可以,看你的程序如何编写),假设这边我将第一个人的编号设置为1号,那么第二个人的编号就为2号,第三个人的编号就为3号,第N个人的编号就为N号,现在提供一个数字M,第一个人开始从1报数,第二个人报的数就是2,依次类推,报到M这个数字的人出局,紧接着从出局的这个人的下一个人重新开始从1报数,和上面过程类似,报到M的人出局,直到N个人全部出局,请问,这个出局的顺序是什么? 举一个简单的例子:假.

xiaoxi_hahaha的博客 11万+

Synares病毒实战:如何从U盘感染中恢复你的Excel和EXE文件(附专杀工具推荐)

本文详细介绍了Synares感染型病毒的典型特征与传播机制,特别是其通过U盘感染Excel和EXE文件的行为。文章提供了一套从应急隔离、诊断到使用专杀工具进行深度清除与文件恢复的完整实战流程,并推荐了有效的安全软件和修复方法,旨在帮助用户最大程度救回重要数据并构建长效安全防护习惯。

weixin_29230649的博客 1828

k8s重装1.28.2+calico+踩坑收集+InPlacePodVerticalScaling

它提供了从镜像构建(通过 Dockerfile)、镜像管理(上传、下载、存储等)、容器创建、运行、网络配置(可以为容器分配自定义的网络,如 bridge 网络、host 网络等)到容器编排(通过 Docker Compose 可以简单地编排多个容器的启动和关联关系)等一整套完整的解决方案。它的核心功能是启动和管理容器的生命周期。sudo apt update这个可以经常用,是来更新软件包的,它不下载,所以没风险,但是经常会报错,别问,问就是某种强大的力量,所以用镜像或者代理或者巴拉巴拉。

SsjjsS2019的博客 2553

算法沉淀——贪心算法四(leetcode真题剖析)

首先我们想到如果某个字符出现偶数次,那么它一定可以构成回文串,所以我们利用这个思想将所有字符的偶数个都计入回文串的个数中,若该个数不超过给出的字符串长度,那么我们可以再加上任意字符,即为最长的回文字符串。我们可以通过例子发现,前两个位置的数无法被改变,在这道题中,为了让结果最大,我们应将第二个位置之后的数都变成分子,所以我们只需要将括号加在第二位至最后一位即可得出最大数。时,为了让上升的数有更多选择空间,我们可以选择当前可选择最小的那个数,反之,选择最大的数。,这是能让孩子们满足胃口的饼干的最小尺寸;

立志做一个高产且细节博主 1647

归因分析计算因子贡献度常见的方法

在归因分析中,我们一般都需要计算出每个因子的贡献度是多少,比如产品DAU上升,对年龄段维度进行拆解,看是不同年龄段的用户对DAU上升的贡献度是多少,一般根据指标的类型,计算贡献度的方法也不一样,下面就列出一些常见的归因分析贡献度的计算方法。

Hubans的博客 4万+

2020牛客暑期多校训练营(第八场)

比赛链接

Irving0323的博客 283

机器学习-02 模型的评估与选择

2.1 误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error)。定义: 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。 在测试集上的误差称为测试误差(test error)。 学习器在所有新样本上的误差称为泛化误差(generalization error)。 显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这

一个小白 1705

安装keil软件时安装不了芯片包怎么回事?芯片包安装路径放在Keill里的packs下面,弹框提示报错:Errors retumned from cpackget...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2207

最短路径问题

给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 Input 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。  (1&lt;n&lt;=1000, 0&lt;m&...

Angeliaaa的博客 400

FPGA实现PID算法

PID 控制器表达式如下(引用某硕士论文 《基于FPGA的PID控制器研究与实现》): 其中,Kp为比例增益,Ti为积分时间常数,Td为微分时间常数,u(t)为控制量,e(t)为偏差。 在数字控制系统中,PID控制规律的实现必须用数值逼近的方法。当采样周期相当短时,用求和代替积分、用后向差分代替微分,使模拟PID离散化变为差分方程。 本文使用并行结构来实现。具有延时小,计算速度快的特点,但需要资源比较多。 利用图3.2所示并行结构实现方法 ,进一步将3.8式分解: ...

nxin168的博客 1万+

[HOT 100] 2646. 最小化旅行的价格总和

在执行第一次旅行之前,你可以选择一些 非相邻节点 并将价格减半。给定路径的 价格总和 是该路径上所有节点的价格之和。每个节点都关联一个价格。次旅行,并通过任何你喜欢的路径前往节点。现有一棵无向、无根的树,树中有。返回执行所有旅行的最小价格总和。另给你一个二维整数数组。

人生需要动态规划 学习需要贪心算法 963

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最小化价格(贪心)

最小化价格(贪心)题目描述现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格 要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格 每个队伍的人都要在同一个地方每个地方只能有一个队伍输入描述:第一行n,m 第二行n个数,表示每组的人数 接下来m行,每行两个数,表示可容纳的最大人数和选择的价格输出描述:输出最小化选择的价格,无解输出-1示例1输入3 4 ...

FIVE 773

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode每日一题:2646. 最小化旅行的价格总和

求树上两节点最短路径 + 树形DP

weixin_41672471的博客 1357

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

牛客网 最小化价格

链接:https://www.nowcoder.com/acm/contest/112/A来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld题目描述现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格 要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格 ...

yinghui_yht的博客 326

2646. 最小化旅行的价格总和

第一个图表示初始树,第二个图表示选择节点 0 、2 和 3 并使其价格减半后的树。第一个图表示初始树,第二个图表示选择节点 0 并使其价格减半后的树。第 3 次旅行,选择路径 [2,1,3]。路径的价格总和为 5 + 2 + 3 = 10。所有旅行的价格总和为 6 + 7 + 10 = 23。第 1 次旅行,选择路径 [0,1,3]。路径的价格总和为 1 + 2 + 3 = 6。第 2 次旅行,选择路径 [2,1]。路径的价格总和为 2 + 5 = 7。所有旅行的价格总和为 1。

cxu123321的博客 341

最小化价格(贪心,排序)

题目链接:最小化价格 链接:https://www.nowcoder.com/acm/contest/112/A 来源:牛客网 题目描述 现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格 要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格 每个队伍的人都要在同一个地方每个地方只能有一个队伍 输入描述: 第一行n,m 第二行n个数,表示每...

nhl19961226的博客 441

6378. 最小化旅行的价格总和

【代码】6378. 最小化旅行的价格总和。

qq_42434171的博客 236

牛客网Wannafly挑战赛15 A.最小化价格

A:最小化价格题目链接:点击打开链接题目大意: 现有n组人,m个地点,给出每组人的人数,每个地点可容纳的最大人数和选择的价格 要求一种方式,使得每组人都到一个各不相同的地点,最小化选择的价格 每个队伍的人都要在同一个地方每个地方只能有一个队伍题目思路:    1.按照地点容纳数量从小到大排序    2.将n组人的人数从小到大排序    3.设置一个从小到大的优先队列,让j=m-1,i从n-...

zxwsbg的博客 243

【每日一题】2646. 最小化旅行的价格总和-2023.12.5

【每日一题】2646. 最小化旅行的价格总和-2023.12.5

weixin_45142381的博客 241

Leetcode每日一题学习训练——Python3版(最小化旅行的价格总和)

本文介绍了Leetcode每日一题学习训练中的一道题目——Python3版的“最小化旅行的价格总和”。这道题目要求我们设计一个函数,输入为n个城市的坐标和距离矩阵,以及k个城市的访问顺序,输出为从原点出发访问这些城市并返回原点的最小价格总和。为了解决这个问题,我们可以使用动态规划的方法。首先定义一个二维数组dp,其中dp[i][j]表示从原点出发访问前i个城市并到达第j个城市的最小价格总和。然后遍历所有可能的状态,更新dp数组。最后返回dp[n][k]即可得到答案。通过这种方法,我们可以在O(n^2)的时间

放下华子我只抽RuiKe5的博客 683

牛客 NC15911 最小化价格 (贪心 + 优先队列)

牛客 NC15911 : 最小化价格 题目大意: 贪心题, 每个组的所有同时去一个地点, 每个地点有对应的可容纳人数 以及 所需金额。 求出每个组都能去到其中的一个地方,然后消费的金额最少可以为多少。 如果不能满足每个组去其中一个地方(各个组的地方不同) >> 那么结果输出 -1 思路: 先排序 >> 按地点的可容纳人数从大到小进行 placeplaceplace 的排序。 然后从大到小遍历每组的人数情况。 然后利用 优先队列PriorityQueue优先

lankerens 348
上一篇: 和为T
下一篇: I Wanna Go Home
Go_Accepted
博客等级 码龄10年 601粉丝 334原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值