★数据输出
输出一行一个整数,表示最少需要收集的材料的个数。
输入示例
3 3 1 3 3 1 1 3输出示例
4
题目显然是求两个集合的并集(元素一样取大的那个)
#include#include using namespace std;const int MAXN=50000+10;int N,M;int a[MAXN],b[MAXN];struct data{ int num; int cnt;}c[MAXN],d[MAXN];int main(){ scanf("%d",&N); int i; for(i=0;i d[j] .num) ans+=d[j++].cnt; else if(c[i].num < d[j] .num) ans+=c[i++].cnt; else if(c[i].num == d[j] .num) { ans= ans+(c[i].cnt >d[j].cnt ? c[i].cnt: d[j].cnt); i++; j++; } } while(i==lenc && j