PTA装修

PTA最短工期(拓扑排序) 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结... 阅读详情

作者 胡伟平

单位 广西科技大学

胡老师买了新房,正在搞装修,装修公司太坑了,于是胡老师就自己找装修师傅来干活,但是装修的很多环节是环环相扣的,比如,要先刷墙才能铺木地板,有些环节呢,又是互相不干扰的,比如厨房的装修和窗帘的安装。但是每个装修师傅的时间又受他接的单所限制。所以必须仔细安排才能把房子装修好。胡老师收到了若干种不同装修师傅的安排,他想尽快装修好了入住,你能帮他吗?

输入格式:

第一行输入正整数T(T< 20),表示有T个方案,对于每一个方案,第一行输入两个正整数N(< 100)和M,其中N是装修时间点的个数,从0开始编号,M是装修环节的个数。随后M行,每行输入三个非负整数表示一个装修环节,Start End Delay,Start表示开始时间点编号,End表示结束时间点编号,Delay表示装修需要时间。

输出格式:

对每一个方案,如果方案可行,则在一行里输入最早结束的时间,如果不可行,则输出Impossible!。

输入样例:

在这里给出一组输入。例如:

2
7 10
0 1 3
0 2 2
0 3 6
1 3 2
2 3 1
1 4 4
3 4 1
2 5 3
4 6 3
5 6 4
3 3
0 1 1
1 2 2
2 0 3

输出样例:

在这里给出相应的输出。例如:

10
Impossible!

 经典的拓扑排序,但这里有一个注意点,一个房间最快完成时间不取决于最快在这个房间的步骤,而是最晚完成的步骤。

例如:在没有前置任务的情况下完成房间地板安装需要10分钟,窗户安装8分钟,刷墙5分钟,那么这个房间最快完成时间就是10分钟。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"

ll n,m,sum,cnt;
ll v[1007],js[1007];//入度,房间最早结束时间 
map<ll,map<ll,ll> >mp;
queue<ll>q;
vector<ll>lian[1007];

void tp(){
	while(!q.empty()){
		ll x=q.front();//当前装修到哪个房间
		//当前房间的最晚时间,前一个房间的最晚时间+此步骤装修房间所需时间 
		for(auto it : mp[x])js[x]=max(js[x],js[it.first]+it.second);
		cnt=max(cnt,js[x]);1
		q.pop();//以下为拓扑模板 
		for(ll i = 0 ; i < lian[x].size() ; i ++){
			v[lian[x][i]]--;
			if(v[lian[x][i]] == 0){
				sum++;
				q.push(lian[x][i]);
			}
		}
	}
}

void solve(){
	cin >> n >> m;
	memset(v,0,sizeof v);//初始化 
	for(ll i = 0 ; i < n ; i ++)lian[i].clear();
	while(!q.empty())q.pop();mp.clear();
	while(m --){
		ll x,y,z;
		cin >> x >> y >> z;
		mp[y][x]=z;//注意,是先完成x房间再完成y房间 
		v[y]++;//拓扑的入度++
		lian[x].push_back(y);//建立拓扑的链表
	}
	sum=0,cnt=0;
	for(ll i = 0 ; i < n ; i ++)
		if(!v[i])q.push(i),sum++;
	memset(js,0,sizeof js);
	tp();
	if(sum < n)cout << "Impossible!" << endl;
	else cout << cnt << endl;
	return;
}

int main(){
	ll t=1;cin >> t;
	while(t--)solve();
	return 0;
}

图论10 拓扑排序 上次我们学习了prim和kruskal算法还有LCA点的知识,全是干货……详见《图论9 prim+LCA算法详解》。 今天我们来学一个简单又易学的排序算法——拓扑排序。 在接触之前,我们先来学一种图,他的名字叫有向无环图(DAG)。这种图指的是一个不包括环的有向图,但是不能是一棵树,要不可能就成了这个图的生成树,这个生成树叫有向树。 接下来我们在学习几个干货:点的前驱和后继。一个点的前驱是在到这个点以前必须先到的点,一个点的后继是经过这个点以后可以到达的点。但是注意,这些的前提是没有回路,否则就代表一 阅读详情

相关推荐

PTA 6-8 拓扑排序实战:从工程任务调度到代码实现

本文深入探讨了拓扑排序在工程任务调度中的实际应用,从理论到代码实现全面解析。通过装修任务和电商系统重构等实例,展示如何将有向无环图转化为高效执行序列,并详细讲解PTA题目中的算法实现细节与优化技巧。

weixin_30872337的博客 556

