题目链接:

E. The Values You Can Make

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Pari wants to buy an expensive chocolate from Arya. She has n coins, the value of the i-th coin is ci. The price of the chocolate is k, so Pari will take a subset of her coins with sum equal to k and give it to Arya.

Looking at her coins, a question came to her mind: after giving the coins to Arya, what values does Arya can make with them? She is jealous and she doesn't want Arya to make a lot of values. So she wants to know all the values x, such that Arya will be able to make xusing some subset of coins with the sum k.

Formally, Pari wants to know the values x such that there exists a subset of coins with the sum k such that some subset of this subset has the sum x, i.e. there is exists some way to pay for the chocolate, such that Arya will be able to make the sum x using these coins.

Input

The first line contains two integers n and k (1  ≤  n, k  ≤  500) — the number of coins and the price of the chocolate, respectively.

Next line will contain n integers c1, c2, ..., cn (1 ≤ ci ≤ 500) — the values of Pari's coins.

It's guaranteed that one can make value k using these coins.

Output

First line of the output must contain a single integer q— the number of suitable values x. Then print q integers in ascending order — the values that Arya can make for some subset of coins of Pari that pays for the chocolate.

Examples
input
6 18
5 6 1 10 12 2
output
16
0 1 2 3 5 6 7 8 10 11 12 13 15 16 17 18
input
3 50
25 25 50
output
3
0 25 50 题意: n个数,现在取和为k的数,用这些数能组成哪些数; 思路: dp[i][j]表示和为i的那些数能否组成j,dp[i][j]=1表示可以,0表示不行, 现在面临第c[x],当把c[x]加到已有的集合中当dp[i][j]==1时dp[i+c[x]][j]=dp[i+c[x]][j+c[x]]=1;
转移的时候枚举i要从大到小枚举,否则当前转移的c[x]较小的和会对当前c[x]较大的和产生影响; AC代码:
//#include <bits/stdc++.h>
#include <vector>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <cstring>
#include <algorithm>
#include <cstdio> using namespace std;
#define Riep(n) for(int i=1;i<=n;i++)
#define Riop(n) for(int i=0;i<n;i++)
#define Rjep(n) for(int j=1;j<=n;j++)
#define Rjop(n) for(int j=0;j<n;j++)
#define mst(ss,b) memset(ss,b,sizeof(ss));
typedef long long LL;
template<class T> void read(T&num) {
char CH; bool F=false;
for(CH=getchar();CH<''||CH>'';F= CH=='-',CH=getchar());
for(num=;CH>=''&&CH<='';num=num*+CH-'',CH=getchar());
F && (num=-num);
}
int stk[], tp;
template<class T> inline void print(T p) {
if(!p) { puts(""); return; }
while(p) stk[++ tp] = p%, p/=;
while(tp) putchar(stk[tp--] + '');
putchar('\n');
} const LL mod=1e9+;
const double PI=acos(-1.0);
const LL inf=1e18;
const int N=+;
const int maxn=;
const double eps=1e-; int n,k;
int c[N],dp[][*N]; int main()
{
read(n);read(k);
for(int i=;i<=n;i++)
read(c[i]);
// freopen("out.txt","w",stdout);
dp[][]=;
for(int i=;i<=n;i++)
{
for(int j=k;j>=;j--)
{
if(j+c[i]<=k)
{
for(int x=;x<=k;x++)
{
if(dp[j][x])dp[j+c[i]][x]=dp[j+c[i]][x+c[i]]=;
}
}
}
}
int ans=;
for(int i=;i<=k;i++)
{
if(dp[k][i])ans++;
}
cout<<ans<<"\n";
for(int i=;i<=k;i++)
{
if(dp[k][i])printf("%d ",i);
} return ;
}

最新文章

  1. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
  2. &lt;转&gt;技术团队新官上任之基层篇
  3. Android Support Library控件详细介绍之RecyclerView
  4. 让PHP代码更危险----使用别的系统命令--如sql语句--exec(),system()方法甚至html的js语句
  5. mysql操作1
  6. Oracle 11g随Redhat 5系统自动启动与关闭的设置方法
  7. 4.1 技术原理 &amp; 4.2 键盘过滤框架
  8. [置顶] 轻量级语言Lua入门
  9. ASP.NET MVC 使用TempData
  10. ffmpeg tutorial01 再分析
  11. Java面试题合集(二)
  12. Git使用详细教程(9):git log
  13. Java基础系列--06_抽象类与接口概述
  14. day 1总结-python基础
  15. FatTree拓扑结构
  16. MathType怎么打定积分竖线
  17. mybatis源码解析1--前言
  18. C#编程(二十六)----------泛型
  19. Yii2 配置 Nginx 伪静态
  20. [LeetCode] 9.Palindrome Number - Swift

热门文章

  1. 三、Oracle常用内置函数
  2. 75. Spring Boot 定制URL匹配规则【从零开始学Spring Boot】
  3. kubernetes集群新增node
  4. SPOJ1812 - Longest Common Substring II(LCS2)
  5. linux命令1——基础
  6. CodeIgniter框架的缓存原理分解
  7. 报错:An error occurred at line: 22 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
  8. 【转】从头说catalan数及笔试面试里那些相关的问题
  9. 容器使用笔记(List篇)
  10. 【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取