`
carmark
  • 浏览: 160883 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
社区版块
存档分类
最新评论

1015 Jury Compromise

阅读更多
#include "iostream.h" 
#include "string.h" 

#define Mid 20*20+1 
#define Max 2*Mid+2 
unsigned long int p2[21]; 
unsigned long int ans[21][Max][11]; 
int sum[21][Max]; 
int minus[220]; 
int plus[220]; 

int i,j,k,l,n,m,p,t1,t2,s; 

void output(int i) 
{ 
    cout<<"Best jury has value "<<(sum[m][Mid+i]+i)/2<<" for prosecution and value "<<(sum[m][Mid+i]-i)/2<<" for defence:\n"; 
    for (p=0;p<=n/20;p++) 
        for (s=0;s<=20;s++) 
            if ((p2[s] & ans[m][Mid+i][p]) == p2[s]) 
                cout<<p*20+s+1<<' '; 
    cout<<endl<<endl; 
} 

void main() 
{ 
     
    for(p2[0]=1,i=1;i<=20;i++) p2[i]=2*p2[i-1]; 
    for(l=1;;l++) 
    { 
        cin>>n>>m; if (n==0) break;  
        cout<<"Jury #"<<l<<endl;  
        memset(ans,0,sizeof(ans)); 
        for (i=0;i<=20;i++) for (j=0;j<Max;j++) sum[i][j]=-1; 
        sum[0][Mid]=0; 
        for (i=0;i<n;i++) {cin>>j>>k;minus[i]=j-k;plus[i]=j+k;} 

        for (i=0;i<n;i++) for (s=m;s>=1;s--) 
            for (j=Mid-20*m;j<=Mid+20*m;j++) if (sum[s-1][j]>=0)  
            { 
                t1=sum[s-1][j]+plus[i]; 
                t2=j+minus[i]; 
                if (t1>sum[s][t2])  
                { 
                    sum[s][t2]=t1; 
                    for (p=0;p<=i/20;p++) ans[s][t2][p]=ans[s-1][j][p]; 
                    ans[s][t2][i/20]+=p2[i%20]; 
                } 
            } 

        for (i=0;i<=20*m;i++) 
        { 
            if (sum[m][Mid-i]>=0 || sum[m][Mid+i]>=0)  
                if (sum[m][Mid-i]>sum[m][Mid+i]) {output(-i);break;} 
                else {output(i);break;} 
        } 
    } 
} 
分享到:
评论

相关推荐

    POJ1015-Jury Compromise【动态规划DP】

    【标题】"POJ1015-Jury Compromise" 是一个编程竞赛题目,主要涉及的是动态规划(Dynamic Programming, 简称DP)的算法应用。动态规划是一种解决复杂问题的有效方法,它通过将问题分解成子问题,并存储子问题的解来...

    POJ ACM 1015 Jury Compromise

    《POJ ACM 1015 Jury Compromise:双解法深度解析》 在编程竞赛的世界里,ACM(国际大学生程序设计竞赛)是检验学子编程能力的重要舞台,而POJ(在线判题系统)是其中的一个热门平台。本文将深入探讨一道经典的POJ...

    递归与分治--acm竞赛资料

    例如,1015 - Jury Compromise中的多数判决问题,可以通过比较两组人数的一半来逐步确定多数意见。1048 - Follow My Logic可能涉及二分查找,这是分治的一个典型应用,通过不断缩小搜索范围找到目标值。 在1054 - ...

    poj dp总结,动态规划分类

    - **1015**:“Jury Compromise”——涉及到状态空间树和剪枝技术。 - **2374**:“Subway tree systems”——结合图论中的最小生成树和动态规划思想。 #### 结论 通过上述分类,我们可以看到动态规划不仅包含了...

    pku题目分类.doc

    6. **动态规划(DP)**:"Dividing"、"Jury Compromise"和"Sticks"等题目可能需要用到动态规划思想,通过状态转移方程求解最优化问题。 7. **模拟**:"Joseph"、"Counterfeit Dollar"和"The Same Game"这类题目通常...

    POJ题目分类-题库分类

    5. **动态规划(DP)**:动态规划是一种优化技术,用于求解最优化问题,例如STAMPS、Jury Compromise、Cable master等。DP常用于处理具有重叠子问题和最优子结构的问题,需要构造状态转移方程并存储中间结果。 6. *...

    浙大oj的acm题分类

    **1303 Jury Compromise** - 评分系统的优化 评分系统的设计,DP可以确保评分的公正性和一致性。 #### 17. **1345 Best Deal** - 商业交易决策 商业交易中,DP可以帮助商家制定最佳销售策略。 #### 18. **1360 ...

    poj题目分类

    16. **1303 Jury Compromise** - **背景**: 评审团达成共识的最优化问题。 - **解法**: 动态规划找到最佳共识方案。 17. **1345 Best Deal** - **背景**: 商业交易中的最优策略。 - **解法**: 动态规划求解...

    ACM POJ PKU 最全题目分类

    16. **1303 - Jury Compromise**:评分标准问题。 17. **1345 - Best Deal**:购物折扣问题。 18. **1360 - Radar Installation**:雷达安装的优化问题。 19. **1396 - The Umbrella Problem: 2054**:雨伞问题,...

    acm ZJU分类

    - **1303 Jury Compromise**: 协商问题,可能涉及到博弈论思想。 - **1345 Best Deal**: 通过动态规划寻找最优解。 - **1360 Radar Installation**: 贪心算法在传感器覆盖问题上的应用。 - **1396 The Umbrella ...

    ZJU_ACM_All_Anwer 搞编程的都知道的浙江大学A 题库.本书 集了所有经 Z 题解集,集合并附 Mathimaticsumerical algorithms 数值算法

    1303 Jury Compromise 其实不是很难,但是很容易错,555…… 1345 Best Deal 简单题,但是也很容易错……555…… 1360 Radar Installation 简单题 1396 The Umbrella Problem: 2054 简单题 1058 Currency ...

    浙江大学ACM题解/ZJU 题型分类

    1303 Jury Compromise 其实不是很难,但是很容易错,555…… 1345 Best Deal 简单题,但是也很容易错……555…… 1360 Radar Installation 简单题 1396 The Umbrella Problem: 2054 简单题 1058 Currency ...

Global site tag (gtag.js) - Google Analytics