栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1303 Jury Compromise

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1303 Jury Compromise

#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;int p[201],d[201],result[21];int dp[21][801],path[21][801];int cmp(const void *a,const void *b){    return *(int *)a-*(int *)b;}bool select(int a,int b,int i){    while(a>0 && path[a][b]!=i){        b-=p[path[a][b]]-d[path[a][b]];        a--;    }    return (a!=0)?true:false;}int main(){    int i,j,k,a,b,n,m,origin,ca=1;    while(scanf("%d %d",&n,&m),n||m){        for(i=1;i<=n;i++) scanf("%d %d",p+i,d+i);        memset(dp,-1,sizeof(dp));        memset(path,0,sizeof(path));        origin=m*20;        for(dp[0][origin]=j=0;j<m;j++) for(k=0;k<=origin*2;k++)     if(dp[j][k]>=0){         for(i=1;i<=n;i++)  if(dp[j+1][k+p[i]-d[i]]<dp[j][k]+p[i]+d[i]){      a=j,b=k;      if(!select(a,b,i)){          dp[j+1][k+p[i]-d[i]]=dp[j][k]+p[i]+d[i];          path[j+1][k+p[i]-d[i]]=i;      }  }     }        for(i=origin,j=0;dp[m][i+j]<0 && dp[m][i-j]<0;j++);        k=dp[m][i+j]>dp[m][i-j]?i+j:i-j;        printf("Jury #%dn",ca++);        printf("Best jury has value %d for prosecution and value %d for defence:n",(dp[m][k]+k-origin)/2, (dp[m][k]-k+origin)/2);        for(i=1;i<=m;i++){ result[i]=path[m-i+1][k]; k-=p[result[i]]-d[result[i]];        }        qsort(result+1,m,sizeof(int),cmp);        for(i=1;i<=m;i++) printf(" %d",result[i]);        printf("n");        printf("n");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号