PTA - 拓扑排序

一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里...

weixin_33847182的博客 1301

S32K3 MCAL实战:从零配置LED控制(MCU时钟+PORT+DIO全流程)

本文详细介绍了S32K3 MCAL的实战配置流程,从MCU时钟树配置到PORT引脚功能设置,再到DIO模块的标准化接口应用,通过LED控制案例完整展示三层配置逻辑。重点解析了时钟源选择、PLL配置、外设时钟使能等关键步骤,帮助开发者快速掌握汽车电子MCU开发的核心技术。

weixin_30352645的博客 419

7-2 高精度求累加和 分数 25作者 胡伟平单位 广西科技大学

使用求和公式求1到N的累加和大家都会,但是如果把N值变大呢,比如100位的整数,那该怎么求?

qq_59183443的博客 1178

FRDM-KEXX驱动库实战:从SDK解压到外设驱动开发

嵌入式开发中,硬件驱动库是提升开发效率的关键工具。基于ARM Cortex-M0+内核的NXP Kinetis KE系列MCU,其官方FRDM-KEXX驱动库采用分层结构,包含CMSIS、外设驱动、板级支持及中间件,通过封装寄存器操作,让开发者无需深陷底层细节。在工业控制、家电、电机驱动等场景中,合理利用驱动库能显著缩短项目验证周期,降低踩坑概率。本文从驱动库的目录结构入手,详细讲解如何选择正确的板卡工程、配置IDE环境、跑通GPIO/UART/定时器等外设驱动,并结合实际经验分享芯片型号选错、时钟配置异常

weixin_34216107的博客 388

告别理论!手把手教你用Patran/Nastran搞定悬臂翼的颤振分析(附完整模型文件)

本文提供了一份详细的Patran/Nastran悬臂翼颤振分析实战指南,涵盖从几何建模到结果解读的全过程。通过手把手教学和完整模型文件,帮助工程师和学生快速掌握气动弹性分析技术,特别适合需要实际操作的初学者。文章重点介绍了模态分析、气动建模和颤振求解等关键步骤,并提供了常见问题排查和优化建议。

weixin_30879169的博客 493

1-7 装修

胡老师买了新房,正在搞装修,装修公司太坑了,于是胡老师就自己找装修师傅来干活,但是装修的很多环节是环环相扣的,比如,要先刷墙才能铺木地板,有些环节呢,又是互相不干扰的,比如厨房的装修和窗帘的安装。但是每个装修师傅的时间又受他接的单所限制。所以必须仔细安排才能把房子装修好。胡老师收到了若干种不同装修师傅的安排,他想尽快装修好了入住,你能帮他吗?

m0_73748530的博客 688

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 434

别再死记硬背了!我用这套方法,轻松搞定数据库三级模式与SQL基础(附PTA常见考点解析)

本文介绍了一种高效学习数据库三级模式与SQL基础的方法,通过将抽象概念与现实场景结合,提升理解与应用能力。文章详细解析了三级模式(外模式、模式、内模式)的核心概念,并提供了SQL语言分类(DDL、DML、DCL)的实用类比。此外,还包含PTA高频考点解析和实战案例,帮助读者从死记硬背转向系统化学习。

weixin_42627853的博客 338

2019年上交电院计算机直博保研经历

本人选报的是上交六月一日在武汉举办的直博选拔,五月三十一日到达酒店,地点在武汉大学旁边(PS:上交是不管住宿、来回车票的,~划重点~包括夏令营),入住后当然是紧张的准备英语面试等等内容了,当天我是排在了下午面试,感觉还很好,上午可以多睡一会,最好能够去踩踩点上午,然后下午面试一定要早去,说是一点开始,但是老师十二点半就开始让学生进去了,有一个同学排在第二个,但是当时叫到他时还不到一点,没到,最后据...

LifeMaker的博客 4892

01 高等数学 上下册知识点总结

极限与连续 8个等价无穷小 8个常用泰勒公式 高数复习——多元函数微分学 一、概念 一元函数: 可微<=>可导 △y=A△x+o(△x)dy=AdxA=f′(x)\triangle y=A\triangle x+o(\triangle x)\\dy=Adx\\A=f'(x)△y=A△x+o(△x)dy=AdxA=f′(x) 多元函数: 可微=>可导(可导指两个偏导数存在,反之不成立) 可微=>连续(反之不成立) △z=A△x+B△y+o(p)dz=Adx+BdyA=δzδxdx

qq_44292038的博客 1万+

7-1 房屋分拆-PTA

