zoukankan      html  css  js  c++  java
  • Codeforces580D. Kefa and Dishes

    http://codeforces.com/problemset/problem/580/D

      状态压缩DP。

    #include<bits/stdc++.h>
    const int maxn=18;
    using namespace std;
    typedef long long int64;
    typedef pair<int,int> PII;
    int64 f[maxn+1][1<<maxn];
    vector<PII> l[maxn+1];
    int n,m,k,w[maxn];
    void init(){
        scanf("%d%d%d",&n,&m,&k);
        for (int i=0;i<n;++i) scanf("%d",&w[i]);
        for (int x,y,v,i=1;i<=k;++i){
            scanf("%d%d%d",&x,&y,&v);--x;--y;
            l[x].push_back(make_pair(y,v));
        }
    }
    void work(){
        memset(f,-1,sizeof(f));
        f[n][0]=0;int64 ans=0;
        for (int i=0;i<1<<n;++i){
            for (int j=0;j<=n;++j){
                if (f[j][i]==-1) continue;
                for (int k=0;k<n;++k){
                    if ((i>>k)&1) continue;
                    int reward=0;
                    for (int x=0;x<l[j].size();++x)
                        if (l[j][x].first==k) reward=l[j][x].second;
                    f[k][i|(1<<k)]=max(f[j][i]+w[k]+reward,f[k][i|(1<<k)]);
                }
            }
            int bit=0;
            for (int j=0;j<n;++j) if ((i>>j)&1) ++bit;
            if (bit==m) for (int j=0;j<=n;++j) ans=max(ans,f[j][i]);
        }
        printf("%I64d
    ",ans);
    }
    int main(){
        init();
        work();
        return 0;
    }
    my code
  • 相关阅读:
    Redis学习笔记
    Sevrlet 工作原理解析-转
    Spring MVC基础学习
    JVMGC机制
    MyBatis基础学习笔记--摘录
    MyBatis基础学习笔记--自总结
    Spring基础复习
    java.lang.Class类
    浅谈linux静态库、动态库。
    关于字符编码的一点学习。
  • 原文地址:https://www.cnblogs.com/iamCYY/p/4837714.html
Copyright © 2011-2022 走看看