首页 > 其他分享 >蓝桥杯2024年第十五届省赛A组-训练士兵

蓝桥杯2024年第十五届省赛A组-训练士兵

时间:2024-08-01 16:28:39浏览次数:15  
标签:2024 cnt 训练 int 金币 蓝桥 士兵 省赛 total

题目描述

在蓝桥王国中,有 n 名士兵,这些士兵需要接受一系列特殊的训练,以提升他们的战斗技能。对于第 i 名士兵来说,进行一次训练所需的成本为 pi 枚金币,而要想成为顶尖战士,他至少需要进行 ci 次训练。

为了确保训练的高效性,王国推出了一种组团训练的方案。该方案包含每位士兵所需的一次训练,且总共只需支付 S 枚金币(组团训练方案可以多次购买,即士兵可以进行多次组团训练)。

作为训练指挥官,请你计算出最少需要花费多少金币,才能使得所有的士兵都成为顶尖战士?

输入格式

输入的第一行包含两个整数 n 和 S ,用一个空格分隔,表示士兵的数量和进行一次组团训练所需的金币数。接下来的 n 行,每行包含两个整数 pi 和 ci ,用一个空格分隔,表示第 i 名士兵进行一次训练的金币成本和要成为顶尖战士所需的训练次数。

输出格式

输出一行包含一个整数,表示使所有士兵成为顶尖战士所需的最少金币数。

样例输入

3 6
5 2
2 4
3 2

样例输出

16

提示

【样例说明】

花费金币最少的训练方式为:进行 2 次组团训练,花费 2 × 6 = 12 枚金币,此时士兵 1, 3 已成为顶尖战士;再花费 4 枚金币,让士兵 2 进行两次训练,成为顶尖战士。总花费为 12 + 4 = 16。

【评测用例规模与约定】

对于 40% 的评测用例,1 ≤ n ≤ 10^3,1 ≤ pi, ci ≤ 10^5,1 ≤ S ≤ 10^7。

对于所有评测用例,1 ≤ n ≤ 10^5,1 ≤ pi, ci ≤ 10^6,1 ≤ S ≤ 10^10。

整体思路

考虑贪心思想,如果当前所有仍需要继续训练的士兵单独训练一次所需的金币总和total小于一次组团训练所需的金币数S,就使用组团训练,否则当前士兵剩余训练次数全部单独训练。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;

typedef struct soldier
{
	int cost;
	int cnt;
}soldier;

class MyCompare
{
public:
	bool operator()(soldier a, soldier b)
	{
		return a.cnt < b.cnt;
	}
};

signed main()
{
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	int n, S;
	cin >> n >> S;
	
	vector<soldier> v(n);
	int total = 0; // 还需训练的士兵单独训练一次需要的金币之和 
	for(int i = 0; i < n; i++)
	{
		cin >> v[i].cost >> v[i].cnt;
		total += v[i].cost;
	}
	sort(v.begin(), v.end(), MyCompare());
	
	int res = 0, sum = 0; // 花费的金币总数;团体训练次数 
	for(int i = 0; i < n; i++)
	{
		if(total >= S)
		{
			res += (v[i].cnt - sum) * S;
			total -= v[i].cost;
			sum += v[i].cnt - sum;
		}
		else
		{
			res += (v[i].cnt - sum) * v[i].cost;
			total -= v[i].cost;
		}
	}
	cout << res << endl;
	return 0;
}

具体步骤

1. 读入数据后按照训练次数从小到大排序,保证训练次数少的都先进行团体训练。

2. 遍历每一位士兵,如果还需要训练的士兵单独训练一次所需要的金币之和total大于等于组团训练一次所需要的金币S,则将当前士兵剩余的训练次数v[i].cnt - sum全部进行组团训练(因为在将当前士兵剩余训练次数训练完之前,total永远小于S)【剩余训练次数可能为零,即当前士兵所需训练次数与上一个士兵相同】,并让还需要训练的士兵单独训练一次所需要的金币之和total减去这个士兵训练一次的花费v[i].cnt(这个士兵已经训练完了),组团训练次数sum加上当前士兵剩余训练次数。

