P1802-DP【橙】
1.又是一道因为写了异常剪枝而调了好久的题,以后再也不写异常剪枝了,异常情况压根不该出现,所以针对出现的异常情况进行补救的异常剪枝是一种很容易出错的行为,做为两手准备也就罢了,但第一次写成的代码必须能在没有异常剪枝的情况下算出正确结果才行!
2.还提出了一个专门针对记搜的编码规范:编写记忆化搜索的时候不要使用除了DP以外的全局变量,要用外界常量就用一个一直传着的常量引用如const int &
(注意,指向常量的指针写作int * const p,而常量引用写作 const int & p,但两者是同一个东西,都是不允许修改指向对象的,注意,指向常量的指针和常量引用都并不是只能指向常量,而是不能修改指向的量,换句话说可以指向变量,只是用指针和引用来表示指向的变量的时候那个变量会表现成一个常量的样子,但并不是新创建了一个与之相等的常量来被指)
3.同时,十年OI一场空,不开ll见祖宗啊QAQ
而且很多时候把int改成ll会忘了改返回值类型等较小的地方,导致错误,所以不如#define int long long,signed main,真香
4.然后还是WA了,因为忽略了还有重量为0的商品,即不用嗑药也能打过的菜鸡,所以边界应该是“if(remain<0||cdP==0)return DP[remain][cdP]=0;//边界剪枝”而不是“if(remain==0||cdP==0)return DP[remain][cdP]=0;//边界剪枝”
Code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
#define int long long
int DP[1005][1005];
//remian is the remain count of drug ,and cdP is the considered_person_number
//the return value is the answer of I have these drugs and these persons
//标准编码规范:编写记忆化搜索的时候不要使用除了DP以外的全局变量,要用外界常量就用一个一直传着的常量引用如const int &
int dfs(int remain,int cdP, const int * const w,const int * const u)
{
if(DP[remain][cdP]!=-1)return DP[remain][cdP];//记忆化剪枝
if(remain<0||cdP==0)return DP[remain][cdP]=0;//边界剪枝
int DFS=0;//总种数就加、最优解就取MAX(或MIN)
if(remain-u[cdP]>=0)DFS=max(DFS,dfs(remain-u[cdP],cdP-1,w,u)+w[cdP]);
DFS=max(DFS,dfs(remain,cdP-1,w,u));
return DP[remain][cdP]=DFS;
}
signed main()
{
int x,n,ans=0,l[1005],w[1005],u[1005];
cin>>n>>x;
memset(DP,-1,sizeof(DP));
for(int i=1;i<=n;i++)
cin>>l[i]>>w[i]>>u[i];
for(int i=1;i<=n;i++)w[i]-=l[i],ans+=l[i];
cout<<5*(ans+dfs(x,n,w,u))<<endl;
return 0;
}
P1802-DP【橙】的更多相关文章
- 清橙A1212:剪枝
题面 清橙 Sol 一种新的树上\(DP\)姿势 从左往右按链\(DP\) 做法: 维护两个栈\(S1\),\(S2\) \(S1\)存当前的链 \(S2\)存分叉点以下要改的链 \(Dfs\),弄一 ...
- DP题目推荐合集(洛谷/UVa)
今天下午要参加海淀区的比赛了...这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光...下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1.P2690 接苹果 :(基础二维DP) 2. ...
- DP及其优化
常见DP模型及其构造 序列DP ARC074 RGB Sequence 题意 给你一个长度为 \(n\) 的序列和 \(m\) 组约束条件,每组条件形如 \(l_i,r_i,x_i\),表示序列上的 ...
- 从《彩色圆环》一题探讨一类环上dp的解法
清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...
- 模拟赛 提米树 题解 (DP+思维)
题意: 有一棵棵提米树,满足这样的性质: 每个点上长了一定数量的Temmie 薄片,薄片数量记为这个点的权值,这些点被标记为 1 到 n 的整数,其 中 1 号点是树的根,没有孩子的点是树上的叶子. ...
- P1802 5倍经验日
P1802 5倍经验日 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉.干掉能拿不少经验的. 题目描述 现在absi20 ...
- dp入门题解
学dp学到自闭(真的判断不出是个dp问题哇) 来看一下最近学的dp简单的题库. 1.01背包问题(P1048) 这个的特点是每种东西只能拿一次. https://www.luogu.com.cn/pr ...
- 【DP】斜率优化初步
向y总学习了斜率优化,写下这篇blog加深一下理解. 模板题:https://www.acwing.com/problem/content/303/ 分析 因为本篇的重点在于斜率优化,故在此给出状态转 ...
- Codeforces 891D - Sloth(换根 dp)
Codeforces 题面传送门 & 洛谷题面传送门 换根 dp 好题. 为啥没人做/yiw 首先 \(n\) 为奇数时答案显然为 \(0\),证明显然.接下来我们着重探讨 \(n\) 是偶数 ...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4142 Solved: 1964[Submit][Statu ...
随机推荐
- oracle、达梦数据库、MySQL数据创建表与字段注释
/**1.oracle注释*//*表本身注释*/comment on table 表名 is '注释信息';/*字段注释*/comment on column 表名.字段名 is '注释信息';/*实 ...
- GHOST 系统安装教程 轻松一键,系统恢复到最佳状态
硬盘安装系统 安装前准备 1.保证能够正常进入系统: 2.下载Ghost系统镜像文件: 3.下载镜像安装器: 安装步骤 1.下载Ghost系统镜像"Win7_x64_Pure_5.07.GH ...
- 向mq写消息
1.基础版本 import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.comm ...
- Socket.D 基于消息的响应式应用层网络协议
首先根据 Socket.D 官网的副标题,Socket.D 的自我定义是: 基于事件和语义消息流的网络应用协议. 官网定义的特点是: 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 ...
- Kernel Memory 入门系列:生成并获取文档摘要
Kernel Memory 入门系列:生成并获取文档摘要 前面在RAG和文档预处理的流程中,我们得到一个解决方案,可以让用户直接获取最终的问题答案. 但是实际的业务场景中,仍然存在一些基础的场景,不需 ...
- 浅谈数字孪生和GIS融合的必要性
随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力.然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革.在本文中,我们将探讨数字孪生和GIS融合 ...
- ACTF flutter逆向学习
参考了许多大佬的博客,在此特别诚挚感谢oacia大佬和其他大佬的博客和指导! 1.flutter和apk基础结构介绍 首先下载附件,是一个apk文件,用jadx打开 可以看见flutter字样,而fl ...
- 珍藏网站-关于路由器、WIFI协议等
路由器详解:为什么不要买AX3000路由器 https://zhuanlan.zhihu.com/p/403855533 包含以下专业名词和相关话题: RX/TX和MU-MIMO 20MHz/40MH ...
- 解决 git中用vim编写文件时,无法写进文字字母以及光标无法移到最右边的问题
解决方法:可以切换到英文输入法,然后按'a' 或者 'i' 或者 'o' 或者's' 等.s好像会删掉一个字母.o会使光标移到文末.
- 文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题
一.用go语言,在执行 RB-DELETE-FIXUP 之后,证明:树根一定是黑色的. 文心一言: 在证明 RB-DELETE-FIXUP 之后,树根一定是黑色的的过程中,我们首先需要理解红黑树的性质 ...