洛谷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;
} 
相关推荐
白云千载尽1 小时前
leetcode 912.排序数组
算法·leetcode·职场和发展
哆啦刘小洋1 小时前
Tips:预封装约束的状态定义
算法
代码充电宝1 小时前
LeetCode 算法题【简单】290. 单词规律
java·算法·leetcode·职场和发展·哈希表
Juan_20121 小时前
P1040题解
c++·算法·动态规划·题解
Onesoft%J1ao1 小时前
C++竞赛递推算法-斐波那契数列常见题型与例题详解
c++·算法·动态规划·递推·信息学奥赛
以己之2 小时前
NC313 两个数组的交集
算法·哈希算法
Brookty2 小时前
【算法】前缀和
java·学习·算法·前缀和·动态规划
And_Ii2 小时前
LeetCode 3397. 执行操作后不同元素的最大数量
数据结构·算法·leetcode
额呃呃2 小时前
leetCode第33题
数据结构·算法·leetcode
隐语SecretFlow3 小时前
【隐语SecretFlow用户案例】亚信科技构建统一隐私计算框架探索实践
科技·算法·安全·隐私计算·隐私求交·开源隐私计算