P2392 kkksc03考前临时抱佛脚
题目地址
题目背景
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考前临时抱佛脚相关推荐
- 【洛谷】P2392 kkksc03考前临时抱佛脚
题目地址: https://www.luogu.com.cn/problem/P2392 题目背景: kkksc03的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不 ...
- P2392 kkksc03考前临时抱佛脚 (DFS)
题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 444 科.因此要开始刷习题集,每 ...
- 洛谷——p2392 kkksc03考前临时抱佛脚
今天练习了一些搜索,动态规划的题,只敢选普及-的来做,这个题看上去感觉用贪心来做,而且看上去不知道怎么用背包解题,他的最大"容量"是不确定的. 题目是这样的: [题目背景] kkk ...
- P2392 kkksc03考前临时抱佛脚(洛谷)JAVA
题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 4 科.因此要开始刷习题集,每科都 ...
- 洛谷P2392 kkksc03考前临时抱佛脚
大意是给定4个整数集合,要求把每个整数集合分为两个部分,找到每个部分的最大值的最小,最后累加每个组的最小值. 深搜枚举每种情况 #include<iostream> #include< ...
- kkksc03考前临时抱佛脚
kkksc03考前临时抱佛脚 题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 4科 ...
- kkksc03考前临时抱佛脚(DFS)
题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 44 科.因此要开始刷习题集,每科 ...
- 洛古P2392-kkksc03考前临时抱佛脚
背包问题 1.kkksc03考前临时抱佛脚 题目 题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkks ...
- 洛谷P2392 考前临时抱佛脚
题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03 需要考 44 科.因此要开始刷习题集,每科 ...
最新文章
- hdu 1046 完数
- CodeForces 609B The Best Gift
- BRCM5.02编译七:No package 'uuid' found
- Boost:aligned alloc对齐分配的测试程序
- 华为人工智能计算机平台,华为发布首个人工智能移动计算平台
- 小白学JAVA,与你们感同身受,JAVA---day6:抽象类接口的理解。鲁迅的一句话:总之岁月漫长,然而值得等待。
- Python 开源电子书资源
- linux能记录日志的终端,如何记录Linux终端下的操作日志
- tp3.2 生成二维码
- 高等代数期末考试题库及答案_复旦大学2019--2020学年第一学期19级高等代数I期末考试第六大题...
- 小米笔记本显示器关闭后无法唤醒曲线解决办法
- Python中main函数
- Python缩进问题:IndentationError:expectedan indented block
- 想凭勤奋逆风翻盘?如今靠运气才有更大赢面
- Form--Form表单
- 二维数组的认识及其表示元素的两种方式
- 【vue】vue实现用户长时间不操作,提示用户登录已过期重新登录
- [Codeforces 940E]Cashback(dp+set)
- Delphi--Delphi资源
- python scrapy 爬博客信息