题目链接

额,为了提升一下自己动规的能力,就找的了这道题。

题目意思很简单,就是给你几条边让你铺满[0..L][0..L][0..L],在花费不超过BBB的条件下,求最大价值VVV

dp状态的定义
f[i][j]表示铺设到第i个位置,总花费为j,能获得的最大价值f[i][j]表示铺设到第i个位置,总花费为j,能获得的最大价值f[i][j]表示铺设到第i个位置,总花费为j,能获得的最大价值

初始化
因为是要求最大价值V,所以要把数组初始化为最小值,但是最大的价值肯定是>=0>=0>=0,所以数组一开始并不用管

dp转移前准备
因为位置iii是从小到大枚举的,那么f[i][j]f[i][j]f[i][j]必定是从f[k][p](k<i)(p<=j)f[k][p](k<i)(p<=j)f[k][p](k<i)(p<=j)转移过来,所以我们要在输入的时候建立边,因为输入的是数据是初始点,长度,价值,代价初始点,长度,价值,代价初始点,长度,价值,代价,所以从终点建一条边到起始点

转移
f[i][j]=max(f[to][j−edge[i].w]+edge[i].val,f[i][j])f[i][j]=max(f[to][j-edge[i].w]+edge[i].val,f[i][j])f[i][j]=max(f[to][j−edge[i].w]+edge[i].val,f[i][j])
在这个状态下必须从上一段路转移过来
细节
因为铁轨一定是要连续的并要从0开始铺着过来,所以要判断一下,不然就会挂成30pts,别问我怎么知道的

if(dp[to][j−edge[k].w]∣∣to==0)转移if(dp[to][j-edge[k].w]||to==0){转移}if(dp[to][j−edge[k].w]∣∣to==0)转移

#include<bits/stdc++.h>
#define maxn 10010
#define maxm 1010
#define int long long
using namespace std;
inline int read()
{int res=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}while(isdigit(ch)){res=(res<<1)+(res<<3)+(ch&15);ch=getchar();}return res*f;
}
int L,n,B;
int head[maxn],tot;
struct node{int to,next,val,w;
}edge[maxn];
inline void add(int x,int y,int w,int val)//链式前向星建边
{edge[++tot].to=y;edge[tot].next=head[x];edge[tot].w=w;edge[tot].val=val;head[x]=tot;
}
int ans=0;
int dp[maxn][maxm];
signed main()
{memset(head,-1,sizeof(head));L=read();n=read();B=read();for(int i=1;i<=n;i++){int u,v,f,c;u=read();v=read();f=read();c=read();add(u+v,u,c,f);}for(int i=0;i<=L;i++){for(int j=0;j<=B;j++){for(int k=head[i];k!=-1;k=edge[k].next){if(j-edge[k].w>=0){int to=edge[k].to;if(!dp[to][j-edge[k].w]&&to)continue;dp[i][j]=max(dp[to][j-edge[k].w]+edge[k].val,dp[i][j]);}}}}
/*  for(int i=1;i<=L;i++){for(int j=1;j<=B;j++)cout<<dp[i][j]<<" ";cout<<endl;}*/for(int i=0;i<=B;i++)ans=max(ans,dp[L][i]);//答案可能所有的花费中if(!ans)cout<<-1;else cout<<ans;return 0;
}

P2854 [USACO06DEC]Cow Roller Coaster S(DP)相关推荐

  1. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  2. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  3. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  4. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  5. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  6. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  7. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  8. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

  9. 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

    1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...

  10. LeetCode 1406. 石子游戏 III(DP)

    1. 题目 Alice 和 Bob 用几堆石子在做游戏.几堆石子排成一行,每堆石子都对应一个得分,由数组 stoneValue 给出. Alice 和 Bob 轮流取石子,Alice 总是先开始.在每 ...

最新文章

  1. js获取当前页面的URL信息
  2. 外包程序员是如何花 5 年时间从月薪 4 千到年薪近百万?
  3. 03凑算式(数字填空)
  4. Web UI 自动化测试环境搭建 (转载自51测试天地第三十九期上)
  5. 拥抱模块化Java平台:Java 10上的Apache CXF
  6. vue ---- 动态组件
  7. 你愿意一辈子当一个打工的吗
  8. PAT-乙级-1031. 查验身份证(15)
  9. 【Tensorflow】【损失函数】交叉熵数据验证(下)---BinaryCrossentropy二分类
  10. Python图片添加好看的中文字体并根据图片动态改变文字大小
  11. [Joy]冷笑话急转弯
  12. 笔试题——团队活动分组
  13. 共享一个免费2G全能空间
  14. 根据订单id查询该订单和商品信息
  15. P1192 台阶问题
  16. linux 源码搭建lnmp_LINUX CENTOS 6.5下源码搭建LNMP
  17. WebStorm设置px转换rem,亲测有效!
  18. Java基础(二)集合
  19. [游戏代码]求生之路插件:人物获得武器
  20. 寒武纪上半年营收1.7亿扣非后亏7.6亿 招银减持套现超3亿

热门文章

  1. mysql的驱动jar包下载
  2. python打开软件输入消息_菜鸟学Python之七:使用input读取输入信息
  3. 共享办公室租赁,突出市场重围
  4. 电子计算机及其部件,2021年电子计算机及其部件行业营销部门表格模板汇总.docx...
  5. ceb2Pdf.exe实现ceb文件转pdf,内网离线安装wine(手动编译32位)实现在centos(linux)上运行window程序exe程序,解决wine : Z:\xxx EXE格式无效
  6. html调用eps,eps输出没有属性
  7. 【九天教您南方cass 9.1】 14 坐标数据的纠正
  8. 暴风php视频怎么打开,暴风下载的视频怎样转换视频格式
  9. 计算机二级c语言编程题库100题下载,计算机二级C语言编程题库100题.doc
  10. 巃嵸鸿蒙构瑰材兮,集部-李太白全集