厂长买了一整间房屋作为车间,现准备将整个房屋分成若干个车间。装修公司规定分拆房屋的价格等于被分拆房屋的面积。如想将面积为200的房间分拆为面积为80、70和50的三个车间,第一次将房屋分拆为面积120和80的两个房间,花费200,第二次将面积为120的房间分拆为面积为70和50的两个房间,花费120,总花费为320。如果采用另一种方案,第一次将面积200的房屋分拆为150和50,花费200,第二次将面积为150的房间分拆为80和70的房间,花费150,则总花费为350。显然第一种方案花费更少。请编写程序为厂

shangyongsheng的博客 2114

二、声明式 Pipeline 语法

选择型参数,一般用于给定几个可选的值,然后选择其中一个进行赋值,例如:parameters { choice(name: ‘CHOICES’, choices: [‘one’, ‘two’, ‘three’], description: ‘’) },表示定义一个名为 CHOICES 的变量,可选的值为 one、two、three;默认情况下,如果定义了某个 stage 的 agent,在进入该 stage 的 agent 后,该 stage 的 when条件才会被评估,但是可以通过一些选项更改此选项。

Cyan_Jiang的博客 1220

桌介绍了浙江大学PTA程序设计C语言基础编程练习题1-5解题方法N

可以理解为小区中的每栋楼,其中包含房子、家具等 只存在与实例当中,操作表空间中的内容如表、视图、索引等也可操作实例。exp 用户名/密码@IP地址:端口/实例名 file=C:\backup\backupDemo.dmp tables=(table1,table2)TEMPFILE 'C:\app\Administrator\oradata\temp.DBF' -- 找到自己的存放位置。exp 用户名/密码@IP地址:端口/实例名 file=C:\backup\backupDemo.dmp full=y。

2301_76348009的博客 364

王炸联动!OpenClaw 对接微信 / 企业微信保姆级教程,AI 办公效率翻倍

《OpenClaw对接微信/企业微信全指南》摘要:本文提供开源AI智能体OpenClaw与微信生态的完整对接教程。核心内容包括企业微信配置四步法(获取凭证、修改配置、重启服务、验证对接)和个人微信通过企业微信插件的一键打通方案。对接后支持微信/企微发指令AI秒执行、群聊机器人、文件同步等高效办公场景,并附常见问题排查代码。教程强调配置简单(全程可复制代码)、适用广泛(个人/团队场景),实现沟通与AI协作的无缝衔接。文末包含端口放行等实用命令,助力用户快速实现移动端AI办公。(149字)

2501_93651177的博客 584

手把手教你学simulink(42.1)--储能系统场景示例:基于Simulink的电池+超级电容器混合储能系统

混合储能系统(HESS)结合了电池和超级电容器的优点,能够在满足高功率需求的同时提供较长的持续放电时间。这种组合特别适合用于电动汽车、可再生能源发电系统、电网频率调节等应用场景。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于电池和超级电容器的混合储能系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑,以分配电池和超级电容器的充放电任务。Matlab。

MHD0815的博客 542

MC9S08LH64系统控制与GPIO配置:嵌入式开发的底层基石

在嵌入式系统开发中,系统控制与GPIO配置是构建稳定可靠应用的底层核心。系统控制涉及复位机制、电源管理和时钟配置,它们共同决定了微控制器的启动行为、运行稳定性和功耗表现。GPIO作为微控制器与外部世界交互的物理接口,其配置不仅影响信号完整性,更直接关系到电磁兼容性和系统功耗。深入理解这些底层原理,对于实现高效、低功耗且鲁棒的嵌入式产品至关重要。本文以MC9S08LH64为例,聚焦于系统复位源诊断、低功耗模式管理以及GPIO驱动强度与压摆率控制等关键实践,通过剖析寄存器配置细节与常见陷阱,为开发者夯实底层硬件

342

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MC9S08MP16 GPIO与KBI模块配置:从寄存器详解到低功耗实战

通用输入输出(GPIO)和键盘中断(KBI)是嵌入式微控制器连接外部世界的基础接口,其配置直接影响系统稳定性与功耗。GPIO通过数据方向、上拉电阻、压摆率和驱动强度等寄存器实现引脚多功能复用与电气特性控制,而KBI模块则提供了可分组管理、边沿/电平触发的并行中断能力,特别适合矩阵键盘等人机交互场景。在低功耗设计中,合理配置GPIO状态(如避免浮空输入)并协同使用系统时钟门控(SCGC2)技术,能有效降低静态与动态功耗。本文以恩智浦MC9S08MP16为例,深入解析其GPIO和KBI模块的寄存器配置逻辑、中断

