Codeforces 721C [dp][拓扑排序]
/*
题意:给你一个有向无环图。给一个限定t。
问从1点到n点,在不超过t的情况下,最多可以拜访几个点。
保证至少有一条路时限不超过t.
思路:
1.由无后向性我们可以知道(取决于该图是一个DAG),这题一定可以dp。
2.dp[i][j]代表,到达点i,并且拜访了j个城市的最短时间。
wa点:
没有初始化数组中的0..
*/ #include<bits/stdc++.h>
#define N 5050
using namespace std;
int inf=0x3f3f3f3f;
int num[N];
bool vis[N];
int dp[N][N];
struct edge{
int id;
int w;
edge *next;
};
edge edges[N];
edge *adj[N];
int ednum;
inline void addedge(int a,int b,int w){
edge *tmp=&edges[ednum++];
tmp->id=b;
tmp->w=w;
tmp->next=adj[a];
adj[a]=tmp;
}
int fromx[N][N];
int main()
{
int n,m,t,a,b,w;
scanf("%d%d%d",&n,&m,&t);
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
dp[i][j]=inf;
}
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&a,&b,&w);
addedge(a,b,w);
num[b]++;
}
dp[][]=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(vis[j]||num[j])continue;
vis[j]=;
for(edge *it=adj[j];it;it=it->next){
num[it->id]--;
for(int k=;k<=n;k++){
if(dp[it->id][k]>dp[j][k-]+it->w){
dp[it->id][k]=dp[j][k-]+it->w;
fromx[it->id][k]=j;
}
}
}
break;
}
} for(int i=n;i>=;i--){
if(dp[n][i]<=t){
printf("%d\n",i);
stack<int>ss;
int x=n,y=i;
ss.push(n);
while(fromx[x][y]!=){
ss.push(fromx[x][y]);
x=fromx[x][y];
y--;
}
ss.push();
while(!ss.empty()){
int pp=ss.top();
ss.pop();
printf("%d ",pp);
}
break;
}
} }
Codeforces 721C [dp][拓扑排序]的更多相关文章
- CodeForces 721C Journey(拓扑排序+DP)
<题目链接> 题目大意:一个DAG图有n个点,m条边,走过每条边都会花费一定的时间,问你在不超过T时间的条件下,从1到n点最多能够经过几个节点. 解题分析:对这个有向图,我们进行拓扑排序, ...
- The Preliminary Contest for ICPC Asia Nanjing 2019 - D Robots(概率dp+拓扑排序)
这题概率dp + 拓扑排序可以写 改天补解释 #include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; ve ...
- CodeForces - 919D Substring (拓扑排序+dp)
题意:将一个字符串上的n个字符视作点,给出m条有向边,求图中路径上最长出现的相同字母数. 分析:首先如果这张图中有环,则可以取无限大的字符数,在求拓扑排序的同时可以确定是否存在环. 之后在拓扑排序的结 ...
- Codeforces Round #460 (Div. 2)_D. Substring_[dp][拓扑排序]
题意:一个有向图,每个结点 被赋予一个小写字母,一条路径的value等与这条路径上出现次数最多的字母的数目,求该图的最大value 比赛时,用dfs超时,看官方题解用的dp和拓扑排序,a--z用0-2 ...
- Codeforces 919D Substring (拓扑排序+树形dp)
题目:Substring 题意:给你一个有向图, 一共有n个节点 , m条变, 一条路上的价值为这个路上出现过的某个字符最多出现次数, 现求这个最大价值, 如果价值可以无限大就输出-1. 题解:当这个 ...
- Codeforces 919D Substring ( 拓扑排序 && DAG上的DP )
题意 : 给出含有 N 个点 M 条边的图(可能不连通或者包含环),每个点都标有一个小写字母编号,然后问你有没有一条路径使得路径上重复字母个数最多的次数是多少次,例如图上有条路径的顶点标号顺序是 a ...
- cf919D 线性dp+拓扑排序
/* 给定一张有向图,图上每个结点都有一个字符,现在要求出一条路径,要使路径上某字符出现的次数最多 如果有环,输出-1即可 拓扑排序+dp dp[i][26]表示排序到结点i时26个字符出现的次数 在 ...
- BZOJ4011:[HNOI2015]落忆枫音(DP,拓扑排序)
Description 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫茜漫步在枫音乡的街道上.望着漫天飞舞的红枫,枫茜突然问出这样一个问题. 「相信吧.不然我们是什么,一团肉吗?要不是有灵魂……我们也 ...
- ZJU 1346 Comparing Your Heroes 状态压缩DP 拓扑排序的计数
做多校的时候遇见一个求拓扑排序数量的题,就顺便来写了一下. 题意: 你有个朋友是KOF的狂热粉丝,他有一个对其中英雄的强弱比较,让你根据这些比较关系来给这些英雄排名.问一共有多少种排名方式. 思路: ...
随机推荐
- mysql常用语句、命令(增删改查功能)
修改数据库的字符集 mysql>use mydb mysql>alter database mydb character set utf8;创建数据库指定数据库的字符集 ...
- .htaccess保护目录与文件
一般来说很多虚拟主机预设是没有开启保护网站主机目录下的文件,其实很危险的,假若你的目录下忘记放置index文件,那很可能您目录就被看光,一个不小心很可能重要资料就被拿走,这是蛮严重的一件事情.如果是L ...
- sqoop将关系型数据库的表导入hive中
1.sqoop 将关系型数据库的数据导入hive的参数说明:
- 数据库最大连接池max pool size
本文导读:Max Pool Size如果未设置则默认为100,理论最大值为32767.最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影 ...
- Java连接mysql数据库
1.先创建一个Java项目testMysql(我使用的是intellij编辑器). 2.导入mysql的驱动包. (1) (2) (4) 3.编写代码 import java.sql.Connecti ...
- webdriver如何定位多层iframe中元素
在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌 ...
- JSP 动作元素
JSP动作元素 1. 动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...
- crontab 移动日志-超越昨天的自己系列(12)
linux上定时执行某些脚本是管理服务器的时候比较常用的场景,比如定时检查进程是否存在,定时启动或关闭进程,定时检查日志删除日志等. 当我打开google百度crontab时长篇大论的一大堆,详细解释 ...
- 2015GitWebRTC编译实录17-audio_processing_neon编译问题解决
编译audio_processing_neon lib时,发现只要涉及到WEBRTC_ARCH_ARM64就会出现问题,仔细回想了下,年初编译旧版本解决arm64支持问题时,好像也是要把这个注掉,但是 ...
- UVa 10815 安迪的第一个字典
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...