zoukankan      html  css  js  c++  java
  • HDU 2291

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

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

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

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

    #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
    ",dp[(1<<(n-1))-1]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    开发记录4
    开发记录3
    豆瓣的基础架构读后感
    开发记录2
    开发记录1
    大数据技术大作业1
    新浪微博平台架构读后感
    第一阶段冲刺第五天
    第一阶段冲刺第四天
    第一阶段冲刺第三天
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/4075250.html
Copyright © 2011-2022 走看看