P1137 旅行计划】的更多相关文章

P1137 旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多. 现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置.现在对于所有的i,都需要你为小明制定一条路线,并求出以城市i为终点最多能够游览多少个城…
旅行计划 待证明这样dp的正确性. #include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; //Mystery_Sky // #define maxn 1000010 #define maxm 5000050 #define INF 0x3f3f3f3f; queue <int> q; int head[maxn]…
题目链接:https://www.luogu.org/problemnew/show/P1137 topsort + DP #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 100001; struct edge{ int next,…
用了STL,其他的没什么,赤裸裸的拓扑排序 下面给出代码 #include<cstdio> #include<iostream> #include<vector> #include<stack> using namespace std; int n,m,u,v; +],dis[+]; vector<+]; stack<int>str ; int main(){ cin >> n >> m; while(m--){ s…
/*拓扑排序去寻找点的拓扑序 便于DP,那么怎么去找 首先邻接表存边,然后dfs搜寻每一个点 最后进行拓扑排序,找到拓扑序*/ #include<bits/stdc++.h> ; ; using namespace std; ; int a,b; int dp[maxn]; int h[maxn],v[maxm],zrj[maxm]; void add(int a,int b) { zrj[p]=h[b]; h[b]=p; v[p]=a; p++; } int dfs(int y,int x)…
题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多. 现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置.现在对于所有的i,都需要你为小明制定一条路线,并求出以城市i为终点最多能够游览多少个城市. 输入输出格式 输…
题目传送门 由于满足游览先后顺序从西到东的性质,我们很自然的想到用拓扑排序处理出一个合理的游览顺序. 然鹅,之后呢? 事实上,拓扑排序常与Dp相结合,解决后效性.我们就可以在每次拓扑入队的时候更新答案,设f[i]表示终点为i能经过的最多城市数.则f[j]=max(f[j],f[i]+1). *Update 思考的时候,没想到dp qwq. 知道要用dp后就想了很久,想出了记录前驱的方法,但是不太对.(挖坑) code #include<cstdio> #include<algorithm…
在DAG中,拓扑排序可以确定dp的顺序 把图的信息转化到一个拓扑序上 注意转移的时候要用边转移 这道题的dp是用刷表法 #include<bits/stdc++.h> #define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b) for(register int i = (a); i <= (b); i++) using namespace std; ; struct Edge{…
我看了一下其他大佬的题解,大部分都是拓扑排序加上DP.那么我想有的人是不明白为什么这么做的,拓扑排序有什么性质使得可以DP呢?下面我就提一下. 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前. (源自百度) 通俗的说就是,一张有向无环图的拓扑序可以使得任意的起点u,它的一个终点v,在序列中的顺序是u在前v在后 我下面先附上代码,然后在继续…
https://www.luogu.org/problem/show?pid=1137 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多. 现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置.现在对于所有的i,都…