P9582 方格

签到题

因为值域很小,考虑对值域动手。

对于每一种数字,存储他出现的次数,那么根据排列组合,假设当前的数有 xx 个,根据排列组合,我们就知道最多可以可以组合出来 x×(x1)x\times (x-1) 种。

然后我们再遍历一次这个矩阵,所谓公共边其实就是上下左右四个点。按照题意排除掉不满足的就做完了。

#include<bits/stdc++.h>
using namespace std;
const int N =5001;
#define int long long 
int a[N][N],t[N],ans;
signed main()
{
//	freopen("square5.in","r",stdin);
//	freopen("ans.out","w",stdout);
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)	
			scanf("%lld",&a[i][j]),t[a[i][j]]++;
	for(int i=1;i<=9;i++)
		ans+=t[i]*(t[i]-1);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			if(a[i][j]==a[i-1][j])	ans--;
			if(a[i][j]==a[i][j-1])	ans--;
			if(a[i][j]==a[i+1][j])	ans--;
			if(a[i][j]==a[i][j+1])	ans--;
		}
	cout<<ans<<endl;
	return 0;
}
/*
start: 2023.8.26 18:45

总的减去分的,没了。
按着值域做。
 
end: 2023.8.26 18:56 
*/
posted @   June_Failure  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示