学校网站结构图,龙岗区网站建设哪个公司好,天推广人的网站,阿里云可以建设多个网站目录 一、题目描述#xff1a;
二、整体思路#xff1a;
三、代码#xff1a; 一、题目描述#xff1a; 二、整体思路#xff1a;
要在k分钟内拿最多的金牌#xff0c;就意味着要参加尽可能多的项目#xff0c;因此就要选择耗时(比赛时间和休息时间)最少的项目先预处…目录 一、题目描述
二、整体思路
三、代码 一、题目描述 二、整体思路
要在k分钟内拿最多的金牌就意味着要参加尽可能多的项目因此就要选择耗时(比赛时间和休息时间)最少的项目先预处理数组按升序把项目耗时排序注意排序规则不能为优先选比赛时间少比赛时间相同的休息时间小的项目。因为可能会出现比赛时间很小而休息时间最长的情况。所以排序规则应为按比赛时间休息时间升序排序。注意到样例里面存在最后一个比赛项目可以只满足比赛时间而不满足休息时间此时小蓝比赛结束。
三、代码
#includebits/stdc.h
using namespace std;
using lllong long;
const int N2e510;
ll arr_a[N];
ll arr_b[N];
pairll,ll arr_pair[N];
int n,k;
int main(){cinnk;for(int i1;in;i){cinarr_a[i];}for(int i1;in;i){cinarr_b[i];arr_pair[i]make_pair(arr_a[i],arr_b[i]);//可以用结构体优化}sort(arr_pair1,arr_pair1n,[](pairll,ll p1,pairll,ll p2){return (p1.firstp1.second)(p2.firstp2.second);//按比赛时间休息时间升序排列});ll ans;for(int i1;in;i){if(k-arr_pair[i].first-arr_pair[i].second0){ans;k-(arr_pair[i].firstarr_pair[i].second);}else if(k-arr_pair[i].first0){//最后一个比赛项目可以只满足比赛时间不满足休息时间ans;break;}}coutans;return 0;
}