There are different kinds of transport ships on the port. The ith kind of ship can carry the weight of V[i]V[i] and the number of the ith kind of ship is 2c[i]-12^{C[i]} - 12. How many different schemes there are if you want to use these ships to transport cargo with a total weight of S?

It is required that each ship must be full-filled. Two schemes are considered to be the same if they use the same kinds of ships and the same number for each kind.

Input

The first line contains an integer T(1≤T≤20), which is the number of test cases.

For each test case:

The first line contains two integers: N(1≤N≤20)Q(1≤Q≤10000), representing the number of kinds of ships and the number of queries.

For the next lines, each line contains two integers: V[i](1≤V[i]≤20), C[i](1C[i]≤20), representing the weight the ith kind of ship can carry, and the number of the ith kind of ship is 2c[i]-1.

For the next Q lines, each line contains a single integer: S(1≤S≤10000), representing the queried weight.

Output

For each query, output one line containing a single integer which represents the number of schemes for arranging ships. Since the answer may be very large, output the answer modulo 10000000071000000007.

样例输入

1
1 2
2 1
1
2

样例输出

0
1

题意:

有N种船只,每种船只的载货量为V[i](以下代码用w[i]表示),每种船只的数量为2^c[i]-1。接下来有Q次询问,每次问有多少种载货方式可以填满容量S。

思路:

如果用裸的01背包的话时间复杂度是O(N*2^c[i]*10000),显然会超时,但是我们可以把每一种船合并,比如船只有2n-1艘的话,就拆成20+21+22+...+2n-1,1~2n-1之中的任意一个数都可以由拆分出来的数组成,将所有合并后的结果进行一次多重背包即可。

#include<bits/stdc++.h>
using namespace std;
const int MAX=1e4;
const int mod=1e9+;
typedef long long ll;
int w[],c[];
ll dp[MAX+];
int main()
{
int n,i,T,q,s,j,k;
ios::sync_with_stdio(false);
cin>>T;
while(T--)
{
cin>>n>>q;
for(i=;i<=n;i++)
cin>>w[i]>>c[i];
memset(dp,,sizeof(dp));
dp[]=;
for(i=;i<=n;i++) //共n种船
{
int t=;
for(j=;j<=c[i];j++)//每种船有2^c[i]-1只
{
for(k=MAX;k>=t*w[i];k--)
dp[k]=(dp[k]+dp[k-t*w[i]])%mod;
t<<=;
}
}
while(q--)
{
cin>>s;
cout<<dp[s]<<endl;
}
}
return ;
}

【2018 ICPC焦作网络赛 K】Transport Ship(多重背包二进制优化)的更多相关文章

  1. 2018 焦作网络赛 K Transport Ship ( 二进制优化 01 背包 )

    题目链接 题意 : 给出若干个物品的数量和单个的重量.问你能不能刚好组成总重 S 分析 : 由于物品过多.想到二进制优化 其实这篇博客就是存个二进制优化的写法 关于二进制优化的详情.百度一下有更多资料 ...

  2. ACM-ICPC 2018 焦作赛区网络预赛 K Transport Ship (多重背包)

    https://nanti.jisuanke.com/t/31720 题意 t组样例,n种船只,q个询问,接下来n行给你每种船只的信息:v[i]表示这个船只的载重,c[i]表示这种船只有2^(c[i] ...

  3. 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat

    题意:四个操作,区间加,区间每个数乘,区间的数变成 2^64-1-x,求区间和. 题解:2^64-1-x=(2^64-1)-x 因为模数为2^64,-x%2^64=-1*x%2^64 由负数取模的性质 ...

  4. 【2018 ICPC焦作网络赛 G】Give Candies(费马小定理+快速幂取模)

    There are N children in kindergarten. Miss Li bought them N candies. To make the process more intere ...

  5. 2018 ICPC 沈阳网络赛

    2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...

  6. 2018 ICPC 徐州网络赛

    2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...

  7. ACM-ICPC 2018 焦作赛区网络预赛 K. Transport Ship(DP)

    题目链接:https://nanti.jisuanke.com/t/31720 题意:有n种飞船,每种飞船有(1 << c)- 1  艘,容量为 k[i] ,q 次询问,每次询问选若干艘飞 ...

  8. 2018 ICPC南京网络赛 L Magical Girl Haze 题解

    大致题意: 给定一个n个点m条边的图,在可以把路径上至多k条边的权值变为0的情况下,求S到T的最短路. 数据规模: N≤100000,M≤200000,K≤10 建一个立体的图,有k层,每一层是一份原 ...

  9. 2018 ICPC青岛网络赛 B. Red Black Tree(倍增lca好题)

    BaoBao has just found a rooted tree with n vertices and (n-1) weighted edges in his backyard. Among ...

随机推荐

  1. CentOS7卸载OpenJDK,并安装Oracle官方JDK

    一.准备工具 yum源挂载已就绪:CentOS7本地yum源挂载. jdk-8u201-linux-x64.tar.gz,JDK安装包: 注意:在Linux配置JDK版本要求_jdk1.8+; 二.卸 ...

  2. Csharp: FreeTextbox 编辑器控件运行时错误: 'FTB_ResizeGalleryArea' 未定义

    ftb.imagegallery.aspx 改一下代码: <form id="Form1" runat="server" enctype="mu ...

  3. angular1结合webpack构建工具

    目录结构 webpack.config.js const { resolve } = require('path') const webpack = require('webpack') const ...

  4. ASP.NET全局异常处理

    Web项目部署后,异常直接暴露给用户会产生很不好的体验.只是暴露在服务器端又无法实时记录异常原因以便加以重现并修复.所以配合Log4Net记录日志信息,同时全局异常处理来营造良好用户体验就比较重要了. ...

  5. Linux 学习 一, useradd

    安装好VMware 安装好Linux 在安装Linux时候,建立了一个用户,dragon, 和密码...这个用户不是root用户,没有root权限 可以切换dragon 到用户root,这个时候就有r ...

  6. SCI收录的期刊查询

    SCI   收录的期刊查询(动态) 1.Science Citation Index (SCI)收录期刊查询地址:http://www.isinet.com/cgi-bin/jrnlst/jlopti ...

  7. Jmeter性能测试 入门--转载

    转载: Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmete ...

  8. CNN 和RNN 中input 长度不一致问题

    转自:https://www.jianshu.com/p/86d667ee3c62,感谢分享! pad_sequences & Masking layer 上面提到,文本数据也可以用CNN来处 ...

  9. C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题

    转自:http://blog.csdn.net/zskof/article/details/3475182 注:C++有着与C不同的名称修饰,主要是为了解决重载(overload):调用约定则影响函数 ...

  10. C#设计模式之代理模式(一)

    原文地址:http://blog.csdn.net/lovelion/article/details/8227953 代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时 ...