题解:P5961 [BalticOI 2006] coin collector钱币收藏家
a18981826590 · · 题解
P5961 [BalticOI 2006] coin collector钱币收藏家
解题思路
这道题可以使用贪心:先取未收藏的硬币中面值最小的,直到总硬币面值(即找钱)大于或等于(商品价格
AC代码
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d[500010],e,m,n;
int main(){
scanf("%d%d",&n,&m);
while(n--){
scanf("%d%d",&a,&b);
if(c>=a){
c-=d[e];
d[e--]=0;
}
if(!b){
if(a+c>=m) break;
c+=a;
d[++e]=a;
}
}
if(!c) c=1;
printf("%d\n%d",e,m-c);
return 0;
}