洛谷P4802 [CCO 2015]路短最
题目
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]路短最的更多相关文章
- P4802 [CCO 2015]路短最
Problem 这题的题意是 求一条 经过 起点和终点的 最长路径.且一个点只能经过一次. 我们设定 \(dis_{i,j}\) 为 i 到 j 的距离(应该没有重边) 要注意的是 不能用 \(Flo ...
- 洛谷 P4665 [BalticOI 2015]Network
洛谷 P4665 [BalticOI 2015]Network 你有一棵 $ n $ 个节点的树,你可以在树上加一些边,使这棵树变成一张无重边.自环的图,且删掉任意一条边它仍然联通.求最少要加多少条边 ...
- 洛谷 P3819 松江1843路
题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...
- 洛谷P3819 松江1843路
P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...
- 洛谷P1556 幸福的路
P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails
题意翻译 约翰一共有\(N\))个牧场.由\(M\)条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场\(1\)出发到牧场\(N\)去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰 ...
- 洛谷 P1807 最长路_NOI导刊2010提高(07)
最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> ...
- 洛谷 P1556 幸福的路
P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...
- 洛谷——P3819 松江1843路
https://www.luogu.org/problem/show?pid=3819 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方 ...
- 洛谷P1613 跑路
题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...
随机推荐
- vue真实项目结构
我明白你的需求.如果你想看一个真实企业项目使用的复杂目录结构,你可以参考以下几个例子: 根据1的介绍,一个vue项目的目录结构可以细分为以下几个部分: |- src | |- api 存放所有请求接口 ...
- vue中的Swiper使用slideTo提示no function
参考官网资料解决:
- RabbitMQ的安装(linux版)
原文地址:https://blog.csdn.net/jiguquan3839/article/details/91346261 注意:在web管理页面登录提示"User can only ...
- PHP安装SOAP扩展调用webservice获取数据
报错内容: 调用方式: 错误原因: URL未加后缀?WSDL导致异常,加入后异常问题解决.
- Hadoop2.7.3源码编译
一.编译源码步骤演示详解 需求:官网下载的hadoop包,执行hadoop命令时,会有警告信息,为去除此警告,需要重新编译hadoop相应版本的源码,替换hadoop安装包lib目录下的native( ...
- lowcodeEngine 组件面板的拖拽功能
设计器和渲染器处在不同的 Frame 渲染器以单独的 iframe 嵌入,xxx-simulator-renderer 通过和 host进行通信来和设计器打交道,比如点击渲染画布任意一个位置,需要能计 ...
- shell_Day05
交互输入 read Python中用input()函数,进行输入: read命令同时可以定义多个变量值:而输入的内容默认以空格为分隔符,将值输入到对应的变量中: 如果默认值过多,最后所有的值都会 ...
- Markdowm的下载方法
1打开百度搜索,输入TYPORA打开下载页面,根据自己的系统(我的是WINDOWS64位)点"DOWN"进行下载安装. 2安装好后回到桌面新建一个文件夹(Markdown学习),然 ...
- Fiddler抓包原理与操作
https://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#2306864
- selenium------关于switch_to的用法场景
基于python3的语法,driver.switch_to_alert()的表达会出现中划线,因此需要把后面的下划线改为点.一.目前接触到的switch_to的用法包括以下几种:1. 切换到制定的wi ...