题解

Cqz大佬在代码上的注释:

前i个物品,做成体积为j的东西,有多少种方案数

后i个物品,做成体积为j的东西,有多少种方案书(大佬打错了)

两个DP数组合并。 做不到?

其实就是把中间那段切断,然后把左右两边合并。

贴一段代码吧:

Rep(i,1,n)
{
Dep(j,m,v[i])
f[i][j] = (f[i-1][j] + f[i-1][j - v[i]])%Mod;
Dep(j,v[i]-1,0)
f[i][j] = f[i-1][j];
}
g[n+1][0] = 1;
Dep(i,n,1)
{
Dep(j,m,v[i])
g[i][j] = (g[i+1][j] + g[i+1][j - v[i]])%Mod;
Dep(j,v[i]-1,0)
g[i][j] = g[i+1][j];
}
Rep(i,1,n)
{
ll ans = 0;
Rep(j,0,m)
ans = (ans + (1ll * f[i-1][j] * g[i+1][m-j] % Mod)) % Mod;//注意合并阶段一定要开long long
writeln(ans);
}

zd大佬&sxd大佬的做法

先跑一遍01背包,要删除一段时,倒着跑一遍。请教了两位大佬,然而好像都无法证明。但在感性上应该是可以理解的(极其具有对称性)。

这个的代码就简单多了:

dp[0] = 1;
for(int i = 1; i <= n; ++i)
for(int j = m; j >= v[i]; --j)
dp[j] = (dp[j]+dp[j-v[i]])%mod;
for(int i = 1; i <= n; ++i)
{
for(int j = 0; j <= m; ++j)
f[j] = dp[j];
for(int j = v[i]; j <= m; ++j)
f[j] = ((f[j]-f[j-v[i]])%mod+mod)%mod;
writeln(f[m]);
}

听说yyh大佬有一种容斥做法,然而我看不懂啊……只好直接贴代码了:

f[0]=1;
for(LL i=1; i<=n; i++)
{
a[i]=read();
for(LL j=m; j>=a[i]; j--)
(f[j]+=f[j-a[i]])%=md;
}
for(LL i=1; i<=n; i++)
{
ans=f[m];
for(LL j=1; j*a[i]<=m; j++)
{
if(j&1)
(ans-=f[m-j*a[i]])%=md;
else
(ans+=f[m-j*a[i]])%=md;
}
printf("%lld\n",(ans%md+md)%md);
}

20180516模拟赛T3——bag的更多相关文章

  1. 体育成绩统计——20180801模拟赛T3

    体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...

  2. 20180520模拟赛T3——chess

    [问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...

  3. 20161005 NOIP 模拟赛 T3 解题报告

    subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...

  4. ztz11的noip模拟赛T3:评分系统

    代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  5. 20180711模拟赛T3——聚变

    文件名: fusion 题目类型: 传统题 时间限制: 3秒 内存限制: 256MB 编译优化: 无 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程. 我们将她研究的过程简化. 核 ...

  6. 4.26 省选模拟赛 T3 状压dp 差分求答案

    LINK:T3 比较好的题目 考试的时候被毒瘤的T2给搞的心态爆炸 这道题连正解的思路都没有想到. 一看到题求删除点的最少个 可以使得不连通. 瞬间想到最小割 发现对于10分直接跑最小割即可. 不过想 ...

  7. NOIP欢乐模拟赛 T3 解题报告

    3.小澳的葫芦 (calabash.cpp/c/pas) [题目描述] 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界 ...

  8. 字符串模拟赛T3

    只看我的做法就够了 #include<iostream> #include<cstdio> #include<string> #include<cstring ...

  9. 神奇的NOIP模拟赛 T3 LGTB 玩THD

    LGTB 玩THD LGTB 最近在玩一个类似DOTA 的游戏名叫THD有一天他在守一座塔,对面的N 个小兵排成一列从近到远站在塔前面每个小兵有一定的血量hi,杀死后有一定的金钱gi每一秒,他都可以攻 ...

随机推荐

  1. hread.interrupt()到底意味着什么

    首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止. 所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了.而 Threa ...

  2. [转帖]String、StringBuilder与StringBuffer

    String.StringBuilder与StringBuffer https://www.jianshu.com/p/37f3799bdb56 1.String String本质 String是不可 ...

  3. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  4. CSP2019-S游记

    目录 CSP2019-S游记 Day -2(UPDATE:2019-11-14) Day -1(UPDATE:2019-11-15) Day 1(UPDATE:2019-11-16) Day 2(UP ...

  5. SQL系列(四)—— 唯一值(distinct)

    有时需要查询某列上的不重复的数据,如: SELECT name FROM student; 结果: name lxy lxy lxy lxy 这样的结果显然不符合我们的需求.如何对列数据进行去重,查询 ...

  6. WPF矢量字体图标(iconfont)

    原文:WPF矢量字体图标(iconfont) 转载:点击打开链接 步骤: 一.下载添加iconfont文件 二.添加到资源文件夹,并设置不复制,且为资源文件 三.增加FIcon.xaml文件 < ...

  7. c#winform简单实现Mysql数据库的增删改查的语句

    通过简单的SQL语句实现对数据库的增删改查. 窗口如下: 定义打开与关闭连接函数,方便每次调用: 增加指令: 删除指令: 修改指令: 查找指令: 表格情况:

  8. DevExpress之GridControl控件小知识

    DevExpress之GridControl控件小知识 一.当代码中的DataTable中有建数据关系时,DevExpress 的 GridControl 会自动增加一个子视图 .列名也就是子表的字段 ...

  9. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  10. Django 中使用 MarkDown 插件

    目录 Django 使用 markdown 插件 1 将 markdown 转化为 html 2 使用 markdown 编辑框 Django 使用 markdown 插件 Python-Markdo ...