4800: [Ceoi2015]Ice Hockey World Championship

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 622  Solved: 311
[Submit][Status][Discuss]

Description

有n个物品,m块钱,给定每个物品的价格,求买物品的方案数。
 

Input

第一行两个数n,m代表物品数量及钱数
第二行n个数,代表每个物品的价格
n<=40,m<=10^18
 

Output

一行一个数表示购买的方案数
(想怎么买就怎么买,当然不买也算一种)
 

Sample Input

5 1000
100 1500 500 500 1000

Sample Output

8

HINT

 

Source

#include<bits/stdc++.h>

#define N 45
#define M 1000007
#define ll long long using namespace std;
ll n,m,ans,cnt,mx,flag;
ll val[N],f[N][M]; inline ll read()
{
ll x=,f=;char c=getchar();
while(c>''||c<''){if(x=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} void dfs(int k,ll sum)
{
if(sum>m) return;
if(k==n)
{
ans++;return;
}
dfs(k+,sum);
dfs(k+,sum+val[k+]);
} void dp()
{
f[][m]=;
for(int i=;i<=n;i++) for(int j=;j<=m;j++)
{
f[i][j]+=f[i-][j]+f[i-][j+val[i]];
}
for(int i=;i<=m;i++) ans+=f[n][i];
} int main()
{
//freopen("ly.in","r",stdin);
n=read();m=read();
for(int i=;i<=n;i++) val[i]=read();
if(m<=1e6) dp();
else dfs(,);
printf("%lld\n",ans);
return ;
}

80暴力 dfs+dp

/*
折半搜索
*/
#include<bits/stdc++.h> #define ll long long
#define N 55 using namespace std;
ll n,m,mid,cnta,cntb,ans;
ll w[N],suma[<<],sumb[<<]; inline ll read()
{
ll x=,f=;char c=getchar();
while(c>''||c<''){if(x=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void dfs(int l,int r,ll sum,ll a[],ll &cnt)
{
if(sum>m)return;
if(l>r)
{
a[++cnt]=sum;return;
}
dfs(l+,r,sum+w[l],a,cnt);
dfs(l+,r,sum,a,cnt);
} int main()
{
n=read();m=read();
for(int i=;i<=n;i++)w[i]=read();;
mid=n/;
dfs(,mid,,suma,cnta);
dfs(mid+,n,,sumb,cntb);
sort(suma+,suma++cnta);
for(int i=; i<=cntb; i++)
ans+=upper_bound(suma+,suma++cnta,m-sumb[i])-suma-;
printf("%lld\n",ans);
return ;
}

最新文章

  1. [转]OAuth 2.0 - Authorization Code授权方式详解
  2. 程序代码中退出函数exit()与返回函数return ()的区别
  3. 利用jQuery和CSS实现环形进度条
  4. 【转】Sql Server参数化查询之where in和like实现详解
  5. 数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
  6. 仿iOS底部弹出popUpWindow
  7. 75. Sort Colors
  8. Objective-C介绍
  9. 【转】Ansys 13.0 flexlm not running完美解决方案
  10. 【转】25个Git用法技巧
  11. Android setContentView方法解析(一)
  12. DirectX11--HLSL编译着色器的三种方法
  13. xgb
  14. Java 200+ 面试题补充 ThreadLocal 模块
  15. Dreamweaver编辑区下方的属性栏显示
  16. 以太坊、Hyperledger Fabric和Corda,哪个更好?
  17. UPS不间断电源工作原理简述
  18. WebSphere隐藏版本号教程
  19. web理论知识--HTML结构及标签
  20. iOS five years[转]

热门文章

  1. Flatten Binary Tree to Linked List (DFS)
  2. 从 modCount 看 java集合 fail-fast 机制
  3. Linux 特殊文档说明
  4. java开发面试大全刷题整理
  5. java IO与NIO
  6. 过滤器链chain.doFilter(request,response)含义
  7. RabbitMQ Hello World
  8. 一个基于JBoss5.1+EJB3.0 登陆应用
  9. win8系统 重装系统如何删除EFI分区
  10. sqlserver中All、Any和Some用法与区别