题目
STO rqy OTZ
首先这种题一看我们就知道可以爆搜。
prim一眼假了,但是加个SA也能过。
所以我们来写状压。
记\(f_{i,j,S}\)表示起点到\(j\)距离为\(i\),我们现在从\(j\)开始挖通\(S\)的最小代价。
转移是显然的:枚举\(S\)的子集\(T\)和\(T\)中的点\(k\),挖通\((k,j)\)这条边(如果存在)。
\(f_{i,j,S}=\min\limits_{k\in T\subseteq S}(f_{i,j,S\setminus T}+f_{k,j+1,T\setminus\{k\}}+(i+1)E_{j,k})\)。

#include<bits/stdc++.h>
using namespace std;
const int N=12,inf=0x3f3f3f3f;
int read(){int x;cin>>x;return x;}
int min(int a,int b){return a<b? a:b;}
int low[1<<N],cnt[1<<N],f[N][N][1<<N],E[N][N];
int main()
{
    int n=read(),m=read(),i,j,k,u,v,w,t,S,T,U,ans;
    memset(E,0x3f,sizeof E),memset(f,0x3f,sizeof f),U=(1<<n)-1;
    for(i=1;i<=m;++i) u=read()-1,v=read()-1,w=read(),E[u][v]=E[v][u]=min(E[u][v],w);
    for(i=1;i<=U;++i) cnt[i]=cnt[i&i-1]+1;
    for(i=0;i<=n;++i) low[1<<i]=i;
    for(i=1;i<=U;++i) low[i]=low[i&-i];
    for(i=0;i<n;++i) f[n-1][i][0]=0;
    for(i=n-2;~i;--i)
    for(j=0;j<n;++j)
        for(f[i][j][0]=0,S=1;S<=U;++S)
        if(~S&1<<j&&cnt[S]<=n-i-1)
            for(T=S;T;T=T-1&S)
            if(f[i][j][S&~T]<f[i][j][S])
                for(k=low[t=T];t;k=low[t=t^1<<k])
                if(E[j][k]^inf)
                    f[i][j][S]=min(f[i][j][S],f[i+1][k][T^1<<k]+f[i][j][S^T]+(i+1)*E[j][k]);
    for(ans=inf,i=0;i<n;++i) ans=min(ans,f[0][i][U^1<<i]);
    return !printf("%d",ans);
}

Luogu P3959 [NOIP2017]宝藏的更多相关文章

  1. 洛谷 P3959 NOIP2017 宝藏 —— 状压搜索

    题目:https://www.luogu.org/problemnew/show/P3959 搜索: 不是记忆化,而是剪枝: 邻接矩阵存边即可,因为显然没有那么多边. 代码如下: #include&l ...

  2. Luogu 3959 [NOIP2017] 宝藏

    NOIP2017最后一道题 挺难想的状压dp. 受到深度的条件限制,所以一般的状态设计带有后效性,这时候考虑把深度作为一维,这样子可以保证所有状态不重复计算一遍. 神仙预处理:先处理出一个点连到一个集 ...

  3. 洛谷P3959 [NOIP2017]宝藏

    [题目描述] 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋,也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏.但 ...

  4. Luogu 3959 [NOIP2017] 宝藏- 状压dp

    题解 真的想不到这题状压的做法...听说还有跑的飞快的模拟退火,要是现场做绝对滚粗QAQ. 不考虑深度,先预处理出 $pt_{i, S}$ 表示让一个不属于 集合 $S$ 的 点$i$ 与点集 $S$ ...

  5. 题解 Luogu P3959 【宝藏】

    来一篇不那么慢的状压??? 话说这题根本没有紫题难度吧,数据还那么水 我是不会告诉你我被hack了 一看数据规模,n≤12,果断状压. 然后起点要枚举,就设dp状态: f[i][j]=以i为起点到j状 ...

  6. 洛谷$P3959\ [NOIp2017]$ 宝藏 状压$dp$

    正解:状压$dp$ 解题报告: 传送门$QwQ$ $8102$年的时候就想搞这题了,,,$9102$了$gql$终于开始做这题了$kk$ 发现有意义的状态只有当前选的点集和深度,所以设$f_{i,j} ...

  7. [luogu]P3959 宝藏[NOIP][状态压缩DP]

    [luogu]P3959 宝藏[TREASURE] 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的 ...

  8. [Luogu P3959] 宝藏 (状压DP+枚举子集)

    题面 传送门:https://www.luogu.org/problemnew/show/P3959 Solution 这道题的是一道很巧妙的状压DP题. 首先,看到数据范围,应该状压DP没错了. 根 ...

  9. [luogu P3953] [noip2017 d1t3] 逛公园

    [luogu P3953] [noip2017 d1t3] 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N ...

随机推荐

  1. Java多线程和并发(二),Thread中的start和run的区别

    目录 1.调用run方法 2.调用start方法 3.start和run的区别 二.Thread中的start和run的区别 1.调用run方法 public class ThreadTest { p ...

  2. hdu 1051 wooden sticks (贪心+巧妙转化)

    #include <iostream>#include<stdio.h>#include<cmath>#include<algorithm>using ...

  3. PyCharm中Qt Designer+PyUIC配置

    本文环境配置: 系统=>windows10:64位 语言=>Python:3.7.1 第三方库PyQT5:5.11.3pyqt5-tools:5.11.3.1.4 工具=>PyCha ...

  4. Thinkphp3.2.3中的RBAC权限验证

    最近在用TP的RBAC权限控制,在这里记录学习一下.先来看看相关的概念 一.相关概念 访问控制与RBAC模型1.访问控制:        通常的多用户系统都会涉及到访问控制,所谓访问控制,是指通过某种 ...

  5. JS框架_(Esign.js)仿信用卡电子签名特效

    百度云盘 传送门 密码:l60w 电子签名特效效果: <!DOCTYPE html> <html> <head lang="en"> <m ...

  6. 实验吧(你真的会PHP吗)CTF之代码审计最终版---解析是错的 我的才是对的

    0X01代码的详细讲解 0X02代码分析完了 我们来理一下 思路 条件 A POST提交一个number参数的值不能为纯数字 C number取整数后是回文数 D number经过strval转译后的 ...

  7. 自定义IPython提示符

    首先创建IPython的自定义配置文件 $ ipython profile create 可以看到在HOME目录下: 多了两个配置文件 我们修改~/.ipython/profile_default/i ...

  8. 使用oracle删除表中重复记录

    (1)使用用rowid方法 查询重复数据:select * from person a where rowid !=(select max(rowid) from person b where a.c ...

  9. C++入门经典-例6.4-输出字符数组中的内容

    1:代码如下: // 6.4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

  10. 获取<a>标签值</a>的标签值及更改

    html代码: <a id="catelogue_div1_h5" onclick="catelogue_div1(event)">隐藏</a ...