2019 CSP-S Day2 T1 Emiya 家今天的饭(DP)

题目

Description

在这里插入图片描述
在这里插入图片描述

Input

在这里插入图片描述

Output

输出到文件 meal.out 中。
仅一行一个整数,表示所求方案数对 998, 244, 353 取模的结果。

Sample Input

Sample Input1
2 3
1 0 1
0 1 1
在这里插入图片描述
Sample Input2
3 3
1 2 3
4 5 0
6 0 0
在这里插入图片描述
Sample Input3
5 5
1 0 0 1 1
0 1 0 1 0
1 1 1 1 0
1 0 1 0 1
0 1 1 0 1

Sample Output

Sample Output1
3

Sample Output2
190

Sample Output3
742

Data Constraint

在这里插入图片描述

题解

  • 作为联赛的Day2-T1,理论上应该AC是应该不难的,
  • 但是,这道题偏偏难倒了我。。。考场上简直觉得这是神仙题!!!
  • 赛后一想,这题并没有那么难,随着一档又一档部分分的实现,我离正解越来越近,
  • 不得不说,这是一道质量很高的题(其实联赛题质量都挺高的),主要体现在分了许多子任务和它们各自的不同与联系。
  • 开始进入正题——
  • 观察满分数据大小,猜测正解的复杂度应该是 O ( n 2 m ) O(n^2m) O(n2m)的。
  • 先想最简单的暴力怎么做?
  • 暴力搜索每种烹饪方法选用什么食材或不选该种烹饪方法,时间复杂度 O ( m n ) O(m^n) O(mn),期望得分32分。
  • 发现每次DFS到下一种烹饪方法时,最多一种食材数量改变,
  • 又看到有64分数据的 m m m特别小,想到可以DP,先枚举总共选多少种烹饪方法,再设 f [ i ] [ j ] [ k ] [ l ] f[i][j][k][l] f[i][j][k][l]表示当前选到第 i i i种食材, m m m种食材分别选了 j , k , l j,k,l j,k,l个的方案数,如果 m = 1 m=1 m=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值