[JOYOI1468] 清理垃圾 - DP

题目限制

时间限制 内存限制 评测方式 题目来源
1000ms 131072KiB 标准比较器 Local

题目背景

聚会结束,留下许多垃圾。
Candy:“好多垃圾啊,飘飘乎居士,我们一起处理垃圾吧!”

题目描述

Candy家里总共有n个垃圾等待处理,每个垃圾对于Candy和飘飘乎居士处理的时间都是不同的,而且每个垃圾只需要一个人处理。当然,Candy和飘飘乎居士可以同时处理不同的垃圾。记两人中耗费最长时间为最后总时间。Candy希望能够尽快的处理完所有的垃圾,因此,他想要知道处理完这些垃圾最少需要耗费多少时间?

输入格式

第一行一个正整数n,表示一共有n个垃圾需要处理
接下来一个2*n的矩阵。
矩阵第一行第i个数表示candy处理第i个垃圾所需消耗的时间
矩阵第二行第i个数表示飘飘乎居士处理第i个垃圾所需消耗的时间

输出格式

一行,最后耗费的时间

提示

Candy完成垃圾3与垃圾4的清理,耗时为5
飘飘乎居士完成垃圾1 2 5的清理,耗时为4,由于Candy耗费的时间较长,所以记Candy耗费时间为最后总时间,所以最后答案为5。
对于30%的数据 0<n<=30
对于100%的数据 0<n<=1000,Candy和飘飘乎居士处理每个垃圾的时间<=10,对任何一个人处理所有垃圾时间总和<=4000

样例数据

输入样例 #1 输出样例 #1
5

2 4 1 4 5

2 1 3 4 1
5


提交地址 : JOYOI



题解 :

水水的DP...

我们设f[i][j], 表示第i件事, 小人A用了j分钟, 小人B用的时间:

所以f[i][j] = min(f[i-1][j-a[i]], f[i-1][j] + b[i]) ;

然而...算了算...150mb...爆空间...

发现f[i][j]只和f[i-1][j]有关,所以滚动数组优化直接A掉



Code

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6
 7 int n;
 8 int a[10001], b[10001];
 9 int f[2][4001];
10
11 int ans = 1e9;
12
13 int main()
14 {
15     cin >> n;
16     for (register int i = 1 ; i <= n ; i ++) scanf("%d", &a[i]);
17     for (register int i = 1 ; i <= n ; i ++) scanf("%d", &b[i]);
18
19     memset(f, 0x3f, sizeof f);
20     f[0][0] = 0;
21
22     for (register int i = 1 ; i <= n ; i ++)
23     {
24         memset(f[i%2],0x3f,sizeof f[i%2]);
25         for (register int j = 0 ; j <= 4000 ; j ++)
26         {
27             if (j >= a[i]) f[i%2][j] = min(f[i%2][j], f[(i-1)%2][j-a[i]]);
28             f[i%2][j] = min(f[i%2][j], f[(i-1)%2][j] + b[i]);
29         }
30     }
31
32     for (register int i = 0 ; i <= 4000 ; i ++)
33     {
34         ans = min(ans, max(f[n%2][i], i));
35     }
36     cout << ans << endl;
37     return 0;
38 }

原文地址:https://www.cnblogs.com/zZh-Brim/p/9160247.html

时间: 2024-10-05 05:58:35

[JOYOI1468] 清理垃圾 - DP的相关文章

Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.outputQuality(0.9); 2 4. attilax框架的处理 code 2 5. 到一篇文章提到如何控制jpg图片后压缩的质量 3 6. 参考 4 1. 清理图片压缩图片尺寸 目标::300kb>>>10kb.. 处理流程:::scale,outputQuality(0.5) 裁

使用记事本清理垃圾

要轻松流畅上网你是否注意到你的电脑系统磁盘的可用空间正在一天天在减少呢?是不是像老去的猴王一样动作一天比一天迟缓呢? 在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:.tmp.._mp)日志文件(.log).临时帮助文件(.gid).磁盘检查文件(.chk).临时备份文件(如:.old.*.bak)以及其他临时文件.特别是如果一段时间不清理IE的临时文件夹"Temporary Internet Files",其中的缓存文件有时会占用上百MB的磁盘空间.这些

最近更新完电脑管家开机速度一下慢了好多有木有?$电脑管家-清理垃圾$.qmgc

最近更新完电脑管家开机速度一下慢了好多有木有? 以前开机速度是几十秒,自从前几天更新了电脑管家之后,开机时间一下就变成了一分几十秒! 桌面上还多了一个清理垃圾的图标! 右键菜单也看不到属性 需要到以下位置查看: $电脑管家-清理垃圾$.qmgc

手动清理垃圾测试

手动清理垃圾测试 1 package com.fry.FinalizeTest; 2 3 public class FinalizeTest extends java.lang.Object{ 4 @Override 5 protected void finalize() throws Throwable { 6 // TODO Auto-generated method stub 7 super.finalize(); 8 System.out.println("The object is g

window清理垃圾

新建clean.bat @echo off color 0atitle windows7系统垃圾清理---echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo.★☆ ☆★echo.★☆ ☆★echo.★☆ 清理系统垃圾文件,请稍等...... ☆★echo ★☆ ☆★echo.★☆ ☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★

oracle 10G 清理垃圾表

一次边学边干的oralce运维经历, 步步是坑啊. 起因: 一套运行了5年的系统, 客户近期反映比较慢. 了解了一下运行环境: windows2003(16G + 4核) +  jdk(32) +tomcat  和 window2003(4G + 双核) + oracle10G 现场现象: 客户操作出入库单据, ie一片空白持续很长时间, 体验十分糟糕, 用客户的话说: 这一天做单的工作量对得起这份薪水. 初步判断: tomcat连接数据库时候十分缓慢, 而且tomcat各种cpu,内存显示都比

清理垃圾

题目链接 描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市--那座城市即将举行美食节! 但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票--他们只能够乘坐最为破旧的火车进行他们的旅程. 不仅如此,因为美食节的吸引,许多人纷纷踏上了和小Hi小Ho一样的旅程,于是有相当多的人遭遇到了和小Hi小Ho一样的情况--这导致这辆车上的人非常非常的多,以至于都没有足够的位置能让每一个人都有地方坐下来. 小Hi和小Ho本着礼让他们的心情--当

docker 如何清理垃圾呢

应用容器在宿主机上长期运行,应用实例启停容器,会产生大量的停止的容器,无容器使用的数据卷.网络配置,无容器依赖的镜像,这些垃圾日积月累,会影响到宿主机的运行状态,造成机子卡顿等现象.因此,需要对这些宿主机的垃圾进行清理. docker system prune -a -f  添加到 crontab 中,时间间隔一星期,例如:每星期一18:00运行一次 [[email protected] ~]$ crontab -e...00 18 * * 1 docker system prune -a -f

Win10电脑系统盘空间不足如何清理垃圾文件?

我们在使用电脑时,系统经常会产生许多垃圾文件,占用磁盘存储空间.在Win10系统中,我们可以通过清理系统盘的临时文件来释放一些存储空间.下面好系统U盘启动就来告诉你具体的方法步骤. Win10系统C盘清理临时文件的方法 1.在开始菜单中打开Windows设置,选择点击"系统"项.2.在左侧栏中选择点击"存储",在右侧栏中就可以看到电脑磁盘的存储情况了,我们选择点击C盘.3.点击进入后,电脑会扫描该磁盘中的文件存储情况并进行分类,分类过后,我们选择点击"临时