原题链接 https://www.luogu.org/problemnew/show/P1164

此题是一道简单的动规问题 才学两天不是很熟练,我苦思冥想看着题解终于想出来了。

主要的思路如下:

我们可以用二维数组f【i】【v】来储存点第i道菜时已经花了v元的方案数,用一维数组jq【i】来储存第i道菜的价格,那么有如下三种情况:

1.若jq【i】==v时,说明前面i-1道菜所花的钱的总和等于第i道菜的价钱,那么这时我们可以用第i道菜来代替前i-1道菜,这样的话方案数就多了一种,所以f【i】【v】=f【i-1】【v】+1;

2.若jq【i】<v时,说明第i道菜的价钱小于前i-1道菜所花的钱,所以我们可以舍弃前面的某几道菜来买第i道菜,这样可以使得我们的方案数增加,那么这时我们可以选择是否买第i道菜,如果买,那么前i-1道菜就要花掉v-jq【i】的钱数;如果不买,那么前i-1道菜就要花掉v的钱数。

根据分类加法原理得出:这种情况的总方案数就是两种情况的总和,即f【i】【v】=f【i-1】【v-jq【i】】+f【i-1】【v】;

3.若jq【i】>v时,说明第i道菜的价钱大于前i-1道菜所花的钱的总和,所以我们不能买第i道菜,那么这时的方案数为前i-1道菜花v元钱的方案数,即f【i】【v】=f【i-1】【v】;

弄完了状态转移方程,那么这个题解起来就游刃有余了,上代码!

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m,f[][]={},jq[]; //f数组表示第i道菜花了v元的方案数,jq数组存放每道菜的价钱
cin>>n>>m;
for(int i=;i<=n;i++)
cin>>jq[i];
for(int i=;i<=n;i++) //从1~n道菜
{
for(int v=;v<=m;v++)
{
if(jq[i]==v) f[i][v]=f[i-][v]+; //核心代码,上面已经分析过了,不做过多解释
if(v>jq[i]) f[i][v]=f[i-][v]+f[i-][v-jq[i]];
if(v<jq[i]) f[i][v]=f[i-][v];
}
}
cout<<f[n][m]; //最多方案数一定在最后的f【n】【m】里,因为后面的方案数是从前面一个个累积过来的
return ; }

P1164 小A点菜的更多相关文章

  1. 洛谷P1164 小A点菜(01背包求方案数)

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过u ...

  2. 洛谷——P1164 小A点菜

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过u ...

  3. 洛谷P1164 小A点菜 [2017年4月计划 动态规划08]

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过u ...

  4. P1164 小A点菜【dp】

    P1164 小A点菜 提交 43.03k 通过 24.37k 时间限制 1.00s 内存限制 125.00MB 题目提供者洛谷 难度普及- 历史分数100 提交记录 查看题解 标签 洛谷原创   查看 ...

  5. 洛谷 p1164 小A点菜 【dp(好题)】 || 【DFS】 【恰好完全装满】

    题目链接:https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. u ...

  6. 【洛谷P1164 小A点菜】

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  7. 洛谷P1164 小A点菜 DP入门

    原题传输门>>https://www.luogu.org/problem/show?pid=1164<< 前几天开始联系DP的,一路水题做到这,发现这题套不了模板了QAQ 在大 ...

  8. P1164 小A点菜 洛谷

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  9. 洛谷 P1164 小A点菜

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  10. luogu P1164 小A点菜

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

随机推荐

  1. 设计模式之单例模式(C#)

    本文来自于本人个人微信公众号,欢迎关注本人微信公众号,二维码附在文章末尾~~~ 一直都特别羡慕能写文章的人,但是由于本人比较懒再加上写文章功底实在是just so so,所以就一搁再搁,最近突然觉得自 ...

  2. C++ 通过ostringstream 实现任意类型转string

    #include <iostream> #include <string> using namespace std; int main() { ; double b = 65. ...

  3. matplotlib 入门之Pyplot tutorial

    文章目录 pyplot 介绍 修饰你的图案 格式字符串 [color][marker][line] Colors Markers Line Styles 利用关键字作图(大概是数据映射到属性吧) 传入 ...

  4. openstack-虚拟化模型

    一. 虚拟化模型 1.虚拟化模型 图1 虚拟化模型 图2 KVM架构 2.KVM模块 处理器虚化 内存虚化 3.QEMU设备模型 其它虚化(网卡.声卡.显卡等)

  5. 10-vue的介绍

    vue的作者叫尤雨溪,中国人.自认为很牛逼的人物,也是我的崇拜之神. 关于他本人的认知,希望大家读一下这篇关于他的文章,或许你会对语言,技术,产生浓厚的兴趣.https://mp.weixin.qq. ...

  6. Jeecg-Boot Spring Boot

    Jeecg-Boot 1.0 发布,企业级快速开发平台 - 开源中国https://www.oschina.net/news/104889/jeecg-boot-1-0-released

  7. git [command line] fatal: Authentication failed for

    fatal: Authentication failed for https://www.jianshu.com/p/8a7f257e07b8 git.exe fetch -v --progress ...

  8. bootstrap 弹窗或者提示框插件 bootstrap-growl 和bootstrap-notify

    Bootstrap简单好用的页面右上角咆哮提示框 - daidaineteasy的专栏 - CSDN博客https://blog.csdn.net/daidaineteasy/article/deta ...

  9. composer 自动加载类 通过psr

    项目地址  git@github.com:brady-wang/composer.git "autoload":{ "classmap":[ "Lib ...

  10. LLDB 3.9.1 安装方法

    1. baidu到一个安装方法 进行尝试: 来源: https://zhuanlan.zhihu.com/p/40780819https://www.jianshu.com/p/f965bbba6eb ...