题目链接:https://www.luogu.org/problemnew/show/P3959

我只是心血来潮想学SA(考场上骗分总行吧)。

这个题可以状压DP、爆搜+剪枝、有意思的还是随机化搜索(是的,这个题用的不叫SA,没有降温)。

code:

#include <queue>
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 10000;
const int inf = 0x7fffffff;
int ma[13][13], deep[maxn], n, m, ans;
struct edge{
int u, v;
};
bool operator < (struct edge a, struct edge b)
{
return deep[a.u] * ma[a.u][a.v] > deep[b.u] * ma[b.u][b.v];
}
int sear(int s)//s 起点
{
int cnt = 0, cost = 0;
bool vis[maxn];
edge e[maxn], now, now2;
priority_queue<edge> q;
memset(deep, 0, sizeof(deep));
memset(vis, 0, sizeof(vis));
deep[s] = 1, vis[s] = 1;
for(int i = 1; i <= n; i++)
if(ma[s][i] < inf)
{
now.u = s, now.v = i;
//cout<<now.u<<" "<<now.v<<endl;
q.push(now);
}
for(int i = 1; i <= n-1; i++)
{
now = q.top(); q.pop();
while(!q.empty() && ((vis[now.v] || rand()%(n) < 1)))
{
if(!vis[now.v]) e[++cnt] = now;
now = q.top(); q.pop();
}
vis[now.v] = 1, deep[now.v] = deep[now.u] + 1;
//cout<<cnt;
for(int i = 1; i <= cnt; i++) q.push(e[i]);
for(int i = 1; i <= n; i++)
{
if(ma[now.v][i] != inf && !vis[i])
{
now2.u = now.v; now2.v = i; q.push(now2);
}
}
cost += ma[now.u][now.v] * deep[now.u];
}
return cost;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++) ma[i][j] = inf;
for(int i = 1; i <= m; i++)
{
int u, v, w;
scanf("%d%d%d",&u,&v,&w);
ma[u][v] = min(w, ma[u][v]);
ma[v][u] = min(w, ma[v][u]);
}
srand(192608);
ans = inf; for(int i = 1; i <= 500; i++)
{
for(int j = 1; j <= n; j++)
ans = min(ans, sear(j));
}
printf("%d",ans);
return 0;
}

【luogu P3959 宝藏】 题解的更多相关文章

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

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

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

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

  3. Luogu P3959 宝藏

    这道题正解是状压DP,不过我不会所以写一下随机化算法来骗骗分. 听说当时考场上就有很多写prim然后挂掉的神仙,其实这道题是可以prim过的 prim是一种基于贪心的算法,在本题中由于盲目的选择当前最 ...

  4. 【题解】P3959 宝藏 - 状压dp / dfs剪枝

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

  5. Luogu P2210 Haywire 题解

    其实这题吧...有一种玄学解法 这题的要求的就是一个最小化的顺序 那么,我们就不进想到了一种显然的写法 就是random_shuffle 什么?这不是乱搞的非正解吗 然而,正如一句话说的好 一个算法, ...

  6. P3959 宝藏

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

  7. 洛谷 P3959 宝藏 解题报告

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

  8. luogu P3959(2017noipTG D2T2

    luogu P3959(2017noipTG D2T2 不知道为什么,这两天见了好多伪装成图的dp题,这道也是. 最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp. soluti ...

  9. 题解 Luogu P3959 【宝藏】

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

随机推荐

  1. js在ie6下的一个bug—未结束标签的错误

    在IE6下,如果在body标签没结束前,用代码获取body对象就会出现错误.如: <html> <head> <script type="text/javasc ...

  2. Maven学习总结(五):maven命令的含义及用法

    Maven有许多命令,不管是在命令行(1),还是在Myecplise10的Maven项目--右键Run As(2),还是IDEA的左下角--Maven Projects--Maven项目名--Life ...

  3. mac关闭渐隐和弹出动画效果

    苹果系统应用程序的窗口和对话框每次使用的时候都有华丽的特效,但是如果你感觉这种特效显得有点慢(MacGG闲的蛋疼),那该如何取消掉他呢? 方法很简单,打开"终端"(Finder-& ...

  4. MSSQL中的表变量

    最近在看<Microsoft SQL Server2005技术内幕:T-SQL程序设计> 1.表变量的事务上下文中提到,表变量不受外部事务回滚影响. 举个例子: DECLARE  @TA ...

  5. MvcForum作者称该项目进入缓慢更新

    MvcForum作者在github上发表 This project is no longer actively developed as I don't have the time. As and w ...

  6. JS判断客户端是手机还是PC的2个代码

    搬了下砖 function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", & ...

  7. SpringBoot整合Slf4j+logback日志框架

    一.Slf4j简单介绍与优势 1.介绍 Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一 ...

  8. 单选按钮(RadioButton)

    一:RadioButton的相关属性: 1.Activity //单选按钮 public class RadioButtonActivity extends Activity { private Co ...

  9. Mybatis学习第四天——Mybatis与Spring整合

    主要介绍mapper配置与mapper的扫描配置,使用dao层的配置这里不多说. 1.导包 1.1 Mybatis的jar包 1.2 Spring的jar包 1.3 Spring与Mybatis整合包 ...

  10. Mac下完全删除GarageBand

    https://www.tekrevue.com/tip/delete-garageband/ 已从应用程序列表删除,/资源库/Application Support/GarageBand/里的也删除 ...