| ||||||||||
| 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 | |||||||||
Re:贴了个错误的代码,系统居然让我过了!!!In Reply To:贴了个错误的代码,系统居然让我过了!!! Posted by:306457592 at 2009-08-14 20:33:07 样例是有问题的,V不超过120
> 当输入:
> 3 100
> 10 10 260
> 1 2 1
> output is supposed to be:
> 17
> 而我的代码答案是10,过了!
> 我很不满,poj系统很不好。
> #include<cstdio>
> #include<cstdlib>
> #include<cstring>
> #define MAX 1000000000
> int v[101],t[101],c[40001],tp[40001][101];
> bool f[40001];
> int main()
> {
> int i,j,k,n,m,sum,temp,ans;
> while(scanf("%d%d",&n,&m)!=EOF)
> {
> for(i=1;i<=n;i++)
> scanf("%d",&v[i]);
>
> for(sum=0,i=1;i<=n;i++)
> scanf("%d",&t[i]),sum+=v[i]*t[i];
>
>
> if(sum>=40000)sum=40000;
>
>
> memset(f,false,sizeof(f));
> memset(c,0,sizeof(c));
> memset(tp,0,sizeof(tp));
>
>
> f[0]=true;
>
>
> for(i=1;i<=n;i++)
> {
>
>
> for(j=v[i];j<=sum;j++)
> if(f[j-v[i]])
> {
> f[j]=true;
>
>
> if(c[j]==0||c[j]>c[j-v[i]]+1)
> {
> c[j]=c[j-v[i]]+1;
>
>
> for(k=1;k<=n;k++)
> if(k!=i)tp[j][k]=tp[j-v[i]][k];
> else tp[j][k]=tp[j-v[i]][k]+1;
> }
> }
> }
> for (i=1; i <= 20; i++) {
> printf("%d: %d %d\n", i*10, f[i*10], c[i*10]);
> }
> ans=MAX;
> for(i=m;i<=sum;i++)
> {
> if(f[i]&&f[i-m])
> {
> for(temp=0,k=1;k<=n;k++)
> temp+=abs(tp[i][k]-tp[i-m][k]);
> if(temp<ans)ans=temp;
> }
> }
> if(ans!=MAX)printf("%d\n",ans);
> else printf("-1\n");
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator