题目

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. SSM整合【狂神说】

    1.环境要求 IDEA MySQL 5.7 Tomcat 9 Maven 3.6 要求: 需要熟练掌握MySQL数据库,Spring,Java Web及Mybatis知识,简单的前端知识. 2.数据库 ...

  2. (jmeter笔记)jmeter用正则匹配响应数据,满足两个条件

    方法1.用正则匹配响应数据,满足两个条件 \{[^}]+?"Id":(\d*)[^}]+?"Picking"[^}]+?\} 方法2. \{"Pick ...

  3. Linux 下查看mysql 加载的配置文件, 并且解决报错 “this is incompatible with sql_mode=only_full_group_by”

    # 查看命令地址 which mysql /usr/local/mysql/bin/mysql # 查看配置文件地址 /usr/local/mysql/bin/mysql --verbose --he ...

  4. 【Go】时间

    mysql中的datetime转时间戳 // 获取mysql中的datetime类型转时间戳 t := "2023-02-21T14:51:00+08:00" ts, _ := t ...

  5. ORA-06502: PL/SQL: numeric or value error: character string buffer too small

    oracle执行报错 ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: a ...

  6. Metasploit渗透测试框架一

    Metasploit简介 Metasploit是一个渗透测试平台,使您能够查找,利用和验证漏洞.该平台还有Metasploit Pro. Metasploit是一个免费的.可下载的框架,本身自带数百已 ...

  7. jenkins构建触发器定时任务Build periodically和Poll SCM 后续研究

    https://www.cnblogs.com/caoj/p/7815820.html

  8. argocd

    argocd Argo CD - Declarative GitOps CD for Kubernetes (argo-cd.readthedocs.io) What Is Argo CD Argo ...

  9. eval对函数this指向的影响

    js eval() 对 this 指向的影响 const fn = () => { console.log('fn this is:', this) } function evalWrapper ...

  10. debian11用iso制作本地apt源

    摘抄记录,原文链接: https://blog.csdn.net/leejearl/article/details/122708953?spm=1001.2101.3001.6650.1&ut ...