您的位置:首页 > 其它

POJ 1456 Supermarket(贪心)

2016-01-25 16:37 281 查看
每次贪价值最大的商品,把时间看作一个个的点,从最晚的时间往前没卖商品的时间点,找到就加上,做完为止
#include<stdio.h>
#include<algorithm>
using namespace std;

struct aaa{
int price,time;
};
int cmp(aaa a,aaa b){
return a.price>b.price;
}
int deal(int n){
int i,j,q[10000]={0},w,t,total=0,max=0;
aaa z[10000];

for(i=0;i<n;i++){
scanf("%d %d",&z[i].price,&z[i].time);
if(max<z[i].time) max=z[i].time;
}

sort(z,z+n,cmp);

/*for(i=0;i<n;i++)
printf("%d->%d  ",z[i].price,z[i].time);
printf("\n--------------------------------------------\n");*/

for(i=0;i<n;i++){
w=z[i].time;
while(q[w]==1&&w>0) w--;
if(w==0) continue;
total+=z[i].price;
q[w]=1;
}

return total;
}

int main(){
int n,i,k=0,s[100];

//freopen("Supermarket.in","r",stdin);

while(scanf("%d",&n)!=EOF)
s[k++]=deal(n);

for(i=0;i<k;i++)
printf("%d\n",s[i]);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  做题日志