congyaguan5319的博客 339

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MC9S08JS16嵌入式开发实战:KBI中断与MCG时钟配置详解

在嵌入式系统开发中,中断处理和时钟管理是两大核心基础技术。中断机制允许处理器响应外部异步事件,实现实时控制;而时钟系统则为整个芯片提供精准的时序基准,是系统稳定运行的脉搏。深入理解其原理,对于实现高效、可靠的嵌入式应用至关重要。以飞思卡尔HCS08系列MCU为例,其键盘中断模块提供了灵活的外部中断源管理,支持边沿与电平检测,并能从低功耗模式唤醒系统;多用途时钟发生器则集成了FLL和PLL,能够从内部或外部时钟源生成高精度系统时钟,满足USB通信等对时序要求严格的应用场景。本文聚焦于MC9S08JS16的KB

weixin_33672109的博客 321

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深入解析MCF51AG128系统控制寄存器:从复位管理到低功耗设计实战

在嵌入式系统开发中,系统控制寄存器是微控制器的核心管理单元,负责全局性的底层资源配置与状态监控。其工作原理是通过配置特定的寄存器位域,实现对系统时钟、复位源、电源管理和外设功能的集中控制。掌握这些寄存器的配置,对于构建稳定、可靠且低功耗的嵌入式产品具有关键的技术价值,尤其在工业控制、物联网设备和消费电子等对系统鲁棒性和能效要求高的应用场景中至关重要。本文以恩智浦MCF51AG128微控制器为例,聚焦于**复位源管理(SRS)**和**低功耗与电源监控(SPMSC)**这两组核心寄存器,通过工程实践视角,详解

weixin_33672400的博客 493

jmp指令流程图怎么写_策划新人分享——如何写策划案

一、写作工具 策划案作为阅读文本的一种,自然需要一个可阅读可编写的载体。 第一个,Excel,针对文本的编写,这里推荐的是Excel,之所以推荐Excel而不是大家平常都会用到的Word,是因为无论是图片的排版功能还是Excel自带的横版界面,对于策划案的编写都显得尤为合适。 第二个,X-mind,一个完整的策划案要对某个功能或者系统进行详细说明,那么阐述具体的操...

weixin_39535752的博客 318

Java 设计模式之装饰模式的详解(结构模式)

装饰(Decorator)模式属于设计模式里的结构模式,通过装饰类动态的给一个对象添加一些额外的职责。装饰模式也叫包装(wrapper)模式。装饰模式有如下的角色: 抽象构件(component)角色:这个角色用来规范被装饰的对象,一般用接口方式给出。 具体构件(concrete component)角色:被装饰的类。 装饰(decorator)角色:持有一个构件对象的实例。并定义一个跟抽象

重心开始,重新开始 469

MCF51EM256系统控制与电源管理寄存器实战指南

在嵌入式系统开发中,系统控制与电源管理是确保微控制器稳定运行和实现低功耗设计的核心基础。其原理在于通过配置专用寄存器,实现对芯片复位源、时钟分配、功耗模式及电压监控等底层硬件的精细控制。这项技术的核心价值在于,它允许开发者从系统层面优化资源调度与能耗,是构建高可靠性、长续航电池供电设备的关键。典型应用场景包括工业传感器、便携式仪表及物联网终端等对功耗和稳定性有严苛要求的领域。本文以飞思卡尔MCF51EM256系列微控制器为例,深入解析其系统控制与电源管理寄存器的三层逻辑架构,并提供从**上电初始化到低功耗模

csxc65837的博客 375

MC9S08LL16 8位MCU低功耗设计实战:架构解析与能效优化指南

微控制器(MCU)作为嵌入式系统的核心,其选型与设计直接影响产品的成本、功耗与可靠性。8位MCU凭借其精简的指令集与高集成度,在成本敏感、功耗苛刻的应用场景中展现出独特的性价比优势。其工作原理基于对时钟、电源与外设的精细管理,通过多种低功耗模式实现能耗的阶梯式控制,技术价值在于以极低的资源消耗完成特定的、确定性的任务。在智能仪表、便携式设备、传感器节点等需要长续航和稳定运行的应用场景中,8位MCU往往是理想选择。本文以恩智浦MC9S08LL16系列为例,深入剖析其HCS08内核架构、分体式Flash设计以及

dhc65376的博客 431
上一篇: PTA黑暗料理
下一篇: PTA模拟+数学分析
翰墨织梦
博客等级 码龄4年 384粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值