| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1170 用贪心算法来做,结果是WA,请高手指点!1170 用贪心算法来做,就是每次选择这样一个offer ,使得这次offer的付款与剩余商品(直接用 数量*价格)的和最小,题目中带的测试数据是正确的,但提交后结果是WA,很郁闷啊,高手指点,代码如下:
// 1170_ShoppingOffers.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
using namespace std;
class Item{
public:
int id;
int num;
int price;
};
class Pair{
public:
int id;
int num;
};
class Com{
public:
int np;
Pair pr[6];
int total;
};
int main(){
int kind[10];
Item items[10];
Item itemstp[10];
Com comb[100];
int b;
cin>>b;
for(int i=0;i<b;i++){
Item imt;
cin>>imt.id;
cin>>imt.num;
cin>>imt.price;
items[i]=imt;
kind[i]=imt.id;
}
int s;
cin>>s;
for(int i=0;i<s;i++){
Com combt;
cin>>combt.np;
for(int j=0;j<combt.np;j++){
cin>>combt.pr[j].id;
cin>>combt.pr[j].num;
}
cin>>combt.total;
comb[i]=combt;
}
int totalpay=0;
for(int i=0;i<b;i++){
totalpay+=items[i].num*items[i].price;
}
int shouldpay=totalpay;
int index=-1;
int pay=0;
bool fg=true;
while(fg){
index=-1;
fg=false;
for(int i=0;i<s;i++){
for(int a=0;a<b;a++){
itemstp[a].id=items[a].id;
itemstp[a].num=items[a].num;
itemstp[a].price=items[a].price;
}
bool flag=true;
int prs=comb[i].np;
for(int j=0;j<prs;j++){
int idi=comb[i].pr[j].id;
int numi=comb[i].pr[j].num;
int indexi=-1;
for(int t=0;t<b;t++){
if(kind[t]==idi){
indexi=t;
break;
}
}
if(itemstp[indexi].num<numi){
flag=false;
break;
}
else{
itemstp[indexi].num-=numi;
}
}
if(flag){
int sp=comb[i].total;
for(int h=0;h<b;h++){
sp+=itemstp[h].num*itemstp[h].price;
}
if(sp<shouldpay){
shouldpay=sp;
index=i;
}
}
}
if(index!=-1){
int pis=comb[index].np;
for(int g=0;g<pis;g++){
int idg=comb[index].pr[g].id;
int indexg=-1;
for(int c=0;c<b;c++){
if(kind[c]==idg){
indexg=c;
break;
}
}
items[indexg].num-=comb[index].pr[g].num;
}
pay+=comb[index].total;
fg=true;
}
}
for(int i=0;i<b;i++){
pay+=items[i].num*items[i].price;
}
cout<<pay;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator