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 ;
}

4800: [Ceoi2015]Ice Hockey World Championship(折半搜索)的更多相关文章

  1. 【bzoj4800】[Ceoi2015]Ice Hockey World Championship 折半搜索

    题目描述 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. 输入 第一行两个数n,m代表物品数量及钱数 第二行n个数,代表每个物品的价格 n<=40,m<=10^18 输出 一行 ...

  2. 【BZOJ4800】[Ceoi2015]Ice Hockey World Championship Meet in the Middle

    [BZOJ4800][Ceoi2015]Ice Hockey World Championship Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Input 第一 ...

  3. 【BZOJ4800】[Ceoi2015]Ice Hockey World Championship (meet in the middle)

    [BZOJ4800][Ceoi2015]Ice Hockey World Championship (meet in the middle) 题面 BZOJ 洛谷 题解 裸题吧,顺手写一下... #i ...

  4. 【bzoj4800】: [Ceoi2015]Ice Hockey World Championship dfs

    [bzoj4800]: [Ceoi2015]Ice Hockey World Championship N<=40所以如果直接dfs背包会TLE 考虑Meet-in-the-middle 如果把 ...

  5. bzoj4800 [Ceoi2015]Ice Hockey World Championship

    Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Input 第一行两个数n,m代表物品数量及钱数 第二行n个数,代表每个物品的价格 n<=40,m<=1 ...

  6. BZOJ_4800_[Ceoi2015]Ice Hockey World Championship_双指针

    BZOJ_4800_[Ceoi2015]Ice Hockey World Championship_双指针 Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Inpu ...

  7. [luogu4799 CEOI2015 Day2] 世界冰球锦标赛(折半搜索)

    传送门 Solution 折半搜索裸题,注意\(long long\) Code #include <cmath> #include <cstdio> #include < ...

  8. 【BZOJ4800】[CEOI2015 Day2]世界冰球锦标赛 (折半搜索)

    [CEOI2015 Day2]世界冰球锦标赛 题目描述 译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.\(Bob ...

  9. 折半搜索【p4799】[CEOI2015 Day2]世界冰球锦标赛

    Description 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会去看所有的比赛.不幸的是,他 ...

随机推荐

  1. Beat---hdu2614

    http://acm.hdu.edu.cn/showproblem.php?pid=2614 题目大意   题目就不粘了  就是一个简单的深搜  由于我深搜实在是不懂  就在写一个博客记录一下 #in ...

  2. Java调用WSDL接口

    1.首先准备jar包: 2.代码调用如下: String url="url地址"; QName qName=new QName("命名空间","接口名 ...

  3. java的计时:毫秒、纳秒

    System.currentTimeMillis()获取毫秒值,但是其精度依赖操作系统 想实现较为精确的毫秒,可以采用 System.nanoTime()/1000000L System.nanoTi ...

  4. ext.net 2.5 导出excel的使用方法

    前台页面的导入,导出 <ext:FileUploadField ID="FileUploadField_Import" runat="server" Bu ...

  5. 使用Blender批量导出/转换模型

    2.4版本号的Blender API和2.5以上版本号的API有非常大的不同,这里仅仅是提供了思路和2.4版本号的导出方案. 先提供一个脚本,这个是由Blender调用的.用于转换Ogre的Mesh文 ...

  6. iOS与HTML交互问题

    一. 加载后台传过来的HTML标签,文字都能正常显示但是图片显示不了.找问题找了很久没有发现那个地方写错,也问了别人都不知道,后来问了Android才知道,后台传过来的HTML标签,有些是转义过的.移 ...

  7. GridView根据一列自动计算(转载)

    <%@ Page Language="C#" %> <%@ Import Namespace="System.Xml" %> <! ...

  8. 2016/04/13 ①html 中各种分割线------------------------------------------ ② 控制文字显示

    ①各种分割线Html代码 1.<HR> 2.<HR align=center width=300 color=#987cb9 SIZE=1>align 线条位置(可选left. ...

  9. WebService注解汇总

    Web Service 元数据注释(JSR 181) @WebService 1.serviceName: 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service.缺省值 ...

  10. 设置一个DIV块固定在屏幕中央(两种方法)

    设置一个DIV块固定在屏幕中央(两种方法) 方法一: 对一个div进行以下设置即可实现居中. <style> #a{ position: fixed; top: 0px; left: 0p ...