3. 否则将当前士兵剩余训练次数全部进行单独训练,让还需要训练的士兵单独训练一次所需要的金币之和减去这个士兵训练一次的花费。

标签:2024,cnt,训练,int,金币,蓝桥,士兵,省赛,total
From: https://blog.csdn.net/hehe_666888/article/details/140809229

相关文章

  • 蓝桥杯2024年第十五届省赛A组-团建
    题目描述小蓝正在和朋友们团建,有一个游戏项目需要两人合作,两个人分别拿到一棵大小为n和m的树,树上的每个结点上有一个正整数权值。两个人需要从各自树的根结点1出发走向某个叶结点,从根到这个叶结点的路径上经过的所有结点上的权值构成了一个正整数序列,两人的序列的最长......
  • centos在线安装部署2024年最新的docker版本
    1.yum包更新到最新sudoyumupdate-y2.安装依赖软件包sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm23.添加阿里的镜像,下载镜像速度比较快sudoyum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-c......
  • 【IEEE出版 | ICBASE 2020-2023 均已被 EI , Scopus检索 | 温州理工学院、加拿大圭尔
    第五届大数据、人工智能与软件工程国际研讨会(ICBASE2024)将于2024年09月20-22日在中国温州隆重举行。会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和......
  • 2024 CT02 模拟赛
    \(\text{Contest1}\)\(\text{HeavenlyAltitudes}\)\(\text{description}\)给你一个集合\(S=\{1,2,...,n\}\),要求分成\(m\)段,段之间不考虑顺序,段中的元素不考虑顺序,现给你每段的最小值\(a_1,a_2,...,a_m\),求有多少种合法的划分方式,答案对\(10^9+7\)取模。\(1......
  • 【笔记】字符串选讲 2024.8.1
    [COCI2015-2016#5]OOP(Trie)P6727[COCI2015-2016#5]OOP-洛谷|计算机科学教育新生态(luogu.com.cn)正反串分别建Trie,可以搞出两个dfn区间,加之长度限制,三维数点。有\(O(n\logn)\)做法。将字典串\(S[1..m]\),对所有\(1\leqi\leqm\),将\(S[i+1,m]\)的hash值插入......
  • 三年级上册英语人教版电子课本新版pdf+mp3音频课件免费下载2024秋季版
    2024年秋季新版三年级上册英语人教版课件及mp3音频免费下载:新版英语PDF电子课本预览:虽然自己是老师,但不出意外的话今年应该不会教三年级。but女儿9月读三年级,并且我们在不同的学校。所以咬咬牙还是把三年级的英语给备了,自己先学会才能更好的教女儿念。由于今年是2024版新教材,......
  • 努力努力努力的第十四天(2024.7.31)
    昨天日期写错了写成2020.7.30,应该是2024.7.31(手滑了哈哈哈)1.行列转换效果演示:这是未经行列转换操作的t_score表:这是经过行列转换后的t_score表:第一步:确定初步的做法使用分组查询(groupby)能够将单个学生的成绩依次查询出来,再加上三列查询(分别定义成'语文''数学''......
  • Gartner 魔力象限:安全信息和事件管理 (SIEM) 2024
    GartnerMagicQuadrantforSecurityInformationandEventManagement2024Gartner魔力象限:安全信息和事件管理2024请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-siem-2024/,查看最新版。原创作品,转载请保留出处。Gartner魔力象限:安全信息和事件管理202......
  • Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.2-2024072501(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releaseJul25,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。原创作品,转载请保留出处。世界上最广泛使用的渗透测试框架知识就是力量,尤其是......
  • 2024零基础·短视频图文带货实战课:0基础从破圈到爆单实操(35节课)
    课程大纲老号如何转型?新号如何搭建?如何做账号定位?如何选品?如何创作短视频图文?如何出单?适用人群想要学习短视频图文带货的小伙伴想要了解短视频图文成功核心玩法想要掌握智能AI剪辑短视频和图文的技巧课程目录00.学前必读mov.mp401.新号如何搭建账户?mov.mp402......