题目

https://www.luogu.com.cn/problem/P4802

思路

数据范围 \(n\leq 18\),义眼丁真,鉴定为状压。

好,那我们来思考一下状态的构建。其实是很套路的东西,我们用 \(dp[x][state]\) 表示当前在 \(x\) 点,已经走过的点的集合为 \(state\) 的答案。

然后写个记搜就完了。

比较有意思的一点是最长路的终点是钦定好的,我第一次做的时候没考虑这个WA了一大片。比较好想的一个想法是搜的时候判一下如果当前点没有出边且不等于n-1的时候返回-inf。

但是这个写法感觉比较丑。

我想了一个自认为比较妙的处理方法:建图的时候加一条从n-1到新点n的单向边,长度为1000000(或者任意一个很大的数)。这样就基本不用改之前的记搜代码了。

最终的ans减去这个大数就是答案。因为这条大边在dp时是必定选到的,所以就保证了走到n-1点。

不得不说还是切水题比较快乐,Ynoi毒瘤,lxl毒瘤

代码

点击查看代码
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int fst[20],nxt[500],to[500],w[500],cnt=0;
int n,m;
int dp[20][1<<18];
void add(int x,int y,int z){
to[++cnt]=y;
w[cnt]=z;
nxt[cnt]=fst[x];
fst[x]=cnt;
}
int dfs(int x,int st){
int i;
if(dp[x][st]) return dp[x][st];
if(x==n) return 0;
for(i=fst[x];i;i=nxt[i]){
if(st&(1<<to[i])) continue;
dp[x][st]=max(dp[x][st],w[i]+dfs(to[i],st|1<<x));
}
return dp[x][st];
}
int main(){
int i,j;
int x,y,z;
int ans;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
add(n-1,n,inf/4);
ans=dfs(0,0);
printf("%d",ans-inf/4);
// system("pause");
return 0;
}

洛谷P4802 [CCO 2015]路短最的更多相关文章

  1. P4802 [CCO 2015]路短最

    Problem 这题的题意是 求一条 经过 起点和终点的 最长路径.且一个点只能经过一次. 我们设定 \(dis_{i,j}\) 为 i 到 j 的距离(应该没有重边) 要注意的是 不能用 \(Flo ...

  2. 洛谷 P4665 [BalticOI 2015]Network

    洛谷 P4665 [BalticOI 2015]Network 你有一棵 $ n $ 个节点的树,你可以在树上加一些边,使这棵树变成一张无重边.自环的图,且删掉任意一条边它仍然联通.求最少要加多少条边 ...

  3. 洛谷 P3819 松江1843路

    题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...

  4. 洛谷P3819 松江1843路

    P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...

  5. 洛谷P1556 幸福的路

    P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...

  6. 洛谷P2939 [USACO09FEB]改造路Revamping Trails

    题意翻译 约翰一共有\(N\))个牧场.由\(M\)条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场\(1\)出发到牧场\(N\)去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰 ...

  7. 洛谷 P1807 最长路_NOI导刊2010提高(07)

    最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> ...

  8. 洛谷 P1556 幸福的路

    P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...

  9. 洛谷——P3819 松江1843路

    https://www.luogu.org/problem/show?pid=3819 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方 ...

  10. 洛谷P1613 跑路

    题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...

随机推荐

  1. Windows10使用VMware安装centos

    系统环境: Windows 10 安装步骤: 1.下载centos http://mirrors.aliyun.com/centos/ 2.使用VMware安装centos 3.配置网络 $ cd / ...

  2. golang for 循环

    1.for 循环 for循环是Golang唯一的循环语句. for 初始表达式; 布尔表达式; 迭代因子 { 循环体; } package main import "fmt" fu ...

  3. PHP安装SOAP扩展调用webservice获取数据

    报错内容: 调用方式: 错误原因: URL未加后缀?WSDL导致异常,加入后异常问题解决.

  4. docker tar包下载地址

    https://download.docker.com/linux/static/stable/x86_64/

  5. 初涉gulp

    //文件结构 gulpfile.js     var gulp = require('gulp'); var sass = require('gulp-sass'); //编译scss var cle ...

  6. Web安全与渗透测试笔记

    Web安全与渗透测试笔记 @author: lamaper 一.基本网络知识 (一)网络是怎样联通的 TCP/IP协议 Internet Http协议 (二)Http协议 http请求 一个完整的Ht ...

  7. java方法的笔记

    方法 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可以运行的,需要手动 ...

  8. VM虚拟机15安装Kali Linux2020版详细教程

    下载kali镜像 kali Linux官网地址https://www.kali.org/downloads/下载相对应的电脑版本 打开Vmware虚拟机 安装虚拟机看物理机配置,尽量不要太折腾电脑(虚 ...

  9. 我们后端代码这样子设置虽然这样子返回的是字符串,但是json字符串也是字符串

    我们后端代码这样子设置虽然这样子返回的是字符串 但是json字符串也是字符串,后端如果想接收的话,直接百度下怎么接收json字符串就行

  10. WebSocket 使用记录

    WebSocket 主要解决的问题是 后端数据更新主动像前端推送数据所需依赖<dependency> <groupId>org.springframework.boot< ...