题面

题解

不考虑每种食材不超过一半的限制,答案是

减去 1 是去掉一道菜都不做的方案。

显然只可能有一种菜超过一半,于是枚举这种菜,对每个方式做背包即可(记一维状态表示这种菜比别的菜多做了多少份)。

设dp[i][j]为前i种方法中这种食材比别人多j份,

则  

于是从零开始枚举j就行了

不对,我们可以意识到dp[i][ - | j |]也对答案有影响,

所以我们设dp[i][n]为原先的dp[i][0],n以下的是负数情况

#include<cstdio>
#include<iostream>
#include<cstring>
#define LL long long
using namespace std;
int read() {
int f = 1,x = 0;char s = getchar();
while(s < '0' || s > '9') {if(s == '-') f = -1;s = getchar();}
while(s >= '0' && s <= '9') {x = x * 10 + s - '0';s = getchar();}
return x * f;
}
int mod = 998244353;
int n,m,i,j,s,o,k;
LL a[105][2005];
LL dp[2][205];
LL ans = 0;
int main() {
// freopen("meal.in","r",stdin);
// freopen("meal.out","w",stdout);
n = read();m = read();
ans = 1;
for(int i = 1;i <= n;i ++) {
for(int j = 1;j <= m;j ++) {
a[i][j] = read();
a[i][0] += a[i][j];
a[i][0] %= mod;
}
ans = ans * (a[i][0] + 1ll) % mod;
}
ans = (ans + mod - 1ll) % mod;
// printf("%lld\n",ans);
for(register int k = 1;k <= m;k ++) {
dp[0][n] = 1;
for(register int i = 1;i <= n;i ++) {
for(register int j = n + i;j >= n - i;j --) {
if(j) dp[i&1][j] = ((dp[1-(i&1)][j + 1] *1ll* (a[i][0] - a[i][k] + mod) % mod) + dp[1-(i&1)][j] + dp[1-(i&1)][j - 1] * a[i][k] % mod) % mod;
else dp[i&1][j] = ((dp[1-(i&1)][j + 1] *1ll* (a[i][0] - a[i][k] + mod) % mod) + dp[1-(i&1)][j]) % mod;
}
}
for(register int j = n + 1;j <= 2*n;j ++) {
ans = (ans + mod - dp[n&1][j]) % mod;
dp[0][j] = 0;
dp[0][j - n] = 0;
dp[1][j] = 0;
dp[1][j - n] = 0;
// printf("%lld ",dp[n&1][j]);
}//putchar('\n');
}
printf("%lld\n",ans);
return 0;
}

[CSP-S 2019 day2 T1] Emiya家今天的饭的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 「CSP-S 2019」Emiya 家今天的饭

    description loj 3211 solution 看到题目中要求每种主要食材至多在一半的菜中被使用,容易想到补集转换. 即\(ans=\)总方案数-存在某一种食材在一半以上的菜中被使用的方案 ...

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

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

  9. [CSP-S2019]Emiya 家今天的饭 题解

    CSP-S2 2019 D2T1 很不错的一题DP,通过这道题学到了很多. 身为一个对DP一窍不通的蒟蒻,在考场上还挣扎了1h来推式子,居然还有几次几乎推出正解,然而最后还是只能打个32分的暴搜滚粗 ...

随机推荐

  1. Linux离线包管理器RPM

    Linux离线包管理器RPM RPM 是RedHat Package Manager(RedHat软件包管理工具). 1.rpm常用参数介绍 查看rpm是否安装 rpm -q rpm包名 [root@ ...

  2. java编程用大小写字母及数字输出五位数验证码

    package day08; import java.util.Random;//导入util下的Random包 public class Yanzhengma { public static voi ...

  3. kafka优劣

    kafka优势 可扩展:Kafka集群可以透明的扩展,增加新的服务器进集群. 高性能:Kafka性能远超过传统的ActiveMQ.RabbitMQ等,Kafka支持Batch操作. 容错性:Kafka ...

  4. Xshell缺失mfc110u.dll文件解决方案(有下载链接)

    解决方案 把下面两个文件都下载安装就可以了. 1.vcredist_x86.exe链接: https://pan.baidu.com/s/1njbNHdjqH6x34GQvj4BTBg提取码: pwq ...

  5. SAP Web Dynpro - 应用程序中的服务调用

    您可以使用服务调用来调用Web Dynpro组件中的现有功能模块. 要创建服务呼叫,您可以使用Web Dynpro工具中易于使用的向导. 您可以在ABAP工作台中启动该向导以创建服务调用. 步骤1-选 ...

  6. ABAP CDS - Annotations 注解

    Syntax ... annotation[.annotation1[.annotation2]][:value]  ... Effect Annotation that can be specifi ...

  7. ThreadLocal的简单理解

    目录 一.背景 二.ThreadLocal解决的问题 三.如何创建一个ThreadLocal实例 四.ThreadLocal如何做到线程变量隔离 1.理解3个类 2.看下set方法是如何实现的 3.看 ...

  8. 简单性能测试:springboot-2.x vs actix-web-4.x benchmark

    性能测试:springboot-2.x vs actix-web-4.x benchmark 转载请注明出处 https://www.cnblogs.com/funnyzpc/p/15956465.h ...

  9. 广东省30m二级分类土地利用数据(矢量)

    数据下载链接:百度云下载链接​ 广东省,地处中国大陆最南部,属于东亚季风区,从北向南分别为中亚热带.南亚热带和热带气候,是中国光.热和水资源最丰富的地区之一.主要河系为珠江的西江.东江.北江和三角洲水 ...

  10. Linux操作系统(3):crond 任务调度

    crontab 进行 定时任务的设置.概述: 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行.如病毒扫描等 2.个别用户工作:个别 ...