description

loj 3211

solution

看到题目中要求每种主要食材至多在一半的菜中被使用,容易想到补集转换。

即\(ans=\)总方案数-存在某一种食材在一半以上的菜中被使用的方案。

总方案数很容易求:即对于每一种烹饪方法选至多一道菜的方案为\(s_i+1\),其中\(s_i=\sum_{j=1}^{m} a_{i,j}\)。

故总方案数\(=\prod_{i=1}^{n} (s_i+1)-1\),其中-1是因为要去掉一道菜都没有选的方案。

而不合法的方案,我们可以先钦定第\(w\)列中选出了一半以上的数,于是可以用\(f_{i,j,k}\)表示前\(i\)行中已经在第\(w\)列选了\(j\)个数,在其他列选了\(k\)个数的方案。于是有:

\[f_{i,j,k}=f_{i-1,j,k}+a_{i,w}*f_{i-1,j-1,k}+(s_i-a_{i,w})*f_{i-1,j,k-1}
\]

于是答案就是所有满足\(j>k\)的\(f_{n,j,k}\)的和,可以$O(mn^3)做。

考虑优化,事实上我们一直只关心\(j-k\)的大小,于是可以将状态改为\(f_{i,j}\)表示前\(i\)行中,第\(w\)列比其他列多选\(j\)个数的方案。于是有:

\[f_{i,j}=f_{i-1,j}+a_{i,w}*f_{i-1,j-1}+(s_i-a_{i,w})*f_{i-1,j+1}
\]

于是答案就是\(\sum_{i=1}^{n} f_{n,i}\),就可以\(O(mn^2)\)完成,可以通过此题。

为了防止出现负数下标,可以将下标整体加\(n\)

code

#include<cstdio>
#include<cstring>
const int mod=998244353;
const int N=210;
int a[N][2010],s[N],tot=1,bad,n,m,f[N][N];
int add(int x,int y){return (x+y>=mod)?x+y-mod:x+y;}
int dec(int x,int y){return (x-y<0)?x-y+mod:x-y;}
int main(){
freopen("meal.in","r",stdin);
freopen("meal.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j) scanf("%d",&a[i][j]),s[i]=add(s[i],a[i][j]);
tot=1ll*tot*(s[i]+1)%mod;
}
for(int w=1;w<=m;++w){
std::memset(f,0,sizeof(f));
f[0][n]=1;
for(int i=1;i<=n;++i){
for(int j=n-i;j<=n+i;++j){
f[i][j]=f[i-1][j];
f[i][j]=add(f[i][j],1ll*f[i-1][j-1]*a[i][w]%mod);
f[i][j]=add(f[i][j],1ll*f[i-1][j+1]*dec(s[i],a[i][w])%mod);
}
}
for(int i=n+1;i<=n+n;++i)tot=dec(tot,f[n][i]);
}
printf("%d\n",dec(tot,1));
return 0;
}

「CSP-S 2019」Emiya 家今天的饭的更多相关文章

  1. [CSP-S 2019 Day2]Emiya家今天的饭

    思路: 这种题目就考我们首先想到一个性质.这题其实容易想到:超限的菜最多只有一个,再加上这题有容斥那味,就枚举超限的菜然后dp就做完了. 推式子能力还是不行,要看题解. 式子还需要一个优化,就是废除冗 ...

  2. 洛谷P5664 Emiya 家今天的饭 问题分析

    首先来看一道我编的题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共 ...

  3. 洛谷P5664 Emiya 家今天的饭 题解 动态规划

    首先来看一道题题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 ...

  4. 【CSP-S 2019】【洛谷P5664】Emiya 家今天的饭【dp】

    题目 题目链接:https://www.luogu.org/problem/P5664 Emiya 是个擅长做菜的高中生,他共掌握 \(n\) 种烹饪方法,且会使用 \(m\) 种主要食材做菜.为了方 ...

  5. 【CSP-S 2019】D2T1 Emiya 家今天的饭

    Description 传送门 Solution 算法1 32pts 爆搜,复杂度\(O((m+1)^n)\) 算法2 84pts 裸的dp,复杂度\(O(n^3m)\) 首先有一个显然的性质要知道: ...

  6. LOJ#6713. 「EC Final 2019」狄利克雷 k 次根 加强版

    题目描述 定义两个函数 \(f, g: \{1, 2, \dots, n\} \rightarrow \mathbb Z\) 的狄利克雷卷积 \(f * g\) 为: \[ (f * g)(n) = ...

  7. Emiya家今天的饭 NOIP2019 (CSP?) 类DP好题 luoguP5664

    luogu题目传送门! 首先,硬求可行方案数并不现实,因为不好求(去年考场就这么挂的,虽然那时候比现在更蒟). 在硬搞可行方案数不行之后,对题目要求的目标进行转换: 可行方案数 = 总方案数 - 不合 ...

  8. 「LOJ 3153」 「JOI Open 2019」三级跳

    题面 LOJ 3153 solution 对于任意一对\(A,B\),若区间\([A,B]\)中存在一个数权值大于\(A\)或\(B\),则用这个数来替代\(A\)或\(B\)显然更优. 故只需要考虑 ...

  9. CSP-S 2019 Emiya 家今天的饭

    64 pts 类似 乌龟棋 的思想,由于 \(64pts\) 的 \(m <= 3\), 非常小. 我们可以设一个 \(dp\),建立 \(m\) 个维度存下每种物品选了几次: \(f[i][A ...

随机推荐

  1. Scala 特殊符号含义

    date: 2019-08-01 11:15:27 updated: 2019-08-22 15:22:32 Scala 特殊符号含义 参考地址 1. ::: :::(三个冒号)只用于连接两个 Lis ...

  2. Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  3. ui 自动化的测试用例从哪来

    从手工测试当中选取,尽量选择 1.简单且需要反复回归 2.稳定且不会经常变化 3.优先覆盖核心功能

  4. Java学习的第三十二天

    1. 2.综合例题没太看懂 3.明天复习第十二章

  5. Jumpserver简介,部署使用

    Jumpserver简介 Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为亏联网企业提供了认证,授权,审计,自动化运维等功能,基于ssh协议来管理,客户端无需 ...

  6. [POJ 2821]TN's Kindom III(任意长度循环卷积的Bluestein算法)

    [POJ 2821]TN's Kindom III(任意长度循环卷积的Bluestein算法) 题面 给出两个长度为\(n\)的序列\(B,C\),已知\(A\)和\(B\)的循环卷积为\(C\),求 ...

  7. 2.1获取Git仓库-2.2记录每次更新到仓库

    2.1 获取 Git 仓库 获取 Git 仓库通常有两种方式 将尚未进行版本控制的本地目录转换为 Git 仓库: 从其它服务器 克隆 一个已存在的 Git 仓库. 在已存在目录中初始化仓库 首先进入该 ...

  8. ci之 core下CodeIgniter源码分析(1)

    ci 执行流程 index.php 文件 加载codeigniter文件 codeigniter部分里面加载的: 加载配置文件constants 加载全局公共函数core/Common.php 文件 ...

  9. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  10. Ocelot快速入门教程

    Ocelot是什么 Ocelot是一个用.NET Core实现并且开源的API网关,就像一个公司的门卫承担着寻址.限制进入.安全检查.位置引导.等等功能.它的功能包括了:路由.请求聚合.服务发现.认证 ...