poj 1015(dp)

复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m;
int dp[21][801],path[21][801];
int p[201],d[201],s[201],v[201];
int id[21];
bool select(int j,int k,int i){
    while(j>0&&path[j][k]!=i){
        k -= v[path[j][k]];
        j--;
    }
    return (j!=0)?true:false;
}
int main(){
    int j,k,i,time=1;
    while(cin>>n>>m&&n!=0){
        for(i=1;i<=n;i++){
            cin>>p[i]>>d[i];
            s[i] = p[i]+d[i];
            v[i] = p[i]-d[i]; 
        }
        memset(dp,-1,sizeof(dp));
        memset(path,0,sizeof(path));
        int fix = m*20;
        dp[0][fix] = 0;
        for(j=1;j<=m;j++){
            for(k=0;k<=2*fix;k++){
                if(dp[j-1][k]>=0){
                    for(i=1;i<=n;i++){
                        if(!select(j-1,k,i)){
                            if(dp[j][k+v[i]]<dp[j-1][k]+s[i]){
                                dp[j][k+v[i]] = dp[j-1][k]+s[i];
                                path[j][k+v[i]] = i;
                            }
                        }
                    }
                }
            }
        }
        for(k=0;k<=2*fix;k++){
            if(dp[m][fix-k]>=0||dp[m][fix+k]>=0){
                break;
            }
        }
        int div = dp[m][fix-k]>dp[m][fix+k]?fix-k:fix+k;
        for(i=0,j=m,k=div;i<m;i++,j--){
            id[i] = path[j][k];
            k -= v[id[i]];
        } 
        sort(id,id+m);
//Jury #1 
//Best jury has value 6 for prosecution and value 4 for defence: 
// 2 3 
        cout<<"Jury #"<<time++<<endl;
        cout<<"Best jury has value "<<(dp[m][div]+div-fix)/2<<" for prosecution and value "<<(dp[m][div]-div+fix)/2<<" for defence:"<<endl;
        for(i=0;i<m;i++){
            cout<<" "<<id[i];
        }
        cout<<endl<<endl;
    }
    return 0;
}
复制代码

 

posted @   智人心  阅读(23)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示