第二题:挖地雷(拓扑图+dp)

yuriwkt 2022-05-14 16:08:53

这道题一看就是拓扑排序的性质,首先他强调了并规定路径都是单向的,而且无环,那么我们就可以利用拓扑排序的性质来做这道题(做完后我看了一下标签,拓扑图,果然如此)。先对它进行拓扑排序,然后从后往前的递推公式

递推公式如下  dp[u]=max(dp[u],dp[v]),最后加上自己这个节点的地雷数,不过这道还需要输出路径,开个path数组,记录一下,没什么时间,代码写的比较糙。

AC代码如下:

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int d[201];
vector<int> e[201];
int a[201];
int seq[201];
int dp[201];
int path[201]={0};
int topsort(int n)
{
	queue<int> que;
	for(int i=1;i<=n;i++)
	{
		if(d[i]==0)
		que.push(i);
	}
	int cnt=0;
	while(!que.empty())
	{
		int top=que.front();
		seq[cnt++]=top;
		que.pop();	
		for(int i=0;i<e[top].size();i++)
		{
			int v=e[top][i];
			d[v]--;
			if(d[v]==0)
			{
				que.push(v);
			}
		}
	}
	return cnt;
} 
int main()
{
	int n,i;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int c,b;
	cin>>b>>c;
	while(b)
	{
		e[b].push_back(c);
		d[c]++;
		cin>>b>>c;
	}
	topsort(n);
	int res=0,p;
	for(i=n-1;i>=0;i--)
	{
		dp[ seq[i] ]=0;
		for(int j=0;j<e[seq[i]].size();j++)
		{
			int v=e[seq[i] ][j];
			if(dp[v]>dp[seq[i]] )
			{
				dp[seq[i]]=dp[v];
				path[ seq[i] ]=v;
			}
			
		}
		dp[ seq[i] ]+=a[seq[i]];
		if(res<dp[ seq[i] ])
		{
			res=dp[ seq[i] ];
			p=seq[i];
		}
		
	}

	while(p)
	{
		cout<<p;
		p=path[p];
		if(p==0)
		{
			break;
		}
		cout<<"-";
		
	}
	cout<<endl;
	cout<<res<<endl;
	return 0;
}


 

...全文
151 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-数据结构与算法 发布问题, 以便更快地解决您的疑问
这个是完整源码 python实现 大数据 Spark pyspark 可视化大屏+Kafka+FastAPI+Vue3 【大数据毕业设计】基于Spark实时电商用户行为分析与预测(Python版本+pyspark+可视化大屏+Kafka+FastAPI+Vue3) 源码+论文 完整版 数据库Mysql 随着电子商务规模持续扩大,用户在浏览、加购、收藏与购买等环节产生的行为数据呈现高并发、高吞吐与强时效特征。传统离线批处理分析难以满足运营决策对实时性的要求。本文设计并实现了一套基于 Spark 的实时电商用户行为分析与预测系统,围绕“数据采集—流式计算—指标落库—可视化展示—销售预测”的完整链路展开研究与工程实践。 系统采用前后端分离架构:前端基于 Vue3、Element Plus 与 ECharts 构建管理端与数据大屏;后端采用 Python FastAPI 提供 RESTful 接口,并结合 JWT 完成管理员身份认证;实时链路以 Kafka 作为消息中间件承接行为事件,以 Spark Structured Streaming 完成按小时窗口的 PV、UV、加购、收藏、购买与销售额聚合;预测模块基于 Spark ML 线性回归对销售额序列进行建模,并输出 RMSE、MAE、MAPE 等误差指标。数据持久化采用 MySQL,数据库名为 db_ecommerce,核心业务表均以 t_ 前缀命名。 测试结果表明,系统能够稳定完成管理员登录、个人中心维护、行为与商品管理、实时统计展示、销售预测对比及流水线状态监控等功能,具备较好的可扩展性与教学示范价值,可为电商运营提供实时洞察与辅助决策支持。 本文的主要工作包括:完成系统需求分析与总体架构设计;绘制实体属性图与实体关系图并完成八张核心业务表设计;实现基于 Kafka 与 Spark 的实时统计及销售预测链路;完成 Vue

51,741

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