蓝桥杯训练士兵

思路:其实每次就是要比较士兵单独训练的价格之和SUM与S的大小,如果 SUM大,那么就减去所有士兵都要训练的次数的最小值,SUM再更新一下,继续比较。

先对士兵的次数按从小到大的次序排序(很重要),再一次遍历士兵,如果遍历到该士兵时,sum>s,那么费用加上所有士兵共同训练的次数*s,由于当前士兵已经结束了,所以sum-=ai.p;同时共同训练的次数t+=ai.c;这是为了确保可以算出之后的士兵还要进行多少次的独自训练。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int n,s,sum=0,ans=0,t=0;
struct node{
	int p;
	int c;
}a[N];
bool cmp(node a,node b)
{
	return a.c<b.c;
}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>s;
	for(int i=0;i<n;i++)
	{
		cin>>a[i].p>>a[i].c;
		sum+=a[i].p;
	}
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++)
	{
		if(sum>s)
		{
			ans+=s*(a[i].c-t);
			t+=a[i].c;
			sum-=a[i].p;
			//ans+=(a[i].c-t)*a[i].p;
		}
		else{
			ans+=(a[i].c-t)*a[i].p;
		}
	}
	cout<<ans<<endl;
	return 0;
}
相关推荐
醇氧7 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
谙弆悕博士10 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
imbackneverdie15 小时前
知网官宣:禁止 AI 列为论文署名作者,标注 Gemini、DeepSeek 等 AI 为作者的稿件统一下架
大数据·人工智能·ai·职场和发展·aigc·科研·高校
测试老哥17 小时前
接口自动化测试分层设计与实践总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
风栖柳白杨18 小时前
【面试】职位要求_准备
面试·职场和发展
过期动态19 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
程序员Rock2 天前
上位机开发-MODBUS面试常见问题
c语言·c++·面试·职场和发展·上位机
晚笙coding3 天前
LeetCode 98:验证二叉搜索树 —— 从局部判断到全局范围约束的递归思想
算法·leetcode·职场和发展
zzz_23684 天前
码上面试平台测试报告:功能、后台管理、异常状态与 JMeter 性能验证
jmeter·面试·职场和发展