【hdu 5418】 Victor and world
【题目链接】
【算法】
状压DP
f[i][S]表示走的最后一步在i,状态为S
于是我们可以用最短路径 + 状压DP解决此题,由于不存在负边,所以可以用dijkstra+堆优化
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 16 struct info {
int home,s,dis;
friend bool operator < (info a,info b) {
return a.dis > b.dis;
}
}; int T,N,M,i,j,k,mask,u,v,w;
int dist[MAXN+][MAXN+],f[MAXN+][(<<MAXN)+],vis[MAXN+][(<<MAXN)+];
priority_queue<info> q;
info x; template <typename T> inline void read(T &x) {
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = x * + c - '';
x *= f;
}
template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x) {
write(x);
puts("");
} int main() { read(T); while (T--) {
memset(vis,,sizeof(vis));
read(N); read(M);
for (i = ; i <= N; i++) {
for (j = ; j <= N; j++) {
dist[i][j] = 2e9;
}
}
for (i = ; i <= M; i++) {
read(u); read(v); read(w);
dist[u][v] = min(dist[u][v],w);
dist[v][u] = min(dist[v][u],w);
}
mask = ( << N) - ;
for (i = ; i <= N; i++) {
for (j = ; j <= mask; j++) {
f[i][j] = 2e9;
}
}
f[][] = ;
q.push((info){,,});
while (!q.empty()) {
x = q.top(); q.pop();
if (vis[x.home][x.s]) continue;
vis[x.home][x.s] = ;
for (i = ; i <= N; i++) {
if (x.dis + dist[x.home][i] < f[i][x.s|(<<(i-))]) {
f[i][x.s|(<<(i-))] = x.dis + dist[x.home][i];
q.push((info){i,x.s|(<<(i-)),f[i][x.s|(<<(i-))]});
}
}
}
if (N == ) writeln();
else writeln(f[][(<<N)-]);
} return ; }
【hdu 5418】 Victor and world的更多相关文章
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
- 【HDOJ 5419】 Victor and Toys (排列组合)
[HDOJ 5419] Victor and Toys n个玩具 m个区间 每一个玩具有一个beauty值 问任选三个区间 三区间的MINleft~MAXright的和的期望值 预处理一个数组 存放每 ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
- 【hdu 1043】Eight
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345 ...
- 【HDU 3068】 最长回文
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...
随机推荐
- OSI模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
- solus系统配置
#更新软件源 清华稳定源 sudo eopkg ar Tuna https://mirrors.tuna.tsinghua.edu.cn/solus/shannon/eopkg-index.xml 清 ...
- Keil建立第一个C51工程的步骤
参见51+arm开发板<使用手册.pdf> 1.“project” >> “new project” >> 新建一个用于保存工程的文件夹例如dem &g ...
- 针对JedisShardInfo中无法修改db的解决办法
package com.ldr.bean; import java.lang.reflect.Field; import redis.clients.jedis.JedisShardInfo; pub ...
- java集合系列之ArrayList源码分析
java集合系列之ArrayList源码分析(基于jdk1.8) ArrayList简介 ArrayList时List接口的一个非常重要的实现子类,它的底层是通过动态数组实现的,因此它具备查询速度快, ...
- 普元OA平台介绍
Primeton Portal提供了访问企业信息资源的统一入口,是一个面向企业的内容管理.信息发布和集成展现平台,提供了单点登录.内容管理.信息发布.应用集成.个性化等功能,能够帮助企业快速搭建一个集 ...
- C#代码调用页面javascript函数
C#代码调用javascript函数 前台<%@ Page Language="C#" AutoEventWireup="true" CodeFile ...
- Oracle 物理和逻辑备库健康监測的一个根据
以以下keyword眼为例: 1 物理备库健康检查根据: Tue Apr 22 16:44:51 CST 2014Media Recovery Log /data/CMS/arch_log/1_583 ...
- PJzhang:python基础入门的7个疗程-two
猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课-售价29元人民币 https://www.liaoxuefeng.com/wiki/1016959663602400 htt ...
- 嵌入式学习笔记(综合提高篇 第二章) -- FreeRTOS的移植和应用
1.1 资料准备和分析 上章节通过实现双机通讯,了解如何设计和实现自定义协议,不过对于嵌入式系统来说,当然不仅仅包含协议,还有其它很多需要深入学习了解的知识,下面将列出我在工作和学习上遇到的嵌入 ...