CCPC-Wannafly Winter Camp Day7 (Div2, onsite) G 穗乃果的考试(二维前缀和,求和公式展开)

1.二维前缀和
2.求和公式展开
∑ i = 1 n ∑ j = 1 i f i ∗ g j = ∑ j = 1 n ∑ i = j n f i ∗ g j \sum_{i=1}^n \sum_{j=1}^i f_i * g_j= \sum_{j=1}^n \sum_{i=j}^n f_i * g_j i=1nj=1ifigj=j=1ni=jnfigj
对于这题
∑ i = 1 n ∑ j = 0 i − 1 f i ∗ g j = ∑ j = 0 n ∑ i = j + 1 n f i ∗ g j \sum_{i=1}^n \sum_{j=0}^{i-1} f_i*g_j= \sum_{j=0}^n \sum_{i=j+1}^nf_i*g_j i=1nj=0i1figj=j=0ni=j+1nfigj

这题转化为定义一个矩阵的权值为其中1的个数,然后求权值和。

∑ i = 1 n ∑ j = 1 m ∑ k = 0 i − 1 ∑ l = 0 j − 1 ( s u m ( i , j ) − s u m ( k , j ) − s u m ( i , l ) + s u m ( k , l ) ) \sum_{i=1}^n \sum_{j=1}^{m} \sum_{k=0}^{i-1} \sum_{l=0}^{j-1} (sum(i,j) − sum(k,j) − sum(i,l) + sum(k,l)) i=1nj=1mk=0i1l=0j1(sum(i,j)sum(k,j)sum(i,l)+sum(k,l))
s u m ( i , j ) sum(i,j) sum(i,j)为前缀和
根据公式展开统计即可

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
typedef long long ll;
const ll mod=998244353;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
const int maxn = 2e3+100;

int n,m;
int ma[maxn][maxn];
ll f[maxn][maxn];
ll ans;
int main(int argc, char const *argv[])
{
	scanf("%d%d",&n,&m);
	rep(i,1,n+1)
	{
		rep(j,1,m+1)
		{
			scanf("%01d",&ma[i][j]);
		}
	}
	rep(i,1,n+1)
	rep(j,1,m+1)
	f[i][j] = f[i][j-1] + f[i-1][j] - f[i-1][j-1] + ma[i][j];

	ll ans = 0;

	rep(i,1,n+1)
	rep(j,1,m+1)
	ans = (ans + f[i][j]*(i*j))%mod;

	rep(i,1,n+1)
	rep(j,0,m+1)
	ans = (ans - f[i][j]*i*(m-j))%mod;

	rep(i,0,n+1)
	rep(j,1,m+1)
	ans = (ans - f[i][j]*j*(n-i))%mod;

	rep(i,0,n+1)
	rep(j,0,m+1)
	ans = (ans + f[i][j]*(n-i)*(m-j))%mod;

	ans = (ans + mod)%mod;

	printf("%lld\n",ans);

	return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值