专栏文章

题解:P12860 [NERC 2020 Online] Kate' s 2021 Celebration

P12860题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mip2meov
此快照首次捕获于
2025/12/03 05:09
3 个月前
此快照最后确认于
2025/12/03 05:09
3 个月前
查看原文
化竞生前来诈尸。

题目大意

Kate 要买一堆带数字的气球,这些气球必须能够组成数字 2021 。已知每组气球的价钱和每组气球所带的数字,问你买哪组气球能够组成 2021 并且最便宜。(大概是这个意思)

分析

首先,我们需要统计哪组气球能够组成数字 20212021 。数字 20212021 里面有两个 22,一个 00,一个11。所以我们扫描一遍这组气球,统计一下这三个数字出现的次数即可。
接下来我们再看价钱问题。我们可以把满足条件的气球组存到结构体数组中,结构体里面要定义序号和价钱,最后对价钱排一遍序,输出对应序号。我这里直接用 pair 定义数组。
多测记得清空。
CPP
#include<bits/stdc++.h>
using namespace std;
string s;
int price;
int j;
pair<int,int> a[100001];
int main(){
	int T;cin>>T;
	for(int t=1;t<=T;t++){//多测
		int zero=0,one=0,two=0;//0 1 2出现次数
		cin>>price>>s;
		for(int i=0;i<s.length();i++){//统计
			if(s[i]=='2') two++;
			if(s[i]=='0') zero++;
			if(s[i]=='1') one++;
		}if(two>=2&&zero>=1&&one>=1){//判断是否能组成2021,能了就存储下来
			a[++j].second=t;
			a[j].first=price;//对pair排序就是对主关键字排序,所以first要设置成价钱
		}
	}sort(a+1,a+j+1);//排序
	cout<<a[1].second;//输出对应序号
	
	return 0;
}
顺便感叹一句:洛谷变化挺大的

评论

0 条评论,欢迎与作者交流。

正在加载评论...