LGP5664题解
厉害。
对于每一列选的数最多占一半,我们得设计一个三维 DP。然而状态刚好够,但是转移明显炸了(而且似乎还需要多项式?)
考虑正难则反,DP 不合法的方案数。总方案数很好算。
发现不合法的方案数只有某一列的出现次数超过一半,直接枚举这一列。设当前列为第 \(k\) 列。
设 \(dp_{i,x,y}\) 为前 \(i\) 行,当前列选了 \(x\) 个,其他列共选了 \(y\) 个的方案数。
再设第 \(i\) 行的 \(a\) 之和为 \(S[i]\),容易有:
\]
复杂度 \(O(mn^3)\),可以获得 \(84\) 分。
注意到在统计答案时计算的是 \(\sum_{x>y}dp_{n,x,y}\),我们只关心 \(x\) 是否比 \(y\) 大,考虑重新设状态。
设 \(dp_{i,x}\) 表示前 \(i\) 行的选择中,当前列比其他列多选了 \(x\) 个(\(x\) 可以为负数)。转移方程和刚才几乎一致:
\]
复杂度 \(O(mn^2)\)。
#include<cstdio>
typedef unsigned ui;
const ui M=105,mod=998244353;
ui n,m,S[M],a[M][2005],dp[M][M<<1],f[M][M];
inline ui DP(const ui&x){
ui sum(0);dp[0][n]=1;
for(ui i=1;i<=n;++i){
const ui&c1=a[i][x],&c2=mod+S[i]-a[i][x];
dp[i][n-i]=1ll*c2*dp[i-1][n-i+1]%mod;dp[i][n+i]=1ll*c1*dp[i-1][n+i-1]%mod;
for(ui j=n-i+1;j<=n+i-1;++j)dp[i][j]=(dp[i-1][j]+1ull*c1*dp[i-1][j-1]+1ull*c2*dp[i-1][j+1])%mod;
}
for(ui i=1;i<=n;++i)sum=(sum+dp[n][n+i])%mod;
return sum;
}
signed main(){
ui sum(0);scanf("%d%d",&n,&m);
for(ui i=1;i<=n;++i)for(ui j=1;j<=m;++j)scanf("%u",a[i]+j),S[i]=(S[i]+a[i][j])%mod;
for(ui i=1;i<=m;++i)sum=(sum+DP(i))%mod;
f[0][0]=1;
for(ui i=1;i<=n;++i){
f[i][0]=1;
for(ui j=1;j<=i;++j)f[i][j]=(f[i-1][j]+1ll*S[i]*f[i-1][j-1])%mod;
}
for(ui i=1;i<=n;++i)sum=(sum+mod-f[n][i])%mod;
printf("%u",sum?mod-sum:0);
}
看了题解才会,太菜了/kk
LGP5664题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- VC 创建快捷方式
转载请注明来源:https://www.cnblogs.com/hookjc/ VC6下测试时使用的是绝对地址BOOL CFGDlg::CreateLink ( LPSTR szPath ...
- Window 共享内存
转载请注明来源:https://www.cnblogs.com/hookjc/ C++使用共享内存实现进程间通信文件映射是一种实现进程间单向或双向通信的机制.它允许两个或多个本地进程间相互通信.为了共 ...
- Ajax向服务器发起请求
Ajax向服务器发起请求的三个步骤: 1:创建Ajax 2:打开Ajax,打开Ajax请求 3:向服务器发起请求:需要知道地址和是get请求还是post方法 向服务器发起请求的两个方法:open 和 ...
- js Array.prototype.slice.call(arguments,0) 理解
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- Maven多环境配置实战 filter
目前在开发一个wap项目,主要有开发.测试和最终部署上线几个阶段,每个阶段对配置(数据库.日志)都有不同的设置.以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线.但是公司并非都 ...
- 编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
一.环境准备 两台主机: httpd+php(fastcgi模式) mariadb 服务器 软件版本: mariadb-10.2.40-linux-x86_64.tar.gz apr-1.7.0.ta ...
- 震惊!!!!!!!靠sort水过二叉堆的天秀操作
- 初见Redis
Redis是什么,有什么特点和优势 Redis是一个开源用C语言编写的,基于内存,可以持久化,高性能的key-value数据库,并提供多种语言的API. 它也被称为数据结构服务器,因为值(value) ...
- redis(三)-----redis基本数据类型
Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串.哈希.列表.集合.有序集合,同时在字符串的基础之上演变 出了位图(Bitmaps)和HyperLo ...
- Solution -「NOI.AC 省选膜你赛」寄蒜几盒
题目 题意简述 给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原 ...