洛谷P2240——贪心算法

贪心算法是好理解的,是简单的,但是困难的可能是结构体的应用,stl的使用等等,下面这道题就体现了这一点。

这道题主要要算单价,通过比较单价来排序,并计算。

如果单开数组,排完单价,不能将这一顺序copy到另外两个指标上,但是结构体可以很好的完成这一点。

AC代码示例

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
struct Node{
	double v,m,p;
}a[105];
bool cmp(Node a,Node b){
	return a.p>b.p;
}
double sum,t;
int n;
int main(){
	
	sum=0;
	cin>>n>>t;
	for(int i=0;i<n;i++){
		cin>>a[i].m>>a[i].v;
		
		a[i].p=a[i].v/a[i].m;
	}
	sort(a,a+n,cmp);
	//降序 
	for(int i=0;i<n;i++){
		if(t>=a[i].m) {
			t-=a[i].m;
			sum+=a[i].v;
			
		}
		
		else{
			sum+=a[i].p*t;
			break;
		}
	}
	//cout<<t<<endl;
	printf("%.2lf",sum);
	return 0;
} 
相关推荐
yuanbenshidiaos40 分钟前
C++----------函数的调用机制
java·c++·算法
唐叔在学习1 小时前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
chengooooooo1 小时前
代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
算法·leetcode·职场和发展
jackiendsc1 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
游是水里的游2 小时前
【算法day20】回溯:子集与全排列问题
算法
yoyobravery2 小时前
c语言大一期末复习
c语言·开发语言·算法
Jiude2 小时前
算法题题解记录——双变量问题的 “枚举右,维护左”
python·算法·面试
被AI抢饭碗的人3 小时前
算法题(13):异或变换
算法
nuyoah♂4 小时前
DAY36|动态规划Part04|LeetCode:1049. 最后一块石头的重量 II、494. 目标和、474.一和零
算法·leetcode·动态规划