题解:本题主要考查DP+思维。
简要题意:一个矩阵,要求每行只选一个节点,每列选的节点不能超过所有选的节点的一半,不能不选,给出每个节点的选择方案数,求总方案数。
1.DP+思维:
(1).维护每列已选的节点复杂度太大,应该不行,所以先不考虑每列不超过一半,求出总数,再减去不合法的方案数,应用逆向思维转换问题。
(2).设dp[i][j][k]dp[i][j][k]dp[i][j][k]​表示前iii行选jjj个节点,当前枚举到的列选kkk个节点的方案数,但是这样复杂度很高,必须优化。限制条件k>⌊j/2⌋k>⌊j/2⌋k>⌊j/2⌋,可以得到2k+n−j>n2k+n−j>n2k+n−j>n,就可以剪去无用状态。
转移方程:

    dp[j][k]=(dp[j][k]+dp[j-1][k]*(sum[j]-a[j][i]))%mod;dp[j][k+1]=(dp[j][k+1]+dp[j-1][k])%mod;dp[j][k+2]=(dp[j][k+2]+dp[j-1][k]*a[j][i])%mod;

代码如下:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
long long dp[201][3001],a[201][3001],sum[2001];
long long ans=1,n,m;
int mod=998244353;
int main()
{ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];sum[i]=(sum[i]+a[i][j])%mod;}ans=(ans*(sum[i]+1))%mod;} ans=(ans+mod-1)%mod;for(int i=1;i<=m;i++){memset(dp,0,sizeof(dp));dp[0][0]=1;for(int j=1;j<=n;j++)for(int k=0;k<=2*(j-1);k++){dp[j][k]=(dp[j][k]+dp[j-1][k]*(sum[j]-a[j][i]))%mod;dp[j][k+1]=(dp[j][k+1]+dp[j-1][k])%mod;dp[j][k+2]=(dp[j][k+2]+dp[j-1][k]*a[j][i])%mod;}for(int j=n+1;j<=2*n;j++)ans=(ans+mod-dp[n][j])%mod;}printf("%lld",ans);return 0;
}

CSP-S 2019————Emiya 家今天的饭————DP+思维相关推荐

  1. [CSP day2T1]Emiya 家今天的饭

    Emiya 家今天的饭 题解 挺容易的一道dp,我们可以先考虑容斥.先加上不考虑菜数不超过一半的值,再减去超过一半的部分. 表示在前i种中选j个菜的总种类,这个dp很好想, 下面就是最重要的了. 表示 ...

  2. NOIP2019 Emiya家今天的饭

    NOIP2019 Emiya家今天的饭 ACM退役选手远程口胡 csf如今真的是太菜了,最后16分的做法愣是想了一下午 考虑使用容斥方法: 1 采用动态规划,先求出在无限制情况下,安排kkk种烹饪方法 ...

  3. 【CSP-S2019】D2T1 Emiya 家今天的饭

    CSP-S2019 D2T1 Emiya 家今天的饭 题目 题目描述 Emiya 是个擅长做菜的高中生,他共掌握 nnn 种烹饪方法,且会使用 mmm 种主要食材做菜.为了方便叙述,我们对烹饪方法从 ...

  4. 2019CSP-S Day2T1 Emiya 家今天的饭 题解

    2019CSP-S Day2T1 Emiya 家今天的饭 题解 题目链接 我太菜了 64pts,m<=3m <= 3m<=3. 前64pts数据规模都差不多,因为mmm很小,考虑类似 ...

  5. Emiya家今天的饭

    题目来源: Emiya家的饭 代码 #include <bits/stdc++.h> using namespace std; const int MOD = 998244353; con ...

  6. CSP-S2019学习笔记:Emiya家今天的饭

    题目名称看样子灵感来自于日本动画片"卫宫家今天的饭". 这道题的难度是"提高+/省选-",算是提高组里比较难的.数据范围分的很细,解题方法跟数据范围关系比较大. ...

  7. Emiya 家今天的饭(CSP 2019 D2 T1)

    题目 题目描述 Emiya 是个擅长做菜的高中生,他共掌握 nn 种烹饪方法,且会使用 mm 种主要食材做菜.为了方便叙述,我们对烹饪方法从 1 \sim n1∼n 编号,对主要食材从 1 \sim ...

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

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

  9. 题解 [CSP-S 2019 Day2]Emiya家今天的饭

    题意简述:给定一个 n×mn \times mn×m 的矩阵,每个位置上有若干完全不同的小球,求选任意个小球,每行最多选一个,每列最多选 ⌊k2⌋\lfloor\frac{k}{2} \rfloor⌊ ...

最新文章

  1. java远程方法调用(rmi)--好_RMI-Java远程方法调用的实现(二)
  2. Jquery实现的Tabs页签
  3. spcontent------spcollection.add(field)
  4. C#中equal与==的区别
  5. 【EventBus】事件通信框架 ( 取消注册 | 获取事件参数类型 | 根据事件类型获取订阅者 | 移除相关订阅者 )
  6. Spine 2D animation for games
  7. 「澳洋主数据项目」主数据促企业变革
  8. 130 秒揭秘 EDAS 3.0 如何平滑应对突发流量高峰,为您的业务保驾护航
  9. 指针(*)、取地址()、解引用(*)与引用()
  10. 花书+吴恩达深度学习(二六)近似推断(EM, 变分推断)
  11. 基于linux的安全通讯过程
  12. Hibernate中枚举Enum类型的映射策略
  13. hwd分别是长宽高_W H D在尺寸上代表什么??
  14. kuwo.php采集,PHP获取酷我音乐MP3外链
  15. 关于Unity中unitypackage文件的图标显示及打开方式异常问题的解决
  16. ios 高德挪动地图获取经纬度_IOS 地图移动中心点获取
  17. 基本知识 100118
  18. 更新!又一批阿里网盘扩充码!亲测有效!数量较少,抓紧!
  19. 计算机上的ip地址在哪查,电脑的ip地址在哪里查
  20. 免费体验,快速对接身份证实名认证API接口说明

热门文章

  1. 在 命令行 (cmd)执行 Maven命令,对java工程进行打包 操作 (指定settings.xml)
  2. 简述鸿蒙系统与安卓系统的区别
  3. java面试题集中营-02集合
  4. Web前端Canvas实战 纯HTML5、CSS、JavaScript实现绘画板
  5. 第二证券|重磅利好!国家能源局发文,多股立马涨停!
  6. 《ESP32-S2 笔记》 Arduino 上的开发环境搭建
  7. 0745A-4.4T
  8. Hidemyass优惠券如何获得的折扣HMA
  9. [51nod 1463]找朋友
  10. 如何为 FB Messenger 设置聊天机器人?