首页 > 其他分享 >[CSP-S2019] Emiya 家今天的饭

[CSP-S2019] Emiya 家今天的饭

时间:2023-02-13 22:25:06浏览次数:64  
标签:const int sum MAXN Emiya S2019 CSP dp

题解

P5664
这道题非常水,段誉初二就切了,但是我初中 DP 学的非常差,基本什么都不会,见到的小套路能会一个算一个吧。
直接计算比较困难,尝试使用 DP 求出不合法的方案数即可。
令 sum[i]=\(\sum_{j=1}^na[i][j]\)。
不难发现总方案数很好求,为 \(\Pi_{i=1}^n(sum[i]+1)-1\)。
枚举不合法的列 j,设 dp[i][k] 表示前 i 行选 k 个 j 的点个数与其他列的点个数之差。
可以得到 \(dp[i][k]=dp[i-1][k]+dp[i-1][k-1]*a[i][j]+dp[i-1][k+1]*(sum[i]-a[i][j])\)。
因为下标可能为负,所以整体加 n 即可。
code:

#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN=105;
const int MAXM=2005;
const int Mod=998244353;
#define ll long long
int n,m;
ll a[MAXN][MAXM],dp[MAXN][MAXN<<1],sum[MAXN][MAXM],Ans=1;
int main(){
	scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%lld",&a[i][j]);}}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) sum[i][0]=(sum[i][0]+a[i][j])%Mod;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) sum[i][j]=(((sum[i][0]-a[i][j])%Mod)+Mod)%Mod;
	}
	for(int i=1;i<=n;i++){
		if(!sum[i][0]) continue;Ans=Ans*(sum[i][0]+1)%Mod;
	}
	Ans--;
	for(int i=1;i<=m;i++){for(int j=0;j<=n;j++){for(int k=0;k<=2*n;k++){dp[j][k]=0;}}
		dp[0][n]=1;
		for(int j=1;j<=n;j++){for(int k=n-j;k<=n+j;k++){dp[j][k]=(dp[j-1][k]+dp[j-1][k-1]*a[j][i]%Mod+dp[j-1][k+1]*sum[j][i]%Mod)%Mod;}}
		for(int j=1;j<=n;j++) Ans=(((Ans-dp[n][j+n])%Mod)+Mod)%Mod;
	}
	printf("%lld",Ans);return 0;
}

标签:const,int,sum,MAXN,Emiya,S2019,CSP,dp
From: https://www.cnblogs.com/StranGePants/p/17118035.html

相关文章

  • c++ 调用第三orm框架matador的方法通过vs2019
    1.安装matador编译好window版安装包,在安装目录下复制include和lib文件夹到自己的项目目录一下2.自己的mfc目录如图所示,粘贴制include和lib文件夹 3.用vs2019打开自己......
  • CSP NOIP 游记 2022
    CSP2022.9.17初赛前一天,++rp。今年flag:搞到7级钩子。2022.9.18CSP2022J1ACACBBBCADDACABFFFFFBFTTCCBTTTFCBAABCDAABCCACSP2022S1感觉考完非常不好。B......
  • VS2019 MFC TabControl使用
    新建MFC基于对话框应用,项目名MFCTabControl项目属性,SDL检查关闭,字符集:未设置删除默认对话框上自动添加的2个按钮1个标签控件下载TabSheet.cpp TabSheet.h文件,复......
  • CSP-J 2022 T2-解密
    原题目链接题目描述给定一个正整数\(k\),有\(k\)次询问,每次给定三个正整数\(n_i,e_i,d_i\),求两个正整数\(p_i,q_i\),使\(n_i=p_i\timesq_i\)、\(e_i\timesd......
  • CSP-J 2022 T1-乘方
    题目描述小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数\(a\)和\(b\),求\(a^b\)的值是多少。\(a^b\)即\(b\)个\(a\)相乘的值,例如\(2^3\)即......
  • P7074 [CSP-J 2020] 方格取数
    思路来自大佬:Indjy学校老师居然把这个题放在区间DP里面但是我没想到该怎样用,标签里也没有,那就用暴力DP来做吧。题目大意有一个\(n\timesm\)的方格,可以向下,向上,向右走......
  • vs2019 编译是报结构体对象找不到
      原先多行注释,在vs编译是会出现某个结构体成员找不到。改成双斜杠注释即可......
  • 【CSP201312-4】有趣的数(数位DP)
    problem问题描述试题编号:201312-4试题名称:有趣的数时间限制:1.0s内存限制:256.0MB问题描述:问题描述我们把一个数称为有趣的,当且仅当:1.它的数字只包含0,......
  • 【CSP201803-1 】跳一跳,简单模拟
    problem试题编号:201803-1试题名称:跳一跳时间限制:1.0s内存限制:256.0MB问题描述:问题描述近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。简化后的跳一......
  • 【CSP201312-3】最大的矩形,单调栈
    problem201312-3试题名称:最大的矩形时间限制:1.0s内存限制:256.0MB问题描述:问题描述在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1≤i≤n)个矩形的高度......