当前位置: 首页 > news >正文

P2392 kkksc03考前临时抱佛脚

P2392 kkksc03考前临时抱佛脚 - 洛谷

借鉴题解 P2392 kkksc03考前临时抱佛脚 - 洛谷

自用笔记

这是一道将每一刻题目尽量两两并作、以最短时间完成所有题目的。每一刻题目都做一次“将题目划分成左右两组,使两组耗时差最小”的0.1背包问题

💡 题目本质

题目说:每一科题目只能在这科内部用双核(左右脑)并行做两题,但不同科不能同时做。

我们要最小化总时间

✅ 关键点:

对于每一科的题目集合 T,我们要:

  • 把题目划分成两个子集 LR,分别给左右脑

  • 两个脑子可以同时进行

  • 所以这一科的总耗时是 max( sum(L), sum(R) ),即两个子集的总和中较大的一个

于是我们想让两组总时间差尽可能小,就能最小化这科复习时间。


✅ 所以这是个子集划分问题 —— 0/1 背包

你用了背包算法,目的是:

  • 在这科题目总时间为 S 的基础上

  • 选出一个子集,总时间不超过 S / 2,使得该子集时间最大

设这个最大值为 t,那另一个子集就是 S - t

  • 所以该科复习时间为:max(t, S - t)

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
#define ll long long
int f[21][1301];
int a[4],b[100];
int main()
{ios::sync_with_stdio(false);for(int i=1;i<=4;i++) cin>>a[i];int res=0;for(int i=1;i<=4;i++){int s=0;for(int j=1;j<=a[i];j++)cin>>b[j],s+=b[j];int t=0;for(int j=1;j<=a[i];j++)for(int k=0;k<=s/2;k++){f[j][k]=f[j-1][k];if(k>=b[j])f[j][k]=max(f[j][k],f[j-1][k-b[j]]+b[j]);t=max(f[j][k],t);}res+=max(t,s-t);}cout<<res;return 0;
}
http://www.lryc.cn/news/600907.html

相关文章:

  • Linux——线程互斥
  • 【RHCSA 问答题】第 13 章 访问 Linux 文件系统
  • PYTHON从入门到实践-16数据视图化展示
  • 卫星通信终端天线对星之:参考星对星
  • DOM元素添加技巧全解析
  • 单片机CPU内部的定时器——滴答定时器
  • Linux DNS 服务器正反向解析
  • Mybatis学习之配置文件(三)
  • Linux随记(二十一)
  • 变频器实习DAY15
  • Linux内核设计与实现 - 第13章 虚拟文件系统(VFS)
  • Linux shuf命令随机打乱行顺序
  • 差模干扰 共模干扰
  • 利用RAII与析构函数避免C++资源泄漏
  • kafka的部署和jmeter连接kafka
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • C++/CLI vs 标准 C++ vs C# 语法对照手册
  • Java 大视界 -- Java 大数据在智能医疗影像数据标注与疾病辅助诊断模型训练中的应用(366)
  • greenhills编译出错问题
  • 20250726-1-Kubernetes 网络-Service存在的意义_笔记
  • 【Spring AI】大模型服务平台-阿里云百炼
  • 高可用集群KEEPALIVED的详细部署
  • 【MySQL】MySQL 缓存方案
  • 使用Clion开发STM32(Dap调试)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • Flutter控件归纳总结
  • 面试150 IPO
  • 达梦[-2894]:间隔表达式与分区列类型不匹配
  • 大语言模型困惑度:衡量AI语言能力的核心指标
  • Windows Server容器化应用的资源限制设置