码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2291

时间:2014-11-05 01:48:45      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   for   sp   

http://acm.hdu.edu.cn/showproblem.php?pid=2291

读题读的烦死了,今天果真不适合做题

题意:给两个n*n的矩阵,第一个代表一个人战胜一个人可以得到的经验值,第二个代表一个人战胜另一个人可以得到的分数,然后n个数,代表n个人的初始经验值,只有经验值大于对手才可以取胜,问第一个人最后取得的最大分数

n只有13,状压dp随便搞一下

bubuko.com,布布扣
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std ;

int dp[1<<15];
int e[1005],r[1005],s[15],n;

int exp(int x){
    int st=1;
    int res=s[0];
    for(int i=0;i<n-1;i++){
        if((x>>i)&1){
            res+=e[st];
        }
        st++;
    }
    return res;
}

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=0;i<n*n;i++)
            scanf("%d",&e[i]);
        for(int i=0;i<n*n;i++)
            scanf("%d",&r[i]);
        for(int i=0;i<n;i++)
            scanf("%d",&s[i]);
        memset(dp,0,sizeof(dp));
        for(int i=0;i<(1<<(n-1));i++){
            for(int j=0;j<n-1;j++){
                if(i&(1<<j)){
                    if(exp(i^(1<<j))>s[j+1]){
                        dp[i]=max(dp[i],dp[i^(1<<j)]+r[j+1]);
                    }
                }
            }
        }
        printf("%d\n",dp[(1<<(n-1))-1]);
    }
    return 0;
}
View Code

 

HDU 2291

标签:style   blog   http   io   color   ar   os   for   sp   

原文地址:http://www.cnblogs.com/xiaohongmao/p/4075250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!