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 现在看来思路并不复 ...
随机推荐
- MyBatis动态Sql 的使用
Mapper.xml提示: 1:mapper包中新建一个文件:mybatis-3-mapper.dtd 2:在web app libraries/mybatis.jar/org.apache.ibat ...
- JAVA之自动内存管理机制
一.内存分配 1.JVM体系结构 2.运行时数据区域 3.内存分配二.内存回收 1.垃圾收集算法 2.垃圾收集器三.相关参考一.内存分配JVM体系结构 在了解自动内存管理的内存分配之前,我们先看下JV ...
- Linux设备驱动程序 之 度量时间差
概述 内核通过定时器中断来跟踪事件流: 时钟中断由系统定时硬件以及周期性的间隔产生,这个间隔由内核根据HZ的值设定,HZ是一个细节结构有关的常数:作为一般性规则,即使知道对应平台上的确切HZ值,也不应 ...
- 空指针/0/NULL
空指针/0/NULL 空指针是一个被赋值为0的指针,在没有被具体初始化之前,其值为0. NULL 是一个标准规定的宏定义,用来表示空指针常量. #define NULL 0 或者 #define ...
- acl设置问题
在学习nfs服务配置的时候用到了acl规则(服务配置文件权限设置可写,但是由于客户端映射,不能写入,所以要设置系统权限),但是遇到了一个小小的问题:一.当使用-x选项取消规则的时候,再次查看权限后面仍 ...
- kotlin之包
在kotlin中包的概念在表达方式上与Java完全一样,不过kotlin中的包和目录没有关系,kotlin包仅仅是为了引用文件中的资源而设计的. package loaderman.bar fun p ...
- 演示Java如何调用Mysql的过程和函数
这里只演示Java如何调用Mysql的过程和函数 --------------------------------------------------------------------------- ...
- NLP - Log-linear Models
1.The Language Modeling Problem 现在抛开我们之前讲的马尔科夫模型的假设,对于一门语言的定义,肯定不能简单依赖于每个单词的前两个单词,这是常识.比如英语中 ...
- iOS tableHeaderView有默认高度?
在给tableView设置tableHeaderView的时候发现,如果设置tableView.tableHeaderView = [UIView new] , 这里未设置tableView的高度,但 ...
- Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比
在DockerCon EU 2015上,Brian Christner阐述了“Docker监控”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cA ...