CF721C. Journey
说实话,这是一道非常简单的DP题,简单到如果放到NOIp第二题可能都有些差强人意,然而我写崩了。
所以简单记录一下。
需要注意的是,这道题的DP应该是从$N$点开始,以1为边界,满足最短路的三角形性质即可转移。
//cf c
//by Cydiater
//2016.9.30
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <cstdlib>
#include <iomanip>
using namespace std;
#define ll long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define down(i,j,n) for(int i=j;i>=n;i--)
;
const int oo=0x3f3f3f3f;
inline ll read(){
,f=;
;ch=getchar();}
+ch-';ch=getchar();}
return x*f;
}
,N,M,T,ans=,lastnode[MAXN],q[MAXN],top=;
bool vis[MAXN];
ll f[][];
struct edge{
int y,next;ll v;
}e[MAXN];
namespace solution{
inline void insert(int x,int y,int v){e[++len].next=LINK[x];LINK[x]=len;e[len].y=y;e[len].v=v;}
void init(){
N=read();M=read();T=read();
up(i,,M){
ll x=read(),y=read(),v=read();
insert(y,x,v);
}
}
void dfs(int node){
if(vis[node])return;
for(int i=LINK[node];i;i=e[i].next)if(!vis[e[i].y])dfs(e[i].y);
)
up(j,,N)]+e[i].v<f[node][j]){
f[node][j]=f[e[i].y][j-]+e[i].v;
if(node==N&&f[node][j]<=T)ans=max(ans,j);
}
vis[node]=;
}
void re_dfs(int node,int num){
){
]==f[node][num]-e[i].v){
lastnode[node]=e[i].y;
re_dfs(e[i].y,num-);
return;
}
}
}
void DP(){
memset(f,,sizeof(f));
f[][]=;
dfs(N);
}
void output(){
cout<<ans<<endl;
)return;
re_dfs(N,ans);
;i=lastnode[i])q[++top]=i;
down(i,top,)printf("%d ",q[i]);
puts("");
}
}
int main(){
//freopen("input.in","r",stdin);
using namespace solution;
init();
DP();
output();
;
}
CF721C. Journey的更多相关文章
- 拓扑排序+DP CF721C Journey
CF721C Journey 给出一个\(n\)个点\(m\)条边的有向无环图. 问从\(1\)到\(n\),在距离不超过\(k\)的情况下最多经过多少点,并输出一个方案. \(topo\)+\(DP ...
- CF721C. Journey[DP DAG]
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- 【CF721C】Journey(拓扑排序,最短路,DP)
题意:给一个无环的图,问用不超过T的时间从1到n最多可以经过多少个点.要求输出一条路径. 思路:因为无环,可以用DP做.不过因为时间最短的原因要拓扑排序后再DP,目测由底向上的更新也是可以的. ; . ...
- POJ2488A Knight's Journey[DFS]
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41936 Accepted: 14 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- POJ2488-A Knight's Journey(DFS+回溯)
题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Tot ...
- codeforces 721C C. Journey(dp)
题目链接: C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35564 Accepted: 12119 ...
- HDOJ-三部曲一(搜索、数学)- A Knight's Journey
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
随机推荐
- 理解Android虚拟机体系结构
1 什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的 ...
- node简单操作mysql的类
Creative.js 'use strict'; var pool = require('../utils/MysqlUtils'); var util = require('util'); var ...
- vijos-1003等价表达式
明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式是和 ...
- 创建Maven项目
在MyEclipse10中创建Maven Web项目 1.构建maven项目 2.将maven项目转换成Dynamic Web Project 3.设置部署集 4.pom.xml文件配置 参考: ht ...
- canvas缓动2
同之前的缓动原理.这里将终点换成鼠标,做出跟随效果 var canvas = document.getElementById("canvas"); var cxt=canvas.g ...
- PS转手绘
2014-08-03 一.人物皮肤处理 复制两层图层,对背景图层隐藏,最后一层 高斯模糊 ,按住ALT创建图层蒙版, 使用画笔工具涂抹人物皮肤,眼睛不涂,把阴影和高光处抹均匀,最后应用图层蒙版,向下 ...
- lucene-查询query->TermQuery按词条搜索
TermQuery是最简单.也是最常用的Query.TermQuery可以理解成为“词条搜索”,在搜索引擎中最基本的搜索就是在索引中搜索某一词条,而TermQuery就是用来完成这项工作的. 在Lu ...
- Echarts-画堆积柱状图,折线图
导入echarts包 <script src='../scripts/libraries/echarts/echarts-all.js'></script> js var my ...
- Hibernate @OneToMany 一对多注解
配置一 @OneToMany(cascade=CascadeType.ALL) @JoinColumn(name="fatherID") //对应儿子类的哪个字段 子类中配置Man ...
- 本篇文章: HTML DOM 对象
HTML DOM 对象 本篇主要介绍HTML DOM 对象:Document.Element.Attr.Event等4个对象. 目录 1. Document 对象:表示文档树的根节点,大部分属性和方法 ...