题意:中文题。。。

题解:状态比较多,可以说是状压的基础题吧,我们定义dp[i][j],j为一个二进制数,每位0表示接触过该物品,1表示没有接触过;j表示当前物品在谁手上。递推的顺序注意一下就好

ac代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector> #define MAXN 20
#define INF 0x3f3f3f3f using namespace std; int n;
int edges[MAXN][MAXN];
int dp[][MAXN]; int min(int a, int b)
{
if (a == -) return b;
if (b == -) return a;
return a < b ? a : b;
} int main()
{
scanf("%d", &n);
int t;
for (int i = ; i < n; i++)
{
for (int j = ; j < n; j++)
{
scanf("%d", &edges[i][j]);
}
}
memset(dp, -, sizeof(dp));
for (int i = ; i < n; i++)
{
dp[ << i][i] = ;
}
int ans = -;
for (int i = ; i < << n; i++)
{
for (int j = ; j < n; j++)
{
if (dp[i][j] != -)
{
for (int k = ; k < n; k++)
{
if (!(i & ( << k)))
{
dp[i | ( << k)][k] = min(dp[i | ( << k)][k], dp[i][j] + edges[j][k]);
if ((i | ( << k)) == ( << n) - ) ans = min(ans, dp[i | ( << k)][k]);
}
}
}
}
}
if (ans != -)
printf("%d\n", ans);
else printf("0\n"); return ;
}

vijo 1456最小总代价的更多相关文章

  1. Vijos 1456 最小总代价 (状压dp)

    看到这道题n只有16,就可以想到状压dp 每个人只有经过或者没经过,那就用1表示经过,0表示没经过 但是不是当前在谁那里,所以再加一维来记录 所以f[state][i]表示在物品在i,当前的状态是st ...

  2. 最小总代价 状压DP

    描述 n个人在做传递物品的游戏,编号为1-n. 游戏规则是这样的:开始时物品可以在任意一人手上,他可把物品传递给其他人中的任意一位:下一个人可以传递给未接过物品的任意一人. 即物品只能经过同一个人一次 ...

  3. VJP1456 最小总代价(状压)

    链接 这题卡了一天  刚开始没考虑第一个传的和最后一个传的 感觉挺简单 啪啪的敲完 居然还过了17组数据.. 正解:dp数组一维保存状态 一维保存当前传到了谁 再枚举是由谁传过来的 这样可以保证正确性 ...

  4. vijos 1524 最小监视代价

    背景 看到Vijos上此类型的题目较少,特地放一道上来给大家练练. 描述 由于yxy小朋友做了一些不该做的事,他被jzp关进了一个迷宫里.由于jzp最近比较忙,疏忽大意了一些,yxy可以在迷宫中任意走 ...

  5. [vijos P1524] 最小监视代价

    历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下: (1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么 ...

  6. lintcode: 最小调整代价

    题目 最小调整代价 给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少. 样例 对于数组,最小的调整 ...

  7. 【网络流24题】 No.12 软件补丁问题(最小转移代价 最短路)

    [题意] T 公司发现其研制的一个软件中有 n 个错误, 随即为该软件发放了一批共 m 个补丁程序. 每一个补丁程序都有其特定的适用环境, 某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才 ...

  8. BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3399 题意: 给你一个数列a,和一个可变换顺序的序列b(数列长度≤25000). a增加一 ...

  9. [程序员代码面试指南]递归和动态规划-最小编辑代价(DP)

    问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把s ...

随机推荐

  1. SQL Server 将查询结果集以XML形式展现 for xml path

    for xml path,其实它就是将查询结果集以XML形式展现 双击打开

  2. Could not attach to pid : "xx"最近启动Xcode运行项目都会出现这个问题,再次启动或者多启动几次,就可以正常运行工程了。

    最近启动Xcode运行项目都会出现这个问题,再次启动或者多启动几次,就可以正常运行工程了. 普及一下:PID(进程控制符)英文全称为Process Identifier,它也属于电工电子类技术术语. ...

  3. C++ STL中常见容器的时间复杂度和比较和分析

    C++ STL中常见容器的时间复杂度 map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种.不同操作的时间复杂度近似为: 插入: O( ...

  4. WPF richTextBox 滚动到某项

    在网上没有找到合适的代码,自己写了一段,还有待优化... 直接上代码 /// <summary> /// 滚动到某项 /// </summary> /// <param ...

  5. Java中字符串操作的基本方法总结:

    1.字母大小写转换: package com.imooc; public class SortDemo { public static void main(String[] args) { char ...

  6. oracle存储过程(带参数的存储过程)

    带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...

  7. Python - Django - 在 CBV 中使用装饰器

    urls.py: from django.conf.urls import url from app02 import views urlpatterns = [ # app02 url(r'^app ...

  8. MongoDB学习笔记一:MongoDB基础

    目录 MongoDB是什么? 学了有什么用? MongoDB入门 安装 修改数据库位置 MongoDB的启动方式 MongoDB的图形化工具 MongoDB基本命令 增 查询 更新 删除 排序 投影 ...

  9. LODOP关联,打印项序号注意事项

    之前也有介绍过打印项序号:Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA如果是个给打印项添加样式,最常用的是SET_PRINT_STYLEA(0.....),第一 ...

  10. 【Leetcode_easy】908. Smallest Range I

    problem 908. Smallest Range I solution: class Solution { public: int smallestRangeI(vector<int> ...