HDU - 1789 dp
题意:
众所周知lyb根本不学习。但是期末到了,平时不写作业的他现在有很多作业要做。
CUC的老师很严格,每个老师都会给他一个DDL(deadline)。
如果lyb在DDL后交作业,老师就会扣他的分。
现在假设lyb做作业都需要一天。
所以lyb想到要安排做作业的顺序,这样才能尽可能扣少一点分。
请帮帮bx吧。
Input
输入包含T个测试用例。输入的第一行是单个整数T,为测试用例的数量。
每个测试用例以一个正整数N开头(1<=N<=1000),表示作业的数量。
然后两行。第一行包含N个整数,表示DDL,下一行包含N个整数,表示扣的分。
Output
对于每个测试用例,您应该输出最小的总降低分数,每个测试用例一行。
Sample Input
3
3
3 3 3
10 5 1
3
1 3 1
6 2 3
7
1 4 6 4 2 4 3
3 2 1 7 6 5 4
Sample Output
0
3
5
Hint
上方有三组样例。
对于第一组样例,有三个作业它们的截止日期均为第三天,每天做一个正好在截止日期前全部做完,所以没有扣分,输出0。
对于第二组样例,有三个作业,它们的截止日期分别为第一天,第三天、第一天。第一天做了第一个作业,第二天做了第二个作业,共扣了3分,输出3。
题解:
首先处理一下题目给出的m个区间,如果它们的左端点一样,那么就保留那个右端点最大的那个区间(舍弃的区间都是不用都无所谓的)
然后就可以开始dp了
dp[i][j]表示在 1到i邮票区间 中选出来 j个题目给出的区间 得到的最大不同邮票个数
ri[i]表示,题目给出区间从i开始,最远到达ri[i]结束(就是比如题目给出两个区间[3,5],[3,7]那么ri数组里面就会有ri[3]=7)
那么就会有关系dp[ri[i]][j]=max(dp[i-1][j-1]+ri[i]-i+1,dp[ri[i]][j]); //对于处理后的ri数组,对于每一个区间[i,ri[i]]只有用和不用两种情况
那么用的时候就是dp[i-1][j-1]+ri[i]-i+1,不用的话就是dp[ri[i]][j]
具体见代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<queue>
6 #include<vector>
7 #include<map>
8 #define mem(a,x) memset(a,x,sizeof(a))
9 using namespace std;
10 const int INF=0x3f3f3f3f;
11 const int maxn=1010;
12 const int mod=1000000009;
13 typedef long long ll;
14 int dp[2020][2020];
15 int ri[2020];
16 int main()
17 {
18 ios::sync_with_stdio(false);
19 int t,cas=1;
20 cin>>t;
21 while(t--)
22 {
23 int n,m,k,i,j;
24 mem(dp,0);
25 mem(ri,0);
26 cin>>n>>m>>k;
27 while(m--)
28 {
29 int l,r;
30 cin>>l>>r;
31 while(l<=r)
32 {
33 ri[l]=max(ri[l],r);
34 l++;
35 }
36 }
37 for(i=1;i<=n;i++)
38 {
39 for(j=1;j<=k;j++)
40 {
41 dp[i][j]=max(dp[i][j],dp[i-1][j]);
42 dp[ri[i]][j]=max(dp[i-1][j-1]+ri[i]-i+1,dp[ri[i]][j]);
43 }
44 }
45 int res=0;
46 for(i=1;i<=n;i++)
47 {
48 res=max(dp[i][k],res);
49 }
50 cout<<"Case #"<<cas++<<": "<<res<<endl;
51 }
52 return 0;
53 }
HDU - 1789 dp的更多相关文章
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- hdu 1257 && hdu 1789(简单DP或贪心)
第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...
- HDU 1789 Doing Homework again(排序,DP)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU 1789 Doing Homework again (贪心)
Doing Homework again http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- HDU 1160 DP最长子序列
G - FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- hdu 4826(dp + 记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...
- HDU 2861 (DP+打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2861 题目大意:n个位置,m个人,分成k段,统计分法.S(n)=∑nk=0CknFibonacci(k ...
随机推荐
- Python基础语法3-输入、输出语句
- IDEA安装codota插件和使用,开发人员的知心伙伴
打开IDEA 点击左上角的File之后,如下图 成功后如图所示
- java进阶(33)--IO流
一.IO流概念:1.基本概念2.IO流分类3.java.io流的四大家族4.流的close和flush方法5.java.id下常用的16个流 二.FileInputStream字节输入流1.FileI ...
- 树莓派安装 Ubuntu 20.04 LTS 碰壁指南
树莓派安装 Ubuntu 20.04 LTS 碰壁指南 设备 Raspberry 4B 4+32G 系统 Ubuntu 20.04 LTS 1.镜像下载与烧录 镜像下载地址:https://cdima ...
- MariaDB(selec的使用)
--查询基本使用 -- 查询所有列 --select * from 表名 select * from students; --一定条件查询 select * from students whe ...
- 文件的上传/下载+在线游览(转化html)--不需要在线插件//自己写的小方法
1 /// <summary> 2 /// 文件上传下载帮助类 3 /// </summary> 4 public static class FileHelper 5 { 6 ...
- 计算机网络安全 —— C# 使用谷歌身份验证器(Google Authenticator)(五)
一.Google Authenticator 基本概念 Google Authenticator是谷歌推出的一款动态口令工具,旨在解决大家Google账户遭到恶意攻击的问题,在手机端生成动态口令后, ...
- 让绝对定位的div居中
最近看到一个问题就是让绝对定位的div居中,在尝试了top:50%:left:50%:后发现,居中是有问题的并不是想象中的样子 需要再加两句margin-top:-盒子高度的一般px margin- ...
- 解决window10 和 ubuntu 双系统安装没有启动选项问题
win10 和Ubuntu 双系统安装在网上已经有很多例子了,这里就不在赘述了. 今天新买的笔记本,想安装双系统.正常安装完ubuntu 重启后没有选项. 解决方法一 下载和解压以后,按照以下的步骤安 ...
- Java面向对象(一)----初次见面
面向对象 面向过程:根据业务逻辑从上到下写代码 函数式编程:对一些功能的代码封装到函数中,日后无需重复编写,直接调用函数就可以了 面向对象:将所有的功能进行封装,面对的事封装了功能的实体(对象),即面 ...