【算法】DP

【题解】

如果每个排列算一种,则令f[i]表示凑成面值为i的方案数,容易推出f[i]+=f[i-a[j]]。

现在是每个组合才算一种,令f[i][j]第二维表示只使用前j种面值,f[i][j]+=f[i-a[j][k],k=0~j,这样最终算出来的方案就是按一定顺序的,不会重复计算。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,maxV=;
int n,m,a[maxV];
ll f[maxn][maxV];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
f[][]=;
for(int i=;i<=m;i++){
for(int j=;j<=n;j++)if(i-a[j]>=){
for(int k=;k<=j;k++)f[i][j]+=f[i-a[j]][k];
}
}
ll ans=;
for(int i=;i<=n;i++)ans+=f[m][i];
printf("%lld",ans);
return ;
}

------------------------------------------------------

以上脑洞太大了,其实是完全背包。

每个面值视为物品体积,求总体积为N的方案数。

换种思路,每次考虑加入一种面值,这样就自然不会重复算了。

f[0]=1;

for(int i=1;i<=v;i++)

  for(int j=a[i];j<=n;j++)

    f[j]+=f[j-a[i]];

【BZOJ】1708: [Usaco2007 Oct]Money奶牛的硬币的更多相关文章

  1. BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币( dp )

    背包dp.. -------------------------------------------------------------------------------- #include< ...

  2. BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币

    1708: [Usaco2007 Oct]Money奶牛的硬币 Description 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统 ...

  3. 1708: [Usaco2007 Oct]Money奶牛的硬币

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 544  Solved: 352[Submi ...

  4. BZOJ1708: [Usaco2007 Oct]Money奶牛的硬币

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 513  Solved: 329[Submi ...

  5. bzoj1708:[Usaco2007 Oct]Money奶牛的硬币(完全背包

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 797  Solved: 540[Submi ...

  6. bzoj1708[Usaco2007 Oct]Money奶牛的硬币(背包方案数dp)

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 763  Solved: 511[Submi ...

  7. bzoj1708 [Usaco2007 Oct]Money奶牛的硬币 背包dp

    [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 852  Solved: 575[Submit][Sta ...

  8. [bzoj1708][Usaco2007 Oct]Money奶牛的硬币_动态规划_背包dp

    Money奶牛的硬币 bzoj-1708 Usaco-2007 Oct 题目大意:在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币 ...

  9. 【bzoj1708】[USACO2007 Oct]Money奶牛的硬币

    题目描述 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币系统中,硬币的面值通常是1,5,10,20或25,50,以及100单位的 ...

随机推荐

  1. Word中使用宏调整表格

    Dim i As Integer   For i = 1 To Selection.Tables.Count Selection.Tables(i).Columns(9).Delete Selecti ...

  2. 大数据de 2文章

    点击可免费试用网易有数 文章来源:网易有数的搭积木原则阐述 ,经作者文雯授权发布 wo ceceshi 相关文章:[推荐] SpringBoot入门(五)--自定义配置

  3. Ubuntu下使用Git_2

    接着上一篇的写,这里练习一下git clone 指令 指令格式 $ git clone <repository> <directory> <respository> ...

  4. QSS 的选择器

    本文连接地址:http://www.qtdebug.com/QSS-Selector.html 选择器决定了 style sheet 作用于哪些 Widget,QSS 支持 CSS2 定义的所有选择器 ...

  5. 第二十四篇configparser(**)

    configparser模块 config:配置,parser:解析.字面意思理解configparser模块就是配置文件的解析模块. 来看一个好多软件的常见文档格式如下: [DEFAULT] # 标 ...

  6. 【page.json】配置说明

    页面.json用来对本页面的窗口表现进行配置.它只能针对window配置,并且会覆盖 app.json 的 window 中相同的配置项. { /** * 以下是页面顶部导航栏设置 **/ " ...

  7. CSS : @media 示例

    .example { padding: 20px; color: white; } /* Extra small devices (phones, 600px and down) */ @media ...

  8. Wordpress 设置后台自定义post 排序

    创建新的 Post type时,文章在后台默认使用 Titile 列进行升序排序,但是通常情况下我们需要按日期 Date 进行降序排序, function wpse_81939_post_types_ ...

  9. Python 把两个列表遍历为一个

    两个list, 有对应关系,希望同时完成遍历 用迭代器迭代的方法也不是不可以,python提供了更直观的方法: 可以使用zip把两个list打包 , 类似: list1 = [1,2,3,4] lis ...

  10. Python参考

    python中os模块用法 自动化运维Python系列(五)之常用模块 最常用的Notepad++的快捷键 pycharm快捷键 最全Pycharm教程(1)——定制外观 pycharm教程大全 py ...