caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)
这道题写了我好久, 交上去90分,就是死活AC不了
后来发现我写的程序有根本性的错误,90分只是数据弱
#include<cstdio>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;
const int MAXN = 2123;
int dp[MAXN][MAXN], t[MAXN];
int f[MAXN], d[MAXN], h, n;
int main()
{
scanf("%d%d", &n, &h);
h *= 12;
REP(i, 1, n + 1) scanf("%d", &f[i]);
REP(i, 1, n + 1) scanf("%d", &d[i]);
REP(i, 1, n) scanf("%d", &t[i]);
REP(i, 0, h + 1) dp[0][i] = 0;
REP(i, 0, n + 1) dp[i][0] = 0;
REP(i, 1, n + 1)
{
int fish = f[i];
REP(j, 1, h + 1)
{
if(j-t[i-1] > 0 && dp[i-1][j-t[i-1]] > dp[i][j-1] + fish)
dp[i][j] = dp[i-1][j-t[i-1]], fish = f[i];
else
dp[i][j] = dp[i][j-1] + fish, fish = max(fish - d[i], 0);
}
}
printf("%d\n", dp[n][h]);
return 0;
}
我一开始的程序是这样的,但是又非常多的问题
(1)我这个程序是以最后一个池塘为i定义的,所以应该是max(dp[i][h]),答案不一定是dp[n][h]
(2)dp[i][0] = 0有点问题,因为这个时候不是为0的,只有1是起点。这个时候就相当于每个点都可以是
起点了。应该是dp[0][0] = 0,其他未负无穷。有意义的设为0,其他为负无穷。
正解应该是枚举当前这个池塘钓的时间和上个池塘钓的时间,取最优。
#include<cstdio>
#include<algorithm>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;
const int MAXN = 212;
int dp[MAXN][MAXN * 10], t[MAXN];
int diao[MAXN][MAXN], f[MAXN], d[MAXN], h, n;
int main()
{
scanf("%d%d", &n, &h);
h *= 12;
REP(i, 1, n + 1) scanf("%d", &f[i]);
REP(i, 1, n + 1) scanf("%d", &d[i]);
REP(i, 1, n) scanf("%d", &t[i]);
REP(i, 1, n + 1)
{
diao[i][0] = 0;
int fish = f[i];
REP(j, 1, h + 1)
{
diao[i][j] = diao[i][j-1] + fish;
fish = max(fish - d[i], 0);
}
}
memset(dp, -63, sizeof(dp));
int ans = 0;
REP(i, 0, h + 1) dp[0][i] = 0;
REP(i, 1, n + 1)
REP(j, t[i-1], h + 1)
REP(k, 0, j - t[i-1] + 1)
{
dp[i][j] = max(dp[i][j], dp[i-1][k] + diao[i][j-t[i-1]-k]);
ans = max(ans, dp[i][j]);
}
printf("%d\n", ans);
return 0;
}
caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)的更多相关文章
- caioj 1082 动态规划入门(非常规DP6:火车票)
f[i]表示从起点到第i个车站的最小费用 f[i] = min(f[j] + dist(i, j)), j < i 动规中设置起点为0,其他为正无穷 (貌似不用开long long也可以) #i ...
- caioj 1080 动态规划入门(非常规DP4:乘电梯)(dp数组更新其他量)
我一开始是这么想的 注意这道题数组下标是从大到小推,不是一般的从小到大推 f[i]表示从最高层h到第i层所花的最短时间,答案为f[1] 那么显然 f[i] = f[j] + wait(j) + (j ...
- caioj 1086 动态规划入门(非常规DP10:进攻策略)
一开始看到题目感觉很难 然后看到题解感觉这题贼简单,我好像想复杂了 就算出每一行最少的资源(完全背包+二分)然后就枚举就好了. #include<cstdio> #include<a ...
- caioj 1087 动态规划入门(非常规DP11:潜水员)(二维背包)
这道题的难点在于价值可以多. 这道题我一开始用的是前面的状态推现在的状态 实现比较麻烦,因为价值可以多,所以就设最大价值 为题目给的最大价值乘以10 #include<cstdio> #i ...
- 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...
- caioj 1084 动态规划入门(非常规DP8:任务安排)(取消后效性)
这道题的难点在于,前面分组的时间会影响到后面的结果 也就是有后效性,这样是不能用dp的 所以我们要想办法取消后效性 那么,我们就可以把影响加上去,也就是当前这一组加上了s 那么就把s对后面的影响全部加 ...
- caioj 1083 动态规划入门(非常规DP7:零件分组)(LIS)
这道题题目给的顺序不是固定的 所以一开始要自己排序,按照w来排序 后来只要看l就可以了 然后求最长下降子序列即可(根据那个神奇的定理,LIS模板里有提到) #include<cstdio> ...
- caioj 1081 动态规划入门(非常规DP5:观光游览)
这道题和前面的分组的题有点像 就是枚举最后一组的长度. 然后组数可以在第一层循环也可以在第二层循环 我自己的话就统一一下在第一层循环吧 然后这道题题意我一直没理解清楚,浪费了很多时间,写复杂了 同时初 ...
- caioj 1078 动态规划入门(非常规DP2:不重叠线段)(状态定义问题)
我一开始想的是前i个区间的最大值 显然对于当前的区间,有不选和选两种情况 如果不选的话,就继承f[i-1] 如果选的话,找离当前区间最近的区间取最优 f[i] = max(f[i-1, f[j] + ...
随机推荐
- HTTP的请求及响应
前言 本文主要包括以下内容: HTTP是什么? HTTP 请求包括哪些部分? HTTP 响应包括哪些部分? 如何用Chrome开发者工具查看 HTTP 请求及请求的内容? 如何使用 curl 命令? ...
- DotNetCore.1.0.1-VS2015Tools.Preview2.0.3 相关问题及解决办法
本月16号,MS发布了 .NET Core 1.1.作为一个用贯MS产品的小盆友,我第一时间就把相关的安装包下载下来了,然后果断安装(入坑). 我猜你来看这篇博客可能遇到了和我一样的问题. 问题0:正 ...
- lua中调用C++函数
lua中调用C++函数 我们产品中提供了很多lua-C API给用户在lua中调用,之前一直没用深究其实现原理,只是根据已有的代码在编码.显然这不是一个好的习惯,没用达到知其所以然的目的. 一.基本原 ...
- Spring Framework 开发参考手册中文(在线HTML)
https://blog.csdn.net/zfrong/article/details/3971722
- (WC2018模拟十二)【FJOI2016集训Day7T1】挑选子序列
题解: 这题太神仙了,先咕着,放个令人****的官方题解(精确覆盖问题是NP完全问题啊摔) Dancing Link X学习资料:QAQ TAT qwq Orz Donald Knuth大神... p ...
- POJ-1511 Invitation Cards 往返最短路 邻接表 大量数据下的处理方法
题目链接:https://cn.vjudge.net/problem/POJ-1511 题意 给出一个图 求从节点1到任意节点的往返路程和 思路 没有考虑稀疏图,上手给了一个Dijsktra(按紫书上 ...
- 关于.net core 在docker中监听地址设置踩坑记
1.今天在做docker容器的时候发现如果将.net core 内部监听地址设置为localhost:8888. 2.在docker build -p 6444:8888 运行容器后,外部通过6444 ...
- python 比较数字大小按从大到小输出
主要用到的python 的知识点 1: 内置函数max 2: 列表的操作 3: while 循环 4 : 错误处理 代码如下: #!/usr/bin/python #coding=u ...
- 使用systemctl自定义系统服务
1.创建系统服务文件,格式如下: [Unit] Description=httpd After=network.target [Service] Type=forking ExecStart=/usr ...
- Vue style里面使用@import引入外部css, 作用域是全局的解决方案
问题描述 使用@import引入外部css,作用域却是全局的 <template> </template> <script> export default { na ...