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

yuriwkt yuriwkt 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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

递推公式如下  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;
}


 

...全文

相关推荐

动态规划练习题

很经典的动态规划题目,用于联系特别合适,里面包含了各种算法的应用,对于ACM竞赛或者找工作的同学都值得一看

chenduanjin

AI Design Skills一个不断壮大的设计技能合集,适用于 AI 编码工具

用户可借助此项目为 Claude Code、Cursor 等 AI 编码工具添加设计技能,轻松构建如着陆页等内容。项目包含多个独立设计技能文件夹,支持自定义设计值,安装方式简单适配多种工具

yiersansiwu123d

Path-Planning-Algorithm-main.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

高校技术转移办公室人员如何提升科技成果推介书的撰写效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

三相并网逆变器无功功率扰动+孤岛检测控制算法仿真【参考文献+仿真】

内容概要:本文围绕“三相并网逆变器无功功率扰动+孤岛检测控制算法仿真”展开,系统阐述了在新能源并网背景下,利用无功功率扰动法实现孤岛效应检测的关键技术原理与仿真方法。依托MATLAB/Simulink平台构建完整的三相并网逆变器控制系统模型,详细展示了控制策略的设计流程、算法实现机制及动态响应特性分析,重点突出孤岛检测的判据设定、扰动注入方式与检测盲区(NDZ)的优化。文档配套提供参考文献、仿真模型文件及相关技术说明,具备较强的理论深度与工程复现价值,是研究并网逆变器保护控制的重要参考资料。该资源隶属于“荔枝科研社”系列科研资料,聚焦电力电子与新能源并网领域的前沿技术仿真与论文复现。; 适合人群:适用于电力系统、电气工程及其自动化、新能源科学与工程等相关专业的高校研究生、科研人员,以及从事光伏/风电并网、微电网控制等方向的技术研发工程师,要求具备扎实的电力电子技术基础和一定的MATLAB/Simulink仿真能力。; 使用场景及目标:①深入理解无功功率扰动法在孤岛检测中的应用机理与实现步骤;②支撑毕业设计、科研课题或学术论文的仿真验证与结果复现;③用于新能源发电系统并网安全性分析与保护策略开发的实际工程参考;④辅助教学与培训中对复杂控制算法的可视化讲解与实践操作。; 阅读建议:建议结合所提供的参考文献与仿真文件同步学习,按照目录顺序逐步调试模型参数,重点关注控制环路设计、扰动信号幅值与频率设置对检测精度的影响,并通过仿真波形分析系统在不同工况下的动态行为,全面提升对实际工程问题的建模与解决能力。

抬头望远方
评论 1
收藏 已收藏
分享
返回顶部
yuriwkt
高校算法学习社区 51,729 成员 6,062 内容