A Question of Ingestion Gym - 101673G

给出n天,有一个饭量m。若连续吃饭 j 天则,每次能吃的量是m乘以(2/3)^ j 。或者你可以选择中途休息。

若休息1天,则减少一个 j 次的2/3 。。若连续休息两天,则下一次又可以吃 m 的量。

第二行给出的是当天能得到的最多的摄入量。你在当天得到的能量不能超出这个上限。

询问最后能得到最大的能量总和。

我又双叒叕!读错题了!!!

dp[ i ][ j ]来记录在第 i 天,连续摄入第 j 天时能得到的总量的最大值。dp[ i ][ j ]的值要么是前一天选择吃饭转移来的,或者是前一天没有吃饭转移过来的。需要注意的是dp[ i ][ 1 ]可能是大前天转移过来的,这表示中间的两天选择不吃饭。

#include <bits/stdc++.h>
using namespace std;int dp[105][105];
int a[105], b[105];
dp[i][j][k] : 表示今天是第i天,能量级别为j级, 今天吃了是1,没吃是0;
今天吃昨天转来的:   dp[i][j][1] = max(dp[i][j][1], dp[i-1][j-1][1] + 今天吃)dp[i][j][0] = max(dp[i][j][0], dp[i-1][j][1] + 今天不吃)
今天吃前天转来的:   dp[i][j][1] = max(dp[i][j][1], dp[i-2][j-1][1] + 今天吃)dp[i][j][0] = max(dp[i][j][0], dp[i-2][j][1] + 今天不吃)
今天吃大前天转来的: dp[i][j][1] = max(dp[i][j][1], dp[i-3][j][1] + 今天吃,能量为m)/*
dp[i][j] 正准备吃第i个时,已经连续吃了j个所得到的能量*/int main()
{int n, m;scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++)scanf("%d", &a[i]);b[1] = m;for(int i = 2; i <= n; i++)b[i] = (floor)(b[i-1] * 2 / 3);for(int i = 1; i <= n; i++){dp[i][1] = min(a[i], b[1]);}int ans = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= n + 1; j++){if(i >= 1){dp[i][j] = max(dp[i][j], dp[i-1][j-1] + min(a[i], b[j]));}if(i >= 2){dp[i][j] = max(dp[i][j], dp[i-2][j] + min(a[i], b[j]));}if(i >= 3){dp[i][1] = max(dp[i][1], dp[i-3][j] + min(a[i], b[1]));}ans = max(ans, dp[i][j]);ans = max(ans, dp[i][1]);}}printf("%d\n",ans);
}

【DP + 思维】A Question of Ingestion Gym - 101673G相关推荐

  1. A Question of Ingestion

    5028: A Question of Ingestion 时间限制: 1 Sec  内存限制: 128 MB 提交: 89  解决: 24 [提交] [状态] [讨论版] [命题人:admin] 题 ...

  2. CSP-S 2019————Emiya 家今天的饭————DP+思维

    题解:本题主要考查DP+思维. 简要题意:一个矩阵,要求每行只选一个节点,每列选的节点不能超过所有选的节点的一半,不能不选,给出每个节点的选择方案数,求总方案数. 1.DP+思维: (1).维护每列已 ...

  3. Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)

    Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...

  4. HDU 4489 找出n!个全排列数中的“波浪数” dp 思维,全排列

    这题关键还是在于找出dp的转移方程,这题是从第n个数在前n-1个数的位置中入手,然后把"波浪数"分成两派.理解起来不困难,但是要自己想到的话,其中的思维一片也不能断掉,尤其是要找到 ...

  5. HDU多校10 - 6880 Permutation Counting(dp+思维)

    题目链接:点击查看 题目大意:给出一个长度为 n - 1 的 01 序列 b 用来表示排列 a 的相对大小关系,b[ i ] = 0 说明 a[ i ] < a[ i + 1 ] ,b[ i ] ...

  6. Lighting System Design UVA 11400 (dp+思维)

    题目大意:有一个照明系统需要用到n种灯,每种灯的电压为V,电源费用K,每个灯泡费用为C,需要该灯的数量为L.注意到,电压相同的灯泡只需要共享一个对应的电源即可,还有电压低的灯泡可以被电压高的灯泡替代. ...

  7. Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

    传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki​,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...

  8. CF946D Timetable 背包dp + 思维转换

    传送门 文章目录 题意: 思路: 题意: n,m,k≤500n,m,k\le500n,m,k≤500 思路: 将其转换成背包的模型,就可以想出来一个很明显的dpdpdp状态:f[i][j]f[i][j ...

  9. Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的只包含1,21,21,2的序列aaa,你可以至多翻转一段区间,求翻转之后最长非递减子序列是多长. 思路: 考虑如果翻转的话,翻转的子区间 ...

  10. Codeforces Round #693 (Div. 3) G. Moving to the Capital dp + 思维

    传送门 题意: 给一个图,111号点为中心点,定义dis[i]dis[i]dis[i]表示111号点到iii的距离.现在有三种移动方式 (1)(1)(1)从iii移动到jjj且dis[i]<di ...

最新文章

  1. 麒麟芯片AI首席科学家,解读AI芯片如何让手机更智能
  2. 北电ERS1600,8300,8600交换机的基本技术-第六章 二层冗余技术(MLT,SMLT,IST)
  3. 转:word2vec 中的数学原理详解
  4. 无线路由器天线上绑几个电池,真的会增强发射信号吗?
  5. zoj 2706 线段树
  6. 【动态规划 LIS】JZOJ_6310 glo
  7. ctf夏季集训结训赛-简单题writeup
  8. Tailwind CSS如何单页面使用并压缩tailwindcss
  9. 7-1 软硬车厢交替排列 (13 分)
  10. 美国计算机专业大学排名前30,【最新】2015年美国大学计算机专业排名
  11. EndNote中英文混排
  12. 作为一个研发背景出身的项目经理写给IT面试者的几点建议
  13. mac 安装python并切换到python3版本
  14. 前端Lottie动画实现方法
  15. 史上最全 | 计算机视觉2D/3D标注工具汇总!
  16. (cons '(〇 . 前言) 《为自己写本-Guile-书》)
  17. E. Easy Assembly
  18. 选择公有云桌面还是私有云桌面?有没有免费的云桌面?
  19. data:image/png;base64这什么玩意
  20. 使用 Buildot 实现持续集成(转载)

热门文章

  1. linux usr/bin/和 usr/local/bin之间的关系,什么是软链接?
  2. KY-RTI分布仿真技术:第八章 Visual C#程序设计
  3. Spark SQL 创建局部视图和全局视图,以及找不到全局视图的问题解决
  4. 新辰:台北90后创业炸鸡配啤酒 来自星星的你 不成功也难
  5. pon终端测试仪_PON产品测试方案
  6. Android组件化开发实践和案例分享 1
  7. VVIC搜款网平台API接口
  8. UE4无法创建C++类
  9. 程序猿生存指南-7 相亲之路(下)
  10. 推荐阅读20100812