【2021集训队出题】这是一道集训队胡策题
【2021集训队出题】这是一道集训队胡策题
by AmanoKumiko
Description
给出的矩阵,求有多少长度为的数组,满足或
答案对取模
Input
第一行一个整数表示矩阵大小
然后读入的矩阵
Output
一行一个整数表示答案
Sample Input
3
010
101
010
Sample Output
2
Data Constraint
Solution
我们设中取了个,设中有个
然后设的有个,的有个
我们考虑怎么计算合法位置和不合法位置的差
分析每一组,如果不匹配,那么贡献是,否则为
那么序列合法必须满足
同时有
也就是说,必须贪心地放置
那直接枚举个数,然后乘一些组合数即可
Code
#include<bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i=a;i<=b;i++)
#define Fd(i,a,b) for(int i=a;i>=b;i--)
#define LL long long
#define mo 998244353
#define N 5010
char s[N];
int a[N][N],c1[N],c2[N],h1[N],top1,h2[N],top2,s1[N],s2[N],n,sum1[N],sum2[N],sr1[N],sr2[N];
LL ans,C[N][N],v1[N],v2[N];
bool cmp(int x,int y){return x>y;}
int main(){
scanf("%d",&n);
F(i,0,N-10)C[i][0]=1;
F(i,1,N-10) F(j,1,i)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mo;
F(i,1,n){
scanf("%s",s+1);
F(j,1,n)a[i][j]=s[j]-'0';
}
F(i,1,n) F(j,1,n)c1[i]+=(a[i][j]==1),c2[i]+=(a[j][i]==1);
memset(h1,-1,sizeof(h1));
memset(h2,-1,sizeof(h2));
sort(c1+1,c1+n+1,cmp);
sort(c2+1,c2+n+1,cmp);
F(i,1,n){
if(c1[i]!=h1[top1])h1[++top1]=c1[i],s1[top1]=1;
else s1[top1]++;
if(c2[i]!=h2[top2])h2[++top2]=c2[i],s2[top2]=1;
else s2[top2]++;
}
Fd(i,top1,1)sr1[i]=sr1[i+1]+(n-h1[i])*s1[i];
Fd(i,top2,1)sr2[i]=sr2[i+1]+(n-h2[i])*s2[i];
F(x,0,n){
int rx=x;v1[x]=1;
F(i,1,top1){
if(rx>=s1[i])sum1[x]+=s1[i]*h1[i],rx-=s1[i];
else{sum1[x]+=rx*h1[i]+(s1[i]-rx)*(n-h1[i])+sr1[i+1];v1[x]=C[s1[i]][rx];break;}
}
}
F(y,0,n){
int ry=y;v2[y]=1;
F(i,1,top2){
if(ry>=s2[i])sum2[y]+=s2[i]*h2[i],ry-=s2[i];
else{sum2[y]+=ry*h2[i]+(s2[i]-ry)*(n-h2[i])+sr2[i+1];v2[y]=C[s2[i]][ry];break;}
}
}
F(x,0,n) F(y,0,n)
if(sum1[x]+sum2[y]-x*y-(n-x)*(n-y)==n*n)(ans+=v1[x]*v2[y]%mo)%=mo;
printf("%lld",ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现