来自wzc的简单拓扑dp(拓扑DP)

题目已经把解决方案给你了,就是拓扑DP(出题人这回没有耍你,真的)
不过我还是莽了两发dijk贪心QAQ,果然错了(毕竟DP弱者,巨贪心)…

正片开始

有向图拓扑DP(废话
状态定义如下Dp[i] = max(Dp[i],Dp[k] + val[i]);
k这里是 当i -> k 成立(i到k有一条边相连),就会存在上面的状态转移
So,很容易想到广搜然后利用上面的方程…
就是这样

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int MAXN = 100005;
struct node
{int ne,to,w;
}a[MAXN<<2];
int cnt,head[MAXN<<2];
int val[MAXN];
void add(int x,int y,int w = 0)
{a[++cnt].ne = head[x];a[cnt].to = y;a[cnt].w = w;head[x] = cnt;
}
int deg[MAXN];
int dp[MAXN];
int main()
{memset(head,-1,sizeof head);int n,m;scanf("%d %d",&n,&m);for(int i=1;i <= n;i++)scanf("%d",&val[i]);for(int i=0;i < m;i++){int x,y;scanf("%d %d",&x,&y);add(x,y);deg[y] += 1;}queue<int> que;que.push(0);memset(dp,-0x3f,sizeof dp);dp[0] = 0;while(!que.empty()) {int t = que.front();que.pop();for(int i=head[t];~i;i = a[i].ne){int ne = a[i].to;dp[ne] = max(dp[ne],dp[t] + val[ne]);deg[ne]--;if(deg[ne] == 0)que.push(ne);}}cout<<dp[n];return 0;
}

欢迎小伙伴在评论区留言,若有错误,请大佬指正QAQ。
喜欢就点个赞吧~

来自wzc的简单拓扑dp相关推荐

  1. 来自wzc的简单拓扑dp———浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛)

    传送门 题目描述 (良心出题人wzc说这是个简单拓扑dp,它就必然是一个简单拓扑dp,wzc是不会骗人的) wzc在一张拓扑图上,他所在的起始位置被标记为0.除了起始位置外,还有被1到n这n个整数所标 ...

  2. 【codevs2131】【BZOJ1924】所驼门王的宝藏,tarjan+拓扑DP

    Time:2016.06.01 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 比较简单 使用规则建出一个包含N个点的无向图来,然后tarjan,得到重构后的有向无环图, ...

  3. 蓝桥杯 算法训练 数字三角形(最简单的DP)

    传送门 题目描述 如下图示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ● ...

  4. Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp

    A. One-dimensional Japanese Crossword time limit per test 1 second memory limit per test 256 megabyt ...

  5. 洛谷P4742(tarjan缩点+拓扑DP)

    https://www.luogu.org/problemnew/show/P4742 题目背景 [Night - 20:02[Night−20:02 P.M.]P.M.] 夜空真美啊--但是--快要 ...

  6. 加拿大 oracle audio,来自加拿大的“简单”与“纯粹”——Verity Audio Otello座地式扬声器...

    原标题:来自加拿大的"简单"与"纯粹"--Verity Audio Otello座地式扬声器 说到音响器材的设计开发理念,那么真所谓是"八仙过海,各显 ...

  7. (蓝桥杯)数字三角形。。(最简单的dp题)

    (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形 ...

  8. 每日一道算法题 拿金币(蓝桥杯练习系统)简单的dp算法

    资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就 ...

  9. BZOJ 1924 [Sdoi2010]所驼门王的宝藏 tarjan缩点+拓扑DP

    题意: 一个r*c的图中,有n个宫殿. 每个宫殿有一个类型. 类型1:可以到达他所在的行的任意宫殿. 类型2:可以到达他所在的列的任意宫殿. 类型3:可以到达他四周八个格子的任意宫殿. 现在你从任意一 ...

最新文章

  1. 创建交叉表_【零售】Tableau LOD+表计算做交叉购买分析
  2. mysql 分表的3种方法
  3. Android数据存储与持久化
  4. PercentFrameLayout(百分比布局)的基本使用
  5. 【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践
  6. ACM MM2021 | 快手获得Grand Challenge第一名
  7. apply()、call()、bind()
  8. Linux系统如何安装oki打印机,涨知识!OKI针式打印机的驱动安装方法
  9. Hi3519AV100开发记录
  10. 如何使用gitee(码云)提交,拉取管理项目代码
  11. iOS集成支付宝支付 Alipay
  12. php邮件回复功能,用PHP回复邮件(Laravel Mailgun)
  13. ubuntu加了张固态_UbuntuToGo——打造属于自己的移动固态热插拔Liniux操作系统
  14. 说说Java代理模式
  15. Wireshark抓取TCP三次握手包
  16. win7系统提示actionscript错误如何解决
  17. php 自定义字段erp,ERP自定义单据界面、自定义字段
  18. 人类遗传密码97%待解读
  19. mac m1关闭sip系统完整性保护csrutil disable,如何禁用mac m1的系统完整性保护
  20. JMeter入门教程详解

热门文章

  1. python爬虫-1.06-MaoyanSpider
  2. 商品库存管理系统网站php模板,进销存产品库存管理系统 v2.22源码
  3. math.h 三角函数
  4. 本科毕业设计(论文)外文翻译--采用多病人协调器集设计方法的远程温度监测装置
  5. [MATLAB]将.m文件生成dll文件
  6. IE浏览器自动跳转edge怎么恢复
  7. 神经网络入门教程,神经网络编程入门
  8. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un分析
  9. 【工具分享】免杀360火绒的shellcode加载器
  10. 养鸡场的计算机管理,养鸡场管理系统7.3 免费版