题目链接:https://nanti.jisuanke.com/t/31720

题意:有n种飞船,每种飞船有(1 << c)- 1  艘,容量为 k[i] ,q 次询问,每次询问选若干艘飞船使得容量为 s 的方案数。

题解:预处理出全部情况。dp[ i ][ j ]表示选前 i 个物品凑出容量为 k 的方案数,转移的时候可注意到dp[ i ][ j ] = sigma(dp[i - 1][j - x * v ]),然后减掉不合法的情况(x > ( (1 << c) - 1) )。详见代码~

 #include <bits/stdc++.h>
using namespace std;
#define ll long long
#define LL __int128
#define ull unsigned long long
#define mst(a,b) memset((a),(b),sizeof(a))
#define mp(a,b) make_pair(a,b)
#define fi first
#define se second
#define pi acos(-1)
#define pii pair<int,int>
#define pb push_back
const int INF = 0x3f3f3f3f;
const double eps = 1e-;
const int MAXN = 1e4 + ;
const int MAXM = 1e6 + ;
const ll mod = 1e9 + ; ll dp[][MAXN]; int main()
{
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
int t;
scanf("%d",&t);
while(t--) {
int n,q;
scanf("%d%d",&n,&q);
mst(dp, );
dp[][] = ;
for(int i = ; i <= n; i++) {
int c,v;
scanf("%d%d",&v,&c);
c = ( << c) * v;
for(int j = ; j < v; j++) dp[i][j] = dp[i - ][j];
for(int j = v; j <= ; j++) {
dp[i - ][j] += dp[i - ][j - v];
if(dp[i - ][j] >= mod) dp[i - ][j] -= mod;
dp[i][j] = dp[i - ][j];
if(j >= c) {
dp[i][j] -= dp[i - ][j - c];
if(dp[i][j] < ) dp[i][j] += mod;
}
}
}
while(q--) {
int s;
scanf("%d",&s);
printf("%lld\n",dp[n][s]);
}
}
return ;
}

最新文章

  1. 云服务器 Centos7.0 部署
  2. androidannotations 简单复制与点击事件(1)
  3. jQuery插件(拖拽)
  4. Python中的range函数用法
  5. JS 操作 DOM
  6. 用ProGet搭建内部的NuGet服务器(更新安装步骤)
  7. 1301. The Trip
  8. 使用Chrome工具来分析页面的绘制状态
  9. VC++2010下编译STLport,Boost
  10. MYSQL的存储引擎一般只要哪些?
  11. linux命令之ps命令
  12. Opencv学习笔记(六)SURF学习笔记
  13. 改进的延时函数Delay(使用MsgWaitForMultipleObjects等待消息或超时的到来)
  14. Nginx+Apache实现反向代理
  15. 三十天学不会TCP,UDP/IP网络编程-TraceRoute的哲学
  16. 细说Ajax跨域
  17. JFinal框架
  18. February 14th, 2018 Week 7th Wednesday
  19. 应用程序与驱动程序通信 DeviceIoControl
  20. python中json.load()、json.loads()、json.dump()、json.dumps()的区别

热门文章

  1. leveldb单元测试之宏定义源码剖析
  2. Centos6.5下安装jumpserver-1.4.1报错AttributeError: module &#39;gssapi&#39; has no attribute &#39;GSSException&#39;
  3. win7 配置 用户/系统DSN (解决plsql odbc导入器 DSN 没有选项)
  4. java基础知识入门
  5. Jquery中数组转字符串,c:foreach自动将带&quot;,&quot;字符串进行拆分赋值
  6. 网络流+最小生成树的最少割边数--How Many to Be Happy?
  7. memcached基本操作指令
  8. Git安装使用秘籍
  9. Redis 的订阅发布(PUB/SUB)示例
  10. AngularJS-01.AngularJS,Module,Controller,scope