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 |
可能是没有用临时数组的原因吧In Reply To:Re:我没有剪枝啊,直接回溯,800MSAC。。。。 Posted by:yzhw at 2009-05-07 17:28:13 > # include <stdio.h> > typedef struct point > { > int price; > int p; > int s; > int e; > }sta; > sta data[23]; > int station[8]; > int maxnum,stanum,ticnum; > int tres,res; > check(int s) > { > int i; > for(i=data[s].s;i<data[s].e;i++) > if(station[i]+data[s].p>maxnum) return 0; > return 1; > } > void deal(int s) > { > if(s>ticnum&&tres>res) res=tres; > else if(s>ticnum) return; > else > { > int i; > if(check(s)) > { > for(i=data[s].s;i<data[s].e;i++) station[i]+=data[s].p; > tres+=data[s].price; > deal(s+1); > for(i=data[s].s;i<data[s].e;i++) station[i]-=data[s].p; > tres-=data[s].price; > } > deal(s+1); > } > } > > int main() > { > > while(1) > { > int i,j,totalp=0; > memset(station,0,sizeof(station)); > scanf("%d %d %d",&maxnum,&stanum,&ticnum); > if(!maxnum&&!stanum&&!ticnum) break; > for(i=1;i<=ticnum;i++) > { > scanf("%d %d %d",&data[i].s,&data[i].e,&data[i].p); > data[i].price=data[i].p*(data[i].e-data[i].s); > } > res=tres=0; > deal(1); > > printf("%d\n",res); > } > > return 0; > } > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator