luogu P3959(2017noipTG D2T2
luogu P3959(2017noipTG D2T2
不知道为什么,这两天见了好多伪装成图的dp题,这道也是.
最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp.
solution:
题意就是找到一种连接方法,使这些点在同一连通块中且代价最小.
因为n<=12,所以dfs+状压dp去做.
具体操作见注释.
AC码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m,cnt,out[15],k,ans=1e9+7,E[15][15],dp[15][15][1<<15];
//dp[x][d][s] 点x在集合s中深度为d时的最小总代价
//目标状态为cnt==(1<<n)-1
//out[i]为层数 void work(int x,int sum,int deep)
{
//转移方程为dp[x][deep][1<<(x-1)]=min(dp[x][deep][1<<(x-1)],sum+out[i]*E[i][j])
//sum为上一层dp时的最优解,deep为层数,x为当前的集合
if(sum>=ans) return ;//剪 枝
if(x==cnt)
{
ans=sum;
return ;
}
for(int i=1;i<=n;i++)
{
if(!(1<<(i-1)&x)) continue ;
for(int j=1;j<=n;j++)
{
if(!((1<<(j-1))&x)&&E[i][j]<1e9+7)
{
if(dp[j][deep+1][1<<(j-1)|x]<=sum+out[i]*E[i][j]) continue;
dp[j][deep+1][1<<(j-1)|x]=sum+out[i]*E[i][j];
out[j]=out[i]+1;
work(1<<(j-1)|x,dp[j][deep+1][1<<(j-1)|x],deep+1);
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
cnt=(1<<n)-1;
memset(E,0x3f,sizeof(E));
while(m--)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
E[u][v]=E[v][u]=min(E[u][v],w);
// add(u,v,w);add(v,u,w);
// in[u]++;in[v]++;
// out[u]++;out[v]++;
// if(out[u]>out[v]&&out[u]>out[maxu]) maxu=u;
// if(out[v]>out[u]&&out[v]>out[maxu]) maxu=v;
// maxout=max(maxout,max(out[u],out[v]));
}
for(int i=1;i<=n;i++)
{
memset(out,0,sizeof(out));
memset(dp,0x3f,sizeof(dp));
out[i]=1;
//初始化
work(1<<(i-1),0,0);
}
printf("%d\n",ans);
return 0;
}
状压dp复习:
个人认为状压最重要的就是位运算,通常情况下状压都是采用二进制压缩的(听说有三进制的,但是太菜不会)
一张关于位运算操作的图(网上找的

十分感谢 ___new2zy___dalao的博客,这是链接.
然后就想说一下如何选择状压dp的问题.(个人经验
通常情况下n不会超过64,一般对于每个点(步骤)存在两种情况,如:选or不选,输or赢.
其余的性质和普通dp一样(无后效性,最优,阶段)
luogu P3959(2017noipTG D2T2的更多相关文章
- [luogu]P3959 宝藏[NOIP][状态压缩DP]
[luogu]P3959 宝藏[TREASURE] 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的 ...
- [Luogu P3959] 宝藏 (状压DP+枚举子集)
题面 传送门:https://www.luogu.org/problemnew/show/P3959 Solution 这道题的是一道很巧妙的状压DP题. 首先,看到数据范围,应该状压DP没错了. 根 ...
- 【luogu P3959 宝藏】 题解
题目链接:https://www.luogu.org/problemnew/show/P3959 我只是心血来潮想学SA(考场上骗分总行吧). 这个题可以状压DP.爆搜+剪枝.有意思的还是随机化搜索( ...
- Luogu P3959 宝藏
这道题正解是状压DP,不过我不会所以写一下随机化算法来骗骗分. 听说当时考场上就有很多写prim然后挂掉的神仙,其实这道题是可以prim过的 prim是一种基于贪心的算法,在本题中由于盲目的选择当前最 ...
- 题解 Luogu P3959 【宝藏】
来一篇不那么慢的状压??? 话说这题根本没有紫题难度吧,数据还那么水 我是不会告诉你我被hack了 一看数据规模,n≤12,果断状压. 然后起点要枚举,就设dp状态: f[i][j]=以i为起点到j状 ...
- Luogu P3959 [NOIP2017]宝藏
题目 STO rqy OTZ 首先这种题一看我们就知道可以爆搜. prim一眼假了,但是加个SA也能过. 所以我们来写状压. 记\(f_{i,j,S}\)表示起点到\(j\)距离为\(i\),我们现在 ...
- 【题解】Luogu P5313 僕たちはひとつの光([Ynoi2012]D2T2)
原题传送门 lovelive好评 比赛时只拿到了60pts,还是自己太菜了 这题的思想实际有点像Luogu P3674 小清新人渣的本愿与Luogu P5071 [Ynoi2015]此时此刻的光辉 这 ...
- LOJ P3959 宝藏 状压dp noip
https://www.luogu.org/problemnew/show/P3959 考场上我怎么想不出来这么写的,状压白学了. 直接按层次存因为如果某个点在前面存过了则肯定结果更优所以不用在意各点 ...
- 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)
洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...
随机推荐
- python-解决pip安装速度慢的问题--豆瓣镜像
https://www.cnblogs.com/ZhangRuoXu/p/6370107.html https://blog.csdn.net/tianguiyuyu/article/details/ ...
- XCTest-iOS单元测试框架
Xctest 是iOS的单元测试框架,有objective-c和swift两种语言可以选择 Xcuitest 是iOS的UI测试框架 XCTest 官方文档地址:https://devel ...
- linux上安装nginx详细步骤
一.安装依赖包 yum install gcc gcc-c++ pcre-devel patch libffi-devel python-devel zlib-devel bzip2-devel op ...
- AGC032E modulo pairing
题意 原题 给出\(2n\)个\(\leq m\)的数,求最优的两两配对方案 使\(n\)组\((x,y)\)的\((x+y)mod \space m\)最大值最小 \(n\leq 10^5,m \l ...
- bypass disable_function总结学习
通常bypass的思路如下 1. 攻击后端组件,寻找存在命令注入的.web 应用常用的后端组件,如,ImageMagick 的魔图漏洞.bash 的破壳漏洞 2. 寻找未禁用的漏网函数,常见的执行命令 ...
- 解决spring-boot 各版本包冲突兼容的方法
思路 在微服务盛行的当下,spring boot 流行程度已经家喻户晓.但同时,随着spring boot 快速迭代,出现了很多版本,比如当前已经推出了2.2.x-SNAPSHOT/ , ...
- HearthBuddy版本收集
Hearthbuddy-20190811-010-0b563c92.exe 20190810-003 SHA-256: b2a03c10124b038d2c48279cc50947907a55c8 ...
- spark MLlib的 pipeline方式
spark mllib的pipeline,是指将多个机器学习的算法串联到一个工作链中,依次执行各种算法. 在Pipeline中的每个算法被称为"PipelineStage",表示其 ...
- article收藏
sca https://github.com/spring-cloud-incubator/spring-cloud-alibaba spring-cloud-document https://git ...
- Mac 卸载mysql
sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM su ...