vijos 1456 最小总代价

最小总代价(vijos 1456)

题目链接:https://vijos.org/p/1456

好激动~这道题自己做的~没有看题解~~~
昨天打完网络赛,有道状压dp的题,lx分分钟把他秒了,而我却感觉很难,就是这道南京的网络赛E题

这题跟网络赛那道还有点不一样,还要记录上一次是从谁那里转移过来的,我就多开了一维, <nobr aria&#45;hidden="true"> dp[sta][i] </nobr> <math xmlns="http&#58;&#47;&#47;www&#46;w3&#46;org&#47;1998&#47;Math&#47;MathML"> <mi> d </mi> <mi> p </mi> <mo stretchy="false"> [ </mo> <mi> s </mi> <mi> t </mi> <mi> a </mi> <mo stretchy="false"> ] </mo> <mo stretchy="false"> [ </mo> <mi> i </mi> <mo stretchy="false"> ] </mo> </math> 表示当前转态是 <nobr aria&#45;hidden="true"> sta </nobr> <math xmlns="http&#58;&#47;&#47;www&#46;w3&#46;org&#47;1998&#47;Math&#47;MathML"> <mi> s </mi> <mi> t </mi> <mi> a </mi> </math> 并且这一次是填的第 <nobr aria&#45;hidden="true"> i </nobr> <math xmlns="http&#58;&#47;&#47;www&#46;w3&#46;org&#47;1998&#47;Math&#47;MathML"> <mi> i </mi> </math> 位,然后状压转移就行了

#include"bits/stdc++.h"
#define out(x) cout<<#x<<"="<<x
#define C(n,m) (m>n?0:(long long)fac[(n)]*invf[(m)]%MOD*invf[(n)-(m)]%MOD)
using namespace std;
typedef long long LL;
const int maxn=1<<21;
const int MOD=1e9+7;
int a[20][20];
int dp[maxn][20];//dp[sta][i]表示现在是状态是sta,并且最后是放在第i位的 
int main()
{
    int N;
    while(cin>>N)
    {
        for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)cin>>a[i][j];
        for(int sta=0;sta<(1<<N);sta++)
        {
            for(int i=1;i<=N;i++)dp[sta][i]=1e9;
        }
        for(int i=1;i<=N;i++)
        {
            for(int j=1;j<=N;j++)dp[(1<<(i-1))][j]=0;//初始化,一开始就在第i个人手里 
        }
        for(int sta=0;sta<(1<<N);sta++)
        {
            for(int k=1;k<=N;k++)//枚举物品 
            {
                if((sta&(1<<(k-1)))==(1<<(k-1)))continue;//说明当前状态本来就有这个物品 
                int now=sta|(1<<(k-1));
                for(int i=1;i<=N;i++)//枚举是第几个人传过来的 
                {
                    if((sta&(1<<(i-1)))!=(1<<(i-1)))continue;//从有的物品里转移过去 
                    dp[now][k]=min(dp[now][k],dp[sta][i]+a[i][k]);

                }
            }
        }
        int Min=1e9;
        for(int i=1;i<=N;i++)Min=min(Min,dp[(1<<N)-1][i]);
        cout<<Min<<endl;
    }
}
全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务