题意

题目链接

分析

  • 直接背包之后可以 \(O(n)\) 去除一个物品的影响。

  • 注意特判 \([p==1]\) 的情况。

  • 总时间复杂度为 \(O(n^2)\) 。

代码

#include<bits/stdc++.h>
using namespace std;
#define go(u) for(int i=head[u],v=e[i].to;i;i=e[i].last,v=e[i].to)
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pb push_back
typedef long long LL;
inline int gi(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-48;ch=getchar();}return x*f;
}
template<typename T>inline bool Max(T &a,T b){return a<b?a=b,1:0;}
template<typename T>inline bool Min(T &a,T b){return b<a?a=b,1:0;}
const int N=2004,mod=998244353;
int n;
LL p[4][N],w[4][4],f[N],tmp[N],ans[N];
LL Pow(LL a,LL b){LL res=1;for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) res=res*a%mod;return res;
}
void solve(int k){memset(f,0,sizeof f);f[0]=1;rep(i,1,n){LL p=::p[k][i];for(int j=n;~j;--j)f[j]=((j-1>=0?f[j-1]:0)*p+f[j]*(1-p))%mod;}rep(i,1,n){LL p=::p[k][i];LL inv=Pow(1-p,mod-2);if(p^1){tmp[0]=f[0]*inv%mod;rep(j,1,n) tmp[j]=(f[j]-.tmp[j-1]*p)%mod*inv%mod;}elserep(j,0,n-1) tmp[j]=f[j+1];LL sum=0;for(int j=n/2+1;j<n;++j) (sum+=tmp[j])%=mod;rep(a,0,3)(ans[i]+=(sum+(k==a)*tmp[n/2])*::p[a][i]%mod*w[k][a]%mod)%=mod;}
}
int main(){n=gi();rep(i,1,n) rep(j,0,3) p[j][i]=gi();rep(i,0,3) rep(j,0,3) w[i][j]=gi();rep(k,0,3) solve(k);rep(i,1,n) printf("%lld\n",(ans[i]+mod)%mod);return 0;
}

转载于:https://www.cnblogs.com/yqgAKIOI/p/9829494.html

牛客网NOIP赛前集训营-提高组(第六场)B-选择题[背包]相关推荐

  1. 牛客网NOIP赛前集训营 提高组 第5场 T2 旅游

    [题解] 我们可以发现不在最小生成树上的边一定不能多次经过,因为一条不在最小生成树上的边(u,v)的边权比最小生成树上(u,v)之间的路径更长,选择不在最小生成树上的边一定不划算. 我们还需要确定最小 ...

  2. 牛客网NOIP赛前集训营 提高组(第七场)

    中国式家长 2 链接:https://www.nowcoder.com/acm/contest/179/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K ...

  3. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题

    题目描述 有一道选择题,有 a,b,c,d 四个选项. 现在有 n 个人来做这题,第 i 个人有 pi,j 的概率选第 j 个选项. 定义\(cnt(x)\)为选第$ x $个选项的人数. 令\(mx ...

  4. [NowCoder]牛客网NOIP赛前集训营-提高组(第六场)题解

    A.最长路 题意:给定有向图,每条边有个字符\([0,10^9]\),求每个点最长路字典序最小的方案.\(N,M\le 10^6\) 建反图跑拓扑排序,显然入过队的点都有最长路,考虑如何判断字典序大小 ...

  5. 牛客网NOIP赛前集训营-提高组(第七场)C 洞穴

    洞穴 思路: 矩阵乘法 由于只需要知道 A ^ l 的 第a行第b个元素 所以我们每次在做矩阵乘法时只需要算第a行就可以了 还要像矩阵快速幂一样预处理A ^ (1<<d) 代码: #pra ...

  6. 牛客网NOIP赛前集训营-提高组(第七场)C-洞穴

    题目描述 有一天,牛牛找到了一个巨大的洞穴.洞穴可以描述成一个有向图,一共有\(N\)个节点(从\(1\)到\(N\)编号)和\(M\)条长度为\(1\)的有向边,每条边从某一个节点\(u\)连向另一 ...

  7. 【题解】[牛客网NOIP赛前集训营-提高组(第七场)]C.洞穴 倍增优化DP+bitset

    题目链接 #include<cstdio> #include<bitset> using namespace std; const int N=110; int n,m,q; ...

  8. 牛客网NOIP赛前集训营-普及组(第一场)

    前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...

  9. Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)

    啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...

最新文章

  1. 决策树算法十问及经典面试问题
  2. 走过19年,每年千万下载量,科学计算开源库SciPy的前世今生
  3. python横向柱状图-python绘制横向水平柱状条形图Bar
  4. 恢复快速启动栏里的“显示桌面”图标
  5. 【LeetCode】拓扑排序
  6. 清华大学 lt;现代软件工程gt; 项目小组名单
  7. Python实时获取鼠标下窗口文本
  8. python一切都是对象 知乎_python一切皆对象
  9. AweEraser for Mac如何永久删除笔记本电脑上的数据?
  10. 下载zxing的网址
  11. 用python打印心形_Python和Js打印心形
  12. IIS无法启动:存储空间不足解决办法
  13. python的flask前端显示图片_Python flask框架如何显示图像到web页面
  14. 爬取34万专栏文章:304篇10K+高赞文章汇总
  15. 学编程c语言高考能加分吗,编程已列入中高考,孩子升学加分的机会能否抓住?...
  16. 【常用命令】一键屏幕截屏操作
  17. html check选中状态,html checkbox选中
  18. 简单的电源隔离和信号地,电源地的处理
  19. 【安装软件】 win10安装iTunes报错:“此Windows Installer软件包有一个问题。完成此安装需要......”的解决方式
  20. Ubuntu20.04|最新一版的深度学习基础环境安装指导

热门文章

  1. [数论]莫比乌斯反演1
  2. Android深度探索(卷1)HAL与驱动开发 读书笔记(第四章)
  3. nehe教程混合这一节需要注意的两个地方
  4. 不等式约束的拉格朗日乘数法_Abaqus血管支架仿真|接触约束执行方式
  5. SpatialHadoop中空间索引系列之(四)空间格网索引实现
  6. centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)
  7. java自动化_作为测试工程师进阶自动化选Java还是Python?
  8. java取邮箱前缀_java抓取网页或文件中的邮箱号码
  9. 产品经验谈:设计思维 统计思维
  10. 两个数组合成一个json对象_两个jsonarray合并