dp

以前做过 忘了。

想破脑袋不知道怎么设状态

dp[i][j][k]表示选到第i个硬币,当前和为j,能否弄出k

dp[i][j][k]|=dp[i-1][j][k]|dp[i-1][j][k-c[i]]|dp[i-1][j-c[i]][k-c[i]]

如果发现状态不行,就试着多加一维,也许就能搞定

#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, k, pre;
int dp[][N][N], c[N];
vector<int> ans;
int main()
{
scanf("%d%d", &n, &k);
for(int i = ; i <= n;++i) scanf("%d", &c[i]);
dp[pre][][] = ;
for(int x = ; x <= n; ++x)
{
pre ^= ;
for(int i = ; i <= k; ++i)
for(int j = ; j <= k; ++j)
{
dp[pre][i][j] = dp[pre ^ ][i][j];
if(i - c[x] >= )
{
dp[pre][i][j] |= dp[pre ^ ][i - c[x]][j];
if(j - c[x] >= )
dp[pre][i][j] |= dp[pre ^ ][i - c[x]][j - c[x]];
}
}
}
for(int i = ; i <= k; ++i) if(dp[pre][k][i])
ans.push_back(i);
printf("%d\n", ans.size());
sort(ans.begin(), ans.end());
for(int i = ; i < ans.size(); ++i) printf("%d ", ans[i]);
return ;
}

687C的更多相关文章

  1. Codeforces 687C The Values You Can Make(DP)

    题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些. 有点绕.. dp[i][j][k]表示前i个硬币中 能否 组合成面值j且选 ...

  2. Codeforces 687C. The Values You Can Make (dp)

    题目链接:http://codeforces.com/problemset/problem/687/C 题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的 ...

  3. codeforces 687C - The Values You Can Make 简单dp

    题意:一个数组a[i],你可以挑出若干个数(只能挑一次)加起来等于k, 针对每一种方案,你可以选出这若干个数的子集来组合新数 最后所有的方案能组合出多少种数 分析:一看数据范围n,k<=500 ...

  4. CodeForces 687C The Values You Can Make

    $dp$,背包. $f[i][j][s]$表示前$i$个物品,凑出$j$价格的情况下,能否凑出$s$价格,$f[i][j][s]=1$表示能,否则不能. 转移很简单:如果$f[i][j][s]=1$, ...

  5. CodeForces 687C The Values You Can Make(动态规划)

    这个也可以说是一个01背包了,里面也有一些集合的思想在里面,首先dp方程,dp[i][j]代表着当前数值为i,j能否被构成,如果dp[i][j] = 1,那么dp[i+m][j] 和 dp[i+m][ ...

  6. CoderForces 687C The Values You Can Make (01背包,DP)

    题意:给定 n 个硬币和一个值 k,问你在用一些硬币组成面值为 k的这些硬币还能组成多少种其他面值. 析:如果这样说,由这些硬币能组成多少种不同的面值,那么是不是就很熟悉了,这不就是01背包么,这个题 ...

  7. CodeForces 687C【DP】

    题意: 给你n个数,然后让这些数相加组合,然后在这些组合的数里可以再相加组合搞出给定 k,输出这些组合的数. 思路: DP. //在枚举到第i个coin的时,dp[i][j],i 肯定能被a[i]组合 ...

  8. WPF MultiDataTrigger

    huhu <Style x:Key="Cell" TargetType="{x:Type Button}"> <Setter Property ...

  9. codeforces的dp专题

    1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...

随机推荐

  1. 常用MySQL语句整合

    常用MySQL语句整合 1. MySQL服务的配置和使用 修改MySQL管理员的口令:mysqladmin –u root password 密码字符串 如:mysqldmin –u root pas ...

  2. ASP.net参数传递总结

    同一页面.aspx与.aspx.cs之间参数传递 1. .aspx.cs接收.aspx的参数:由于.aspx和.aspx.cs为继承关系,所以.aspx.cs可以直接对.aspx中的ID进行值提取,具 ...

  3. chinason工作室-兄弟的工作室开张了,欢迎来访喔!

    Chinason工作室,团队成员由多位多年从事软件开发及大型生产企业系统维护的工程师组成,借重传统国外协同软件的开发经验,结合国内企业实际需求,致力于本土企业工作流软件研发,workflow系统定制开 ...

  4. 自己写一个爬虫 copider

    copider 模仿scrapy的一些写法,当然我这个是单进程的,不是异步的 1.目录 copider/copider.py #coding=utf-8 ''' Created on 2015年10月 ...

  5. https Full Handshake

    1)加密套件交互: 2)密码交换: 3)身份认证: Full Handshake Initially, client and server "agree upon" null en ...

  6. C# Winform 获得下拉框 选中的值

    string PrintName = cmbPrinter.SelectedIndex.ToString(); PrintName = cmbPrinter.SelectedItem.ToString ...

  7. ES6 Array返回只出现一次的元素

    234

  8. 基于jquery的常见函数封装

    /// <reference path="jquery-1.8.0.min.js" />/** DIV或元素居中* @return*/jQuery.fn.mCenter ...

  9. 23.match_phrase_prefix实现search-time搜索推荐

    主要知识点: 搜索推荐的使用场景 用法 原理 一.搜索推荐的使用场景 搜索推荐,就是在你做搜索时,当你写出一部搜索词时,es会自提示接下来要写的词,比如当你在搜索hello w 时,如果es中有如下文 ...

  10. sudo dpkg-reconfigure phpmyadmin命令,重新配置一遍phpmyadmin

    sudo dpkg-reconfigure phpmyadmin命令,重新配置一遍phpmyadmin