题目背景

kkksc03 的大学生活非常的颓废,平时根本不学习。但是,临近期末考试,他必须要开始抱佛脚,以求不挂科。

题目描述

这次期末考试,kkksc03 需要考 4 科。因此要开始刷习题集,每科都有一个习题集,分别有 s1​,s2​,s3​,s4​ 道题目,完成每道题目需要一些时间,可能不等A1​,A2​,…,As1,B1​,B2​,…,Bs2​​,C1​,C2​,…,Cs3​​,D1​,D2​,…,Ds4​​)。

kkksc03 有一个能力,他的左右两个大脑可以同时计算 2 道不同的题目,但是仅限于同一科。因此,kkksc03 必须一科一科的复习。

由于 kkksc03 还急着去处理洛谷的 bug,因此他希望尽快把事情做完,所以他希望知道能够完成复习的最短时间。

输入格式

本题包含 5 行数据:第 1 行,为四个正整数 s1​,s2​,s3​,s4​。

第 2行,为 A1​,A2​,…,As1​​ 共 s1​ 个数,表示第一科习题集每道题目所消耗的时间。

第 3 行,为 B1​,B2​,…,Bs2​​ 共 s2​ 个数。

第 4 行,为 C1​,C2​,…,Cs3​​ 共 s3​ 个数。

第 5 行,为 D1​,D2​,…,Ds4​​ 共 s4​ 个数,意思均同上。

输出格式

输出一行,为复习完毕最短时间。

输入输出样例

输入 #1

1 2 1 3
5
4 3
6
2 4 3

输出 #1

20

说明/提示

1≤s1​,s2​,s3​,s4​≤20。

1≤A1​,A2​,…,As1​​,B1​,B2​,…,Bs2​​,C1​,C2​,…,Cs3​​,D1​,D2​,…,Ds4​​≤60。

解题思路:利用深度优先遍历的思维(穷举)出所有可能:将科目分别放入左右脑,记录左右脑最大数值,处理得到解决每科目的最优值,最后相加这些最优值,得到最少时间。

理论成立代码如下:

import java.util.*;
public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);int a[] = new int [4];//储存每个科目的题数for(int i = 0;i < 4;i++ )a[i] = sc.nextInt();int b[];//储存每个题所耗费的时间int j=0;solution s = new solution();for(int i=0; i< 4;i++){b = new int[a[i] + 1];//分配相应空间b[0]不存数for(j = 1;j <= a[i];j++ )//这里是一个细节,j由1开始,耗费时间由b[1]开始存,方便实现dfs函数b[j] = sc.nextInt();s.dfs(b, 0, 0);//穷举(深度遍历)找到完成本科的最少时间s.sumtime = s.sumtime + s.lesstime;s.lesstime = 10000;}System.out.print(s.sumtime);}
}
class solution
{int sumtime;//总时间int lesstime;//复习每个科目的最优时间int a[];//左右脑solution(){sumtime = 0;lesstime = 10000;//足够大a = new int[2];//左右}public void dfs(int b[], int i, int k)//分别代表每个题的时间,交给哪个脑处理,第几题{a[i] = a[i] + b[k];//最开始在左脑存b[0]=0,没有影响if(k == b.length - 1){lesstime = Math.min(lesstime, Math.max(a[0], a[1]));//左右脑的最大值是有效时间,这些有效时间的最小值是最优时间return;}for(int j = 0;j < 2;j++){dfs(b, j, k+1);a[j] = a[j] - b[k + 1];//回溯}}
}

(本题还可以用动态规划的01背包来接,我现在还不会动态规划,正在努力突破,下次再战这道题)

P2392 kkksc03考前临时抱佛脚(洛谷)JAVA相关推荐

  1. 【洛谷】P2392 kkksc03考前临时抱佛脚

    题目地址: https://www.luogu.com.cn/problem/P2392 题目背景: kkksc03的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不 ...

  2. 洛谷——p2392 kkksc03考前临时抱佛脚

    今天练习了一些搜索,动态规划的题,只敢选普及-的来做,这个题看上去感觉用贪心来做,而且看上去不知道怎么用背包解题,他的最大"容量"是不确定的. 题目是这样的: [题目背景] kkk ...

  3. P2392 kkksc03考前临时抱佛脚

    题目地址 题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 44 科.因此要开始刷习 ...

  4. P2392 kkksc03考前临时抱佛脚 (DFS)

    题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 444 科.因此要开始刷习题集,每 ...

  5. 洛谷P2392 kkksc03考前临时抱佛脚

    大意是给定4个整数集合,要求把每个整数集合分为两个部分,找到每个部分的最大值的最小,最后累加每个组的最小值. 深搜枚举每种情况 #include<iostream> #include< ...

  6. kkksc03考前临时抱佛脚

    kkksc03考前临时抱佛脚 题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 4科 ...

  7. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

  8. 洛谷Java入门级代码

    Java入门级代码(洛谷题) 大小写字母之间的转换 //java中的大小写转换 //==小写转大写:toUpperCase(); //大写转小写:toLowerCase();import java.u ...

  9. kkksc03考前临时抱佛脚(DFS)

    题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 44 科.因此要开始刷习题集,每科 ...

最新文章

  1. awk 添加自定义变量
  2. yolov5组件笔记
  3. 子查询二(在HAVING子句中使用子查询)
  4. 将内存单元中小写字符改成大写字符
  5. java logger 静态,java11教程--公共静态接口System.Logger
  6. SAP Leonardo机器学习Restful API如何获得Access Token
  7. 35岁遭遇互联网公司无情裁员,面试屡屡碰壁,原因竟是……
  8. linux服务器搭建教程c,Linux服务器上搭建web项目环境
  9. Xshell远程连接Linux无法成功连接
  10. 数学建模LaTeX入门
  11. easydarwin php,EasyDarwin返回401 Unauthorized解决方法
  12. Yate软交换机IPPBX与电话语音网关的初步配合
  13. 【Windows】windows生成rsa密钥对
  14. nas主流服务器,NAS以及服务器
  15. 思科Nexus 9000系列交换机光模块解决方案
  16. MOS管当开关控制时,为什么一般用PMOS做上管NMOS做下管?
  17. Microsoft Excel 加载数据分析工具
  18. snmpwalk的报文检测
  19. LeetCode(跳跃游戏)
  20. VLC -- 使用VLC串流播放视频

热门文章

  1. 零知识证明Zero-Knowledge Proofs
  2. matlab 保存原始图像,matlab原始图像都有哪些
  3. 苍茫间总师德师风是丢下一片模糊
  4. android 手机变键盘,手机在一秒钟内变成鼠标,而Android手机控制着计算机
  5. M1 Mac无法安装达芬奇17,装载m1芯片的mac如何安装达芬奇17!
  6. excel下拉框超过255后office打开报部分内容有问题
  7. MOS管参数解读(热阻、输入输出电容及开关时间)
  8. 第1周 Python基本语法元素
  9. 014智能仓储物流系统真的“智能”吗?
  10. JumpServer 审计录像设置