首页 > 编程语言 >【CSP:202212-2】训练计划(Java)

【CSP:202212-2】训练计划(Java)

时间:2024-08-25 16:26:43浏览次数:12  
标签:202212 rely 依赖 Java 项目 int lateDays allDays CSP

题目链接

题目描述

问题
格式
样例2
3

求解思路

  • 模拟:

    1. over表示能否按时完成所有训练项目
    2. rely[i]表示第i个项目的依赖项目编号(每个项目最多有一个依赖项目)
    3. days[i]用来记录第i个项目完成需要的天数
    4. allDays[i]表示加上该项目的所有前置依赖项(包含其依赖项目的依赖项目),完成该项目总共需要的天数
    5. lateDays[i]表示要想完成第i个项目以及将第i个项目作为依赖的所有项目所需要花费的最大时间。
  • 需要注意:

    1. 根据题目要求,每个项目最多依赖一个项目,但是每个项目可能会被多个项目依赖,因此我们在判断最晚开始时间时需要选择用时最长的依赖项目。
    2. lateDays[i]表示要想完成第i个项目以及将第i个项目作为依赖的所有项目所需要花费的最大时间。要计算最晚开始时间,计算 n − l a t e D a y s [ i ] + 1 n-lateDays[i]+1 n−lateDays[i]+1 即可。

实现代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n, m;
        boolean over = true;
        n = in.nextInt();
        m = in.nextInt();
        int[] rely = new int[m + 1];
        int[] days = new int[m + 1];
        int[] allDays = new int[m + 1];
        int[] lateDays = new int[m + 1];
        for (int i = 1; i <= m; i ++) {
            rely[i] = in.nextInt();
        }
        for (int i = 1; i <= m; i ++) {
            days[i] = in.nextInt();
            allDays[i] = days[i];
            // 如果第i个项目没有依赖项目
            if (rely[i] == 0) {
                System.out.print(1 + " ");
            } else {
                System.out.print((allDays[rely[i]] + 1) + " ");
                // 如果当前项目加上其前面的依赖项目和已经不能按时完成
                if (allDays[rely[i]] + allDays[i] > n) {
                    over = false;
                }
                // 更新将第i个项目完成所需时间
                allDays[i] += allDays[rely[i]];
            }
        }
        if (over) {
            System.out.println();
            // 因为每个项目的依赖项目都在其前面,所以倒序遍历
            for (int i = m; i >= 1; i --) {
                lateDays[i] += days[i];
                // 如果第i个项目依赖了某一个项目
                if (rely[i] != 0) {
                	// 更新被依赖项目所花费的时间。
                	// 这里需要注意,被依赖项目也可能会被其他项目依赖,所以选时间最长的那个
                    lateDays[rely[i]] = Math.max(lateDays[i], lateDays[rely[i]]);
                }
            }
            for (int i = 1; i <= m; i ++) {
                System.out.print((n - lateDays[i] + 1) + " ");
            }
        }
    }
}

标签:202212,rely,依赖,Java,项目,int,lateDays,allDays,CSP
From: https://blog.csdn.net/dawn191228/article/details/141526958

相关文章

  • dp(2019csp-j纪念品)
    #include<bits/stdc++.h>usingnamespacestd;intn,T,a[101][101],v[101],f[10010];voidsolve(intd1,intd2){memset(f,0,sizeof(int)*(v[d1]+1));for(inti=1;i<=n;i++){intc=a[d1][i],w=a[d2][i];......
  • Java线程
    一、线程的介绍1.1.程序为完成特定任务,用某种语言编写的一组指令的集合。(代码)1.2.进程进程就是指运行中的程序,启动一个进程,操作系统就会为该进程分配内存空间。进程是程序的一次执行过程,或是正在运行的一个程序,是动态过程:有它自己的产生、存在和消亡的过程1.3.线程线程......
  • [Javascript] How to do big integers sum
    /***Bigintegersum*Usingstringstorepresentbigintegers*@param{string}a*@param{string}b*@returns{string}*/functionbigIntSum(a,b){constmaxLength=Math.max(a.length,b.length);constaStr=a.padStart(maxLength,"0&......
  • [Javascript] Refactor blocking style code to stream style for fetching the strea
    WhenyouuseChatGPT,theresponsecomesinstream,sothatitcanappearsonscreenwheneverdatacomebackfromserver,wedon'tneedtowaitalldatacompletedthenshowingthedatatousers. Hereiscodewhichneedtobeimproved,becausethis......
  • ZBlog搭建的网站有的时候会提示【JavaScript加载失败】
    经常会有朋友反映,自己通过ZBlog搭建的网站偶尔会出现【JavaScript加载失败】这样的提示。那么,当遭遇此种状况时究竟应当如何应对呢?首先,您需要仔细检查自己所使用的浏览器版本是否太过陈旧(例如像IE6/7/8之类的旧版本),或者是否因为所使用的插件出现错误从而损坏了系统的JS文......
  • ## 已解决:`java.lang.ClassCastException: class java.lang.Integer cannot be cast t
    在Java开发中,类型转换错误是常见的异常之一。java.lang.ClassCastException:classjava.lang.Integercannotbecasttoclassjava.lang.Long表示在尝试将一个Integer类型的对象强制转换为Long类型时出现了错误。这种错误可能会导致程序运行时崩溃,因此需要正确地......
  • Java毕业设计作品(113):基于thymeleaf前后端分离 棋牌室会员预约管理系统设计与实现
      博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书......
  • DsExcel / GcExcel 7.2.0 for Java
    Excel文档解决方案(DsExcel) .NET和Java版本在v7.2版本中继续提供令人兴奋的新功能和增强功能。此更新引入了对许多高级MicrosoftExcel功能的支持,为用户提供了更强大、更灵活的工具。DsExcel模板的重大改进增强了模板创建的功能集和性能。此外,此版本还提供了与Spread......
  • CSP-J 2023 初赛试题解析(第三部分:完善程序(1-2))
    第一题补全后完整代码:#include<iostream>#include<vector>usingnamespacestd;intfind_missing(vector<int>&nums){intleft=0,right=nums.size()-1;while(left<right){intmid=left+(right-left)/2;if(nums[mi......
  • 字符串值提取工具-10-java 执行表达式引擎
    值提取系列字符串值提取工具-01-概览字符串值提取工具-02-java调用js字符串值提取工具-03-java调用groovy字符串值提取工具-04-java调用java?Janino编译工具字符串值提取工具-05-java调用shell字符串值提取工具-06-java调用python字符串值提取工具-07-ja......