当前位置: 首页 > news >正文

【CSP】202212-2 训练计划

题目

问题背景
西西艾弗岛荒野求生大赛还有
天开幕!

问题描述
为了在大赛中取得好成绩,顿顿准备在
天时间内完成“短跑”、“高中物理”以及“核裂变技术”等总共
项科目的加强训练。其中第
项(
)科目编号为
,也可简称为科目
。已知科目
耗时
天,即如果从第
天开始训练科目
,那么第
天就是该项训练的最后一天。

大部分科目的训练可以同时进行,即顿顿在同一天内可以同时进行多项科目的训练,但部分科目之间也存在着依赖关系。如果科目
依赖科目
,那么只能在后者训练结束后,科目
才能开始训练。具体来说,如果科目
从第
天训练到第
天,那么科目
最早只能从第
天开始训练。还好,顿顿需要训练的
项科目依赖关系并不复杂,每项科目最多只依赖一项别的科目,且满足依赖科目的编号小于自己。那些没有任何依赖的科目,则可以从第
天就开始训练。

对于每一项科目,试计算:

1)最早开始时间:该科目最早可以于哪一天开始训练?

2)最晚开始时间:在不耽误参赛的前提下(
天内完成所有训练),该科目最晚可以从哪一天开始训练?

天内完成所有训练,即每一项科目训练的最后一天都要满足
。需要注意,顿顿如果不能在
天内完成全部
项科目的训练,就无法参加大赛。这种情况下也就不需要再计算“最晚开始时间”了。

输入格式
从标准输入读入数据。

输入共三行。

输入的第一行包含空格分隔的两个正整数

,分别表示距离大赛开幕的天数和训练科目的数量。

输入的第二行包含空格分隔的
个整数,其中第
个(
)整数
表示科目
依赖的科目编号,满足

表示科目
无依赖。

输入的第三行包含空格分隔的
个正整数,其中第
个(
)数
表示训练科目
所需天数,满足

输出格式
输出到标准输出中。

输出共一行或两行。

输出的第一行包含空格分隔的
个正整数,依次表示每项科目的最早开始时间。

如果顿顿可以在
天内完成全部
项科目的训练,则继续输出第二行,否则输出到此为止。

输出的第二行包含空格分隔的
个正整数,依次表示每项科目的最晚开始时间。

代码

AC

#include<bits/stdc++.h>
using namespace std;struct
{int form=0;//先导课int day=0;//消耗int start=1;//最早int last_start=0;//最晚 
}course[105]; int main()
{int max=-1;int n,m;cin>>n>>m;for(int i=0;i<m;i++){cin>>course[i].form;}for(int i=0;i<m;i++){cin>>course[i].day;}for(int i=0;i<m;i++){if(course[i].form != 0){course[i].start = course[course[i].form-1].start+course[course[i].form-1].day;//该门课的最早开始时间为先导课最早结束时间}cout<<course[i].start<<" ";//输出最早开始时间 if((course[i].day+course[i].start)>max)//判断是否能上完课 max=course[i].day+course[i].start-1;		}if(max<=n)//能上就输出 {cout<<endl;for(int i=m-1;i>=0;i--){if(course[i].last_start==0)course[i].last_start=n-course[i].day+1;if(course[i].form != 0){int temp = course[i].last_start-course[course[i].form-1].day ;if(course[course[i].form-1].last_start == 0){course[course[i].form-1].last_start = temp ;}else{course[course[i].form-1].last_start = min(temp,course[course[i].form-1].last_start);}}}for(int i=0;i<m;i++){cout<<course[i].last_start<<" ";}}return 0;
}/*
14 7
0 1 0 3 2 3 0
2 1 6 3 10 4 3
*//*
51 5
0 1 2 3 4
10 10 10 10 10*/
http://www.lryc.cn/news/12592.html

相关文章:

  • java基础学习 day42(继承中构造方法的访问特点,this、super的使用总结)
  • 生物医药多组学与生物信息方法介绍
  • 3|物联网控制|计算机控制-刘川来胡乃平版|第2章:计算机控制系统中的检测设备和执行机构-2.2过程控制中常用的执行器|课堂笔记|ppt
  • 【进阶篇】线程的硬件基础
  • 关于 ISP Tuning的学习,分享几点看法
  • RocketMQ源码阅读
  • 重磅 | 小O软件新品【鲸鱼地图】发布
  • 软考高级信息系统项目管理师系列之二十五:项目合同管理
  • 测试开发之Django实战示例 第十三章 上线
  • python实战应用讲解-【语法基础篇】Python中的数值类型(附示例代码)
  • Git常用命令以及如何在IDEA中使用Git
  • 音乐播放器-- 以及数据库数据存储
  • [JAVA安全]Spring Messaging之CVE-2018-1270
  • CAN通信笔记-位时间、Tq及采样点同步
  • 玩转 Kubernetes 配置管理:ConfigMap 和 Secret 实战演示
  • Kubernetes
  • 从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现
  • 使用vector<char>作为输入缓冲区
  • 自己在网站搭建用到的一些网站
  • XLSReadWriteII5 Color 颜色l的调用和使用
  • RT-Thread SP使用教程
  • LeetCode 2363. 合并相似的物品
  • numpy 中常用的数据保存、fmt多个参数
  • 从0到1一步一步玩转openEuler--19 openEuler 管理服务-特性说明
  • 23美赛E题:光污染(ICM)完整思路Python代码
  • 快速排序的描述以及两种实现方案
  • 算力引领 数“聚”韶关——第二届中国韶关大数据创新创业大赛圆满收官
  • MySQL 记录锁+间隙锁可以防止删除操作而导致的幻读吗?
  • 【分库分表】企业级分库分表实战方案与详解(MySQL专栏启动)
  • (考研湖科大教书匠计算机网络)第五章传输层-第五节:TCP拥塞控制