洛谷 P2392 kkksc03考前临时抱佛脚 刷题笔记 dfs

news/2025/1/18 5:12:16/

P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态

题目分析  

左右脑双核

当我们给左右脑各自分配一道题时 

消耗的时间为两者中耗时较长的一道题

我们尝试把每一道题都分配给左右脑试一试 即可遍历所有答案

关键在于答案怎么取保证耗时最短

if(step>a[x]){//当我们得到一个分配好的方案时


        minv=min(minv,max(l,r));//Min函数内比较的是当前最短耗时 和max函数的结果

     //max函数的结果是当前的实际耗时 即左右脑中耗时较长的一个
        return ;
    }

那么为什么当分配完直接比较左右脑总时长大小即可呢

考虑例子 

1 2 3 9

显然最短时间为

左脑 1 2 3

右脑 9

实际效果和

例子

6 9

是一样的

所以我们可以把一道题直接加给左脑或者右脑 

等所有的题目分配完毕直接比较两个脑子的总时间 取时间较长的作为答案 

完整代码 

#include<bits/stdc++.h>
using namespace std;
int a[5];//记录每科的题目数量
int b[5][21];//记录每道题目的时间
 
const int INF = 0x3f3f3f3f;//1061109567,是10^9级别
 
int l,r,minv,ans;

void dfs(int x,int step){
    if(step>a[x]){
        minv=min(minv,max(l,r));//取所有时间里的最小值
         
        return ;
    }
    l += b[x][step];//将题目分配给左脑  
    dfs(x,step+1);//分配下一道 题目 
    l -= b[x][step];//回溯  
    
    r += b[x][step];
    dfs(x,step+1);
    r -= b[x][step];
    
    
}
int main(){
    for(int i = 1 ;i <= 4;i++){
        cin>>a[i];
    }
    
    for(int i = 1;i <= 4;i++){
        for(int j = 1;j <= a[i];j++){
            cin>>b[i][j];
        }
        l = 0;
        r = 0;
        minv = INF;
        dfs(i,1);
        ans+=minv;
    }
    
    cout<<ans;
    
    
    
    return 0;
}


http://www.ppmy.cn/news/1564057.html

相关文章

“深入浅出”系列之设计模式篇:(0)什么是设计模式

设计模式六大原则 1. 单一职责原则&#xff1a;一个类或者一个方法只负责一项职责&#xff0c;尽量做到类的只有一个行为原因引起变化。 核心思想&#xff1a;控制类的粒度大小&#xff0c;将对象解耦&#xff0c;提高其内聚性。 2. 开闭原则&#xff1a;对扩展开放&#xf…

力扣解题汇总_JAVA

文章目录 数学_简单13_罗马数字转整数66_ 加一9_回文数70_爬楼梯69_x的平方根509_斐波那契数列2235_两整数相加67_二进制求和415_字符串相加2413_最小偶倍数2469_温度转换704_二分查找(重点) 数组_简单1_两数之和88_合并两个有序数组 链表_简单21_合并两个有序链表203_移除链表…

Flink的优化技巧

前言 在大数据处理领域&#xff0c;Apache Flink以其高吞吐量、低延迟和强大的状态管理能力&#xff0c;成为了实时流处理的首选框架。然而&#xff0c;随着数据量的不断增长和业务复杂性的提高&#xff0c;如何在Flink开发中实施有效的优化方案&#xff0c;成为了一个亟待解决…

23- TIME-LLM: TIME SERIES FORECASTING BY REPRO- GRAMMING LARGE LANGUAGE MODELS

解决问题 用LLM来解决时序预测问题&#xff0c;并且能够将时序数据映射&#xff08;reprogramming&#xff09;为NLP token&#xff0c;并且保持backbone的大模型是不变的。解决了时序序列数据用于大模型训练数据稀疏性的问题。 方法 Input Embedding 输入&#xff1a; X …

wow-agent 学习笔记

wow-agent-课程详情 | Datawhale 前两课比较基础&#xff0c;无笔记 第三课 阅卷智能体这一块&#xff0c;曾经做过一点和AI助教相关的内容&#xff0c;也是用了一个prompt去进行CoT&#xff0c;但是风格和课程中的不太相同&#xff0c;在下面附上我的prompt 你是一名资深教…

2025年01月15日Github流行趋势

1. 项目名称&#xff1a;tabby - 项目地址url&#xff1a;https://github.com/TabbyML/tabby - 项目语言&#xff1a;Rust - 历史star数&#xff1a;25764 - 今日star数&#xff1a;1032 - 项目维护者&#xff1a;wsxiaoys, apps/autofix-ci, icycodes, liangfung, boxbeam - 项…

Math Reference Notes: 矩阵性质

矩阵的性质是线性代数中的核心内容&#xff0c;理解这些性质有助于深入掌握矩阵的应用与运算。 掌握矩阵的加法与乘法性质、单位矩阵与零矩阵的作用、转置、逆矩阵、行列式、秩等基本性质&#xff0c;不仅能简化计算过程&#xff0c;还能为更复杂的数学问题提供解决思路&#x…

详解Spring数据缓存注解@Cacheable、@CachePut、@CacheEvict

随着用户群体的扩展&#xff0c;系统所需要处理的数据请求将呈几何式增长&#xff0c;数据库很容易会因为无法处理庞大的请求而产生宕机现象&#xff0c;这对一个软件来说是十分可怕的&#xff0c;而缓存就是解决这一问题的一个方案。缓存的使用将大大提高数据库的承载能力&…