贪心算法(算法竞赛、蓝桥杯)--排队接水问题

1、B站视频链接:A25 贪心算法 P1223 排队接水_哔哩哔哩_bilibili

题目链接:排队接水 - 洛谷

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
struct node{
	int t,id;//接水时间,编号
	bool operator<(node &b){
		return t<b.t;
	} 
}a[1010];

int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].t,a[i].id=i;
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++){
		cout<<a[i].id<<" ";
	}
	puts("");
	
	double time=0;
	for(int i=1;i<=n-1;i++){//因为最后一个人不需要等待所有n-1 
		time+=a[i].t*(n-i);
	}
	printf("%.2lf",time/n);
	return 0;
}

2、B站视频链接:A26 贪心算法 P1190 [NOIP2010 普及组] 接水问题_哔哩哔哩_bilibili

题目链接:[NOIP2010 普及组] 接水问题 - 洛谷

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
int n,m,w[10010];//w是接水量
int s[110];//每个龙头的出水量

int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&w[i]);
	for(int i=1,t;i<=n;i++){
		t=1;//假设1号水龙头排水量最少
		//找到排水量最小的水龙头
		for(int j=2;j<=m;j++){
			if(s[t]>s[j])t=j;
		} 
		s[t]+=w[i];
	}
	int maxn=0;
	for(int i=1;i<=m;i++)maxn=max(maxn,s[i]);
	printf("%d\n",maxn);	
	return 0;
} 

小根堆实现版

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
int n,m,w[10010];//w是接水量
priority_queue<int,vector<int>,greater<int>>s;
//小根堆维护最小值 
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&w[i]);
	
	for(int i=1;i<=m;i++)s.push(0);
	for(int i=1;i<=n;i++){
		int t=s.top();s.pop();//维护最小出水量 
		s.push(t+w[i]);
	}
	for(int i=1;i<m;i++){//把小的全部弹出,剩下的即为最大 
		s.pop();
	}
	printf("%d\n",s.top());
	return 0;
}

题目链接:[USACO05MAR] Yogurt factory 机器工厂 - 洛谷

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
//上次的单价花费+s与当前单价花费做比较,
//哪个花费更少,就取哪个。
int main(){
	int n,s,c,y,last;//last表示上次的生产花费 
	long long ans=0;
	cin>>n>>s;
	for(int i=1;i<=n;i++){
		cin>>c>>y;		
		if(i==1)last=c;//没有last取自己为当前 
		else last=min(last+s,c);
		ans+=last*y;
	}
	cout<<ans<<endl;
	return 0;
} 
相关推荐
松涛和鸣1 小时前
14、C 语言进阶:函数指针、typedef、二级指针、const 指针
c语言·开发语言·算法·排序算法·学习方法
yagamiraito_3 小时前
757. 设置交集大小至少为2 (leetcode每日一题)
算法·leetcode·go
星释3 小时前
Rust 练习册 57:阿特巴什密码与字符映射技术
服务器·算法·rust
无敌最俊朗@3 小时前
力扣hot100-141.环形链表
算法·leetcode·链表
WWZZ20255 小时前
快速上手大模型:深度学习10(卷积神经网络2、模型训练实践、批量归一化)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
sali-tec6 小时前
C# 基于halcon的视觉工作流-章62 点云采样
开发语言·图像处理·人工智能·算法·计算机视觉
fashion 道格7 小时前
用 C 语言玩转归并排序:递归实现的深度解析
数据结构·算法·排序算法
九年义务漏网鲨鱼8 小时前
蓝桥杯算法——状态压缩DP
算法·职场和发展·蓝桥杯
CappuccinoRose8 小时前
MATLAB学习文档(二十八)
开发语言·学习·算法·matlab
Freedom_my8 小时前
插入排序算法
数据结构·算法·排序算法