题意:

      给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms。

思路:

      一开始理解错了,以为是选择一条路径能遍历所有点的路径的总长度,如果是这样可以有两种方法一个就是暴搜时间复杂度n!(不可以),另一个是dp,开dp[i][j] i是状态,j是点(也不可以,状态太大了),所以就蛋疼了,后来发现自己读错题了,what's all,哎! 这个题目可以直接暴搜,有两个剪纸,一个就是根据时间剪纸,每一步必须保证后面的所有的时间都来得及,另一个就是如果当前值比答案还大,那么就直接return.

#include<stdio.h>
#include<string.h>

int
time[33] ,mark[33];
int
dis[33][33];
int
n ,ans; int minn(int x ,int y)
{
return
x < y ? x : y;
} void
Floyd(int n)
{
for(int
k = 1 ;k <= n ;k ++)
for(int
i = 1 ;i <= n ;i ++)
for(int
j = 1 ;j <= n ;j ++)
dis[i][j] = minn(dis[i][j] ,dis[i][k] + dis[k][j]);
} void
DFS(int frm ,int s ,int len ,int ge ,int sum)
{
if(
s == n)
{

ans = minn(ans ,sum);
return ;
}
if(
sum > ans) return;
for(int
i = 2 ;i <= n ;i ++)
if(!
mark[i] && len + dis[frm][i] > time[i])
return;
for(int
i = 2 ;i <= n ;i ++)
{
if(!
mark[i])
{

mark[i] = 1;
DFS(i ,s + 1 ,len + dis[frm][i] ,ge - 1 ,sum + dis[frm][i] * ge);
mark[i] = 0;
}
}
} int main ()
{
int
i ,j;
while(~
scanf("%d" ,&n))
{
for(
i = 1 ;i <= n ;i ++)
for(
j = 1 ;j <= n ;j ++)
scanf("%d" ,&dis[i][j]);
for(
i = 2 ;i <= n ;i ++)
scanf("%d" ,&time[i]);
Floyd(n);
ans = 1000000000;
memset(mark ,0 ,sizeof(mark));
DFS(1 ,1 ,0 ,n - 1 ,0);
ans == 1000000000 ? puts("-1") : printf("%d\n" ,ans);
}
return
0;
}

hdu4848 DFS 暴搜+ 强剪枝的更多相关文章

  1. HDU 4284 Travel (Folyd预处理+dfs暴搜)

    题意:给你一些N个点,M条边,走每条边要花费金钱,然后给出其中必须访问的点,在这些点可以打工,但是需要先拿到证书,只可以打一次,也可以选择不打工之直接经过它.一个人从1号点出发,给出初始金钱,问你能不 ...

  2. Usaco 2.3 Zero Sums(回溯DFS)--暴搜

    Zero SumConsider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... ...

  3. HDU 4277 USACO ORZ(DFS暴搜+set去重)

    原题代号:HDU 4277 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277 原题描述: USACO ORZ Time Limit: 5000/1 ...

  4. hdu 4277 USACO ORZ (dfs暴搜+hash)

    题目大意:有N个木棒,相互组合拼接,能组成多少种不同的三角形. 思路:假设c>=b>=a 然后枚举C,在C的dfs里嵌套枚举B的DFS. #include <iostream> ...

  5. ROADS POJ - 1724 约束最短路 暴搜 加剪枝

    http://poj.org/problem?id=1724 题意:最短路的模板,不过每条边加上一个费用,要求总费用不超过k 题解:不能用dijkstra ,直接暴力,dfs维护len和cost. 普 ...

  6. [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边 ...

  7. POJ1321棋盘问题(暴搜)

    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. ...

  8. 紫书 习题7-14 UVa 307(暴搜+剪枝)

    这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...

  9. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)

    题意:       给你两个数n,k问你是否怎在这样一个序列:      (1)这个序列有k个正整数,且不重复.      (2)这k个数的和是n.      (3)其中有k-1个数的和是一个平方数. ...

随机推荐

  1. Pyqt5——变色的表格

    需求:鼠标左键点击表格后,对应的单元格背景颜色发生变化. 实现:(1)使用Qt的model-view模式生成表格视图. (2)重写表格的点击事件. (3)设置表格的背景颜色. 正常情况下,当用户选中单 ...

  2. Zeebe服务学习3-Raft算法与集群部署

    1.背景Zeebe集群里面保证分布式一致性问题,是通过Raft实现的,其实这个算法用途比较广泛,比如Consul网关,也是通过Raft算法来实现分布式一致性的. 首先简单介绍一下Raft: 在学术界, ...

  3. Java数据类型拓展

    public class Demo03 { public static void main(String[] args) { //整数拓展: 二进制0b 十进制 八进制0 十六进制0x int i = ...

  4. 记录 Allsec 解题过程

    开局打开URL:http://119.3.191.245:65532/#/allsecPlayGame,前去做游戏 游戏URL:http://119.3.191.245:8877/Login.php ...

  5. 如何在Bash脚本中引入alias

    更多精彩内容,请关注微信公众号:后端技术小屋 alias的使用 在日常开发中,为了提高运维效率,我们会用alias(命令别名)来定义命令的简称.比如在~/.bash_profile中添加: alias ...

  6. .NET并发编程-任务函数并行

    本系列学习在.NET中的并发并行编程模式,实战技巧 请问普通: 被门夹过的核桃还能补脑吗 本小节开始学习基于任务的函数式并行.本系列保证最少代码呈现量,虽然talk is cheap, show me ...

  7. 安装JDK步骤,配置环境变量

    DK是Java语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具.所以今天教一 ...

  8. 利用eigen库简单实现矩阵功能

    eigen是目前运行速度较快的C++矩阵运算库,而且其轻便小巧安装方便的特点简直是吸引人啊!特做此笔记,记录一下这个安装简单.体积轻巧.功能强大的C++库. 1. Download and Insta ...

  9. vue 项目集成 husky+commitlint+stylelint

    最近刚换了新工作,这两天也没有业务上的需求,做了一些前端工程化方面的东西.要在现有的项目中集成 husky+commitlint+stylelint,也不能对现有代码产生影响. 使用 lint 的目的 ...

  10. Java 给PPT添加动画效果(预设动画/自定义动画)

    PPT幻灯片中对形状可设置动画效果,常见的动画效果为内置的固定类型,即动画效果和路径是预先设定好的固定模板,但在设计动画效果时,用户也可以按照自己的喜好自定义动画动作路径.下面,通过Java后端程序代 ...