蓝桥云课题目题解:“卡牌“” | 您所在的位置:网站首页 › 蓝桥杯笔试题 › 蓝桥云课题目题解:“卡牌“” |
问题描述
这天, 小明在整理他的卡牌。 他一共有 nn 种卡牌, 第 ii 种卡牌上印有正整数数 i(i \in[1, n])i(i∈[1,n]), 且第 ii 种卡牌 现有 a_{i}ai 张。 而如果有 nn 张卡牌, 其中每种卡牌各一张, 那么这 nn 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌, 拿出了 mm 张空白牌, 他可以在上面写上数 ii, 将其当做第 ii 种牌来凑出套牌。然而小明觉得手写的牌不太美观, 决定第 ii 种牌最多手写 b_{i}bi 张。 请问小明最多能凑出多少套牌? 输入格式输入共 3 行, 第一行为两个正整数 n, mn,m 。 第二行为 nn 个正整数 a_{1}, a_{2}, \ldots, a_{n}a1,a2,…,an 。 第三行为 nn 个正整数 b_{1}, b_{2}, \ldots, b_{n}b1,b2,…,bn 。 输出格式一行, 一个整数表示答案。 样例输入 4 5 1 2 3 4 5 5 5 5 样例输出 3 样例说明这 5 张空白牌中, 拿 2 张写 1 , 拿 1 张写 2 , 这样每种牌的牌数就变为了 3,3,3,43,3,3,4, 可以凑出 3 套牌, 剩下 2 张空白牌不能再帮助小明凑出一套。 评测用例规模与约定对于 30 \%30% 的数据, 保证 n \leq 2000n≤2000; 对于 100 \%100% 的数据, 保证 n \leq 2 \times 10^{5} ; a_{i}, b_{i} \leq 2 n ; m \leq n^{2}n≤2×105;ai,bi≤2n;m≤n2 。 思路:(我自己也不懂说,哈哈) 代码实现: #include using namespace std; long long n,m;//m要变成long long我靠 //题目用到了sum,所以得定义long long int a[300010]; int b[300010]; int sum[300010]; int main(){ cin>>n>>m; for(int i=0;i>a[i];//1 2 3 4 long long sumb=0,Sum=0;//sumb存b的总和,Sum存a+b的总和 for(int i=0;i>b[i];//5 5 5 5 sum[i]=a[i]+b[i];//6 7 8 9 sumb+=b[i];//20 Sum+=sum[i];//30 } sort(sum,sum+n); long long more=sumb-m;//20-5=15,多余的牌数,要删去 long long temp=Sum-n*sum[0];//30-4*6=6,每个数比最小数多了多少,加起来 if(more |
CopyRight 2018-2019 实验室设备网 版权所有 |