题目地址

题目背景

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

题目描述

这次期末考试,kkksc03 需要考 44 科。因此要开始刷习题集,每科都有一个习题集,分别有 s_1,s_2,s_3,s_4s1​,s2​,s3​,s4​ 道题目,完成每道题目需要一些时间,可能不等

(A1,A2...,As1,B1​,B2​,…,Bs2​​,C1​,C2​,…,Cs3​​,D1​,D2​,…,Ds4​​)。

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

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

输入格式

本题包含 55 行数据:第 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。

思路:

因为这几天在学dfs算法,所以也直接用dfs来做了。依题意,一共有四个科目,设每一科的时间总和为sum,则通过左右脑同时来做改科题目的最短时间一定大于等于(sum+1)/2 (注:若sum为偶数则对半,奇数如 7 则最短时间大于等于 4),通过深搜,当当前科的时间大于等于 (sum+1)/2 则与最小值进行比较,若更小则更换最小值,返回,直至求出四科的最小值。

#include<bits/stdc++.h>
using namespace std;
int a[4],b[2]={0},ans=0,mina=9999;
int ptr[4][21],sum[4],book[21];//book数组标志该点有无被访问,全局变量自动初始化为 0
void dfs(register int cur,register int sumx,register int i){//cur记录当前所用时//间的和,sumx为当前学科的时间总和,//i表示当前学科的序号 if(cur>=(sumx+1)/2){   // 此时左右脑一定能够完成该科的所有题目 if(cur < mina ) mina=cur;  return ;}for(register int j=0;j<a[i];j++){if(book[j]==0){book[j]=1;   //已访问 dfs(cur+ptr[i][j],sumx,i);book[j]=0;    //回溯 }if(mina == (sumx+1)/2) return; //*此时mina一定最小直接返回,否则会 TL * }return ;
}
int main(){for(register int i=0;i<4;i++){cin>>a[i];         //初始化每科的题目数目 }for(register int i=0;i<4;i++){for(register int j=0;j<a[i];j++){cin>>ptr[i][j];     //初始化每科的题目时间sum[i]+=ptr[i][j]; //sum[i]为第 i 科的题目时间总和 }}for(register int i=0;i<4;i++){dfs(0,sum[i],i);    //深搜 ans += mina;     //加上每科的最短时间 mina = 9999;        }cout<<ans;return 0;
}

小白发文,如果有错误,希望大家指正。

P2392 kkksc03考前临时抱佛脚相关推荐

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

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

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

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

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

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

  4. P2392 kkksc03考前临时抱佛脚(洛谷)JAVA

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

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

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

  6. kkksc03考前临时抱佛脚

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

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

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

  8. 洛古P2392-kkksc03考前临时抱佛脚

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

  9. 洛谷P2392 考前临时抱佛脚

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

最新文章

  1. hdu 1046 完数
  2. CodeForces 609B The Best Gift
  3. BRCM5.02编译七:No package 'uuid' found
  4. Boost:aligned alloc对齐分配的测试程序
  5. 华为人工智能计算机平台,华为发布首个人工智能移动计算平台
  6. 小白学JAVA,与你们感同身受,JAVA---day6:抽象类接口的理解。鲁迅的一句话:总之岁月漫长,然而值得等待。
  7. Python 开源电子书资源
  8. linux能记录日志的终端,如何记录Linux终端下的操作日志
  9. tp3.2 生成二维码
  10. 高等代数期末考试题库及答案_复旦大学2019--2020学年第一学期19级高等代数I期末考试第六大题...
  11. 小米笔记本显示器关闭后无法唤醒曲线解决办法
  12. Python中main函数
  13. Python缩进问题:IndentationError:expectedan indented block
  14. 想凭勤奋逆风翻盘?如今靠运气才有更大赢面
  15. Form--Form表单
  16. 二维数组的认识及其表示元素的两种方式
  17. 【vue】vue实现用户长时间不操作,提示用户登录已过期重新登录
  18. [Codeforces 940E]Cashback(dp+set)
  19. Delphi--Delphi资源
  20. python scrapy 爬博客信息

热门文章

  1. 《计算机组成原理(微课版)》第2章课后习题答案
  2. SQL查询日期和时间
  3. 尚学堂Java学习日记Day1
  4. Python程序来计算锥体的体积和面积
  5. wordpress 插件的开发 入门
  6. 华兴资本确定IPO发行价 募集资金将达3.96亿美元
  7. mybatis-plus代码生成器生成
  8. html5 视差地图,高性能的视差动画
  9. 如何评论stem教育的特点
  10. 免费开源好看的bootstrap后台模板