首页 > 其他分享 >[NOIP 2024 模拟2]矩阵学说

[NOIP 2024 模拟2]矩阵学说

时间:2024-09-12 19:51:44浏览次数:11  
标签:le NOIP int 矩阵 个数 2024

[NOIP 2024 模拟2]矩阵学说

题意

给出 \(n\) 行 \(m\) 列的矩阵,第 \(i\) 行第 \(j\) 列的元素为 \(a_{i,j}\),找出满足以下条件的三元组 \((i, j, x)\) 的 数量:

  1. \(1 ≤ i ≤ n\), \(1 ≤ j \le m\), \(1 ≤ x ≤ \min(n − i + 1, m − j + 1)\)
  2. 矩阵的左上角 \((i, j)\) 到右下角 \((i + x − 1, j + x − 1)\) 恰好含 \(k\) 个不同的整数。

\(1\le a_{i,j} \le 100\) \(1\le n,m \le 2000\)

思路

考虑求出包含数的种类 \(\le k\) 的个数和 \(< k\) 的个数,相减得到答案。

枚举左上角,矩阵包含数的种类个数显然单调不递减,二分边长即可。

快速求区间数的种类可以用二维 ST 表加 bitset。

时间复杂度:\(O(nm\log \min(n,m))\)。

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1505;
int n, m, k, a[N][N], lg[N];
bitset <100> st[N][N][12];
void init() {
	lg[1] = 0;
	for (int i = 2; i <= n; i ++) lg[i] = lg[i >> 1] + 1; 
	for (int i = 1; i <= n; i ++)
		for (int j = 1; j <= m; j ++)
			st[i][j][0][a[i][j] - 1] = 1;
	for (int l = 1; l <= 14; l ++) 
		for (int i = 1; i <= n && i + (1 << l) - 1 <= n; i ++) 
			for (int j = 1; j <= m && j + (1 << l) - 1 <= m; j ++) 
				st[i][j][l] = st[i][j][l - 1] | st[i + (1 << (l - 1))][j][l - 1] | st[i][j + (1 << (l - 1))][l - 1] | st[i + (1 << (l - 1))][j + (1 << (l - 1))][l - 1];
}
int query(int x, int y, int l) {
	int K = lg[l];
	int X = x + l - 1, Y = y + l - 1;
	return (st[x][y][K] | st[X - (1 << K) + 1][Y - (1 << K) + 1][K] | st[X - (1 << K) + 1][y][K] | st[x][Y - (1 << K) + 1][K]).count(); 
	return 0;
}
int calc(int num) {
	int res = 0;
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			int l = 1, r = min(n - i + 1, m - j + 1), pos = 0;
			while (l <= r) {
				int mid = (l + r) >> 1;
				if (query(i, j, mid) <= num) pos = mid, l = mid + 1;
				else r = mid - 1;
			}
			res += pos;
		}
	}
	return res;
}
void solve() {
	cin >> n >> m >> k;
	for (int i = 1; i <= n; i ++) 
		for (int j = 1; j <= m; j ++) 
			cin >> a[i][j];
	init();
	cout << calc(k) - calc(k - 1) << "\n";
}
signed main() {
	freopen("mar.in", "r", stdin);
	freopen("mar.out", "w", stdout);
	int Case = 1;
//	cin >> Case;
	while (Case --)
		solve();
	return 0;
}
/*
2 3 4
1 2 3
4 5 6
*/

标签:le,NOIP,int,矩阵,个数,2024
From: https://www.cnblogs.com/maniubi/p/18410933

相关文章

  • [NOIP 2024 模拟2]数组操作
    [NOIP2024模拟2]数组操作题意有\(n+2\)个整数\(a_0,a_1,...,a_n,a_{n+1}\),\(a_0=a_{n+1}=0\)。你需要做确切地\(n\)次操作,每次数组操作为以下形式:选择一个整数\(x\)满足\(a_x\ne0\),使得\(a_x=0\),令\(l=\max_{i<x,a_i=0}i,r=\min_{i>x,a_i=0}i\)......
  • 2024825XCPC2024模拟赛
    背景QY可爱。榜三。正文记得上次打ICPC赛制还是在上一次。而且这次是IOI赛制,所以没有罚时哈哈哈哈哈哈哈。T1概率期望,但是只用了定义。\(\mathcal{O}(1)\)小式子一推,\(6\min\)过掉。T2直接上难度。发现两个字符串按照前缀和后缀分别删除元素以后得到的两个端点之间......
  • 明天见!2024WAIC产业数据要素流通与应用论坛诚邀莅临
    7月6日下午,2024WAIC产业数据要素流通与应用论坛将于在上海世博中心430会议室举办。诚邀您莅临,聚焦数字科技最新成果,强化高水平数字化支撑,见证多项重磅成果发布,共同推动数据要素市场发展!  重磅嘉宾亮相  ......
  • 从产业区块链到产业数据空间,构建数据价值释放关键引擎 | 林乐博士在2024WAIC产业数据
    7月6日,2024WAIC零数科技产业数据要素流通与应用论坛将于在上海世博中心430会议室成功举办。零数科技创始人兼CEO林乐博士代表主办方致辞,并表示,数据市场已全面启航,数据流通基础设施是构建数据价值释放关键引擎;从产业区块链,到产业数据空间,再到金融数据空间,零数科技正式推出零数可信数......
  • 2024.09.08小红书
    1.机器人走网格小红书的冒险家们!今天,我们要进入一个充满挑战的高科技迷言。这是一张由小红书科技部最新研发的网格地图,每个格子都营着秘密一它们内置了自动滑行带!这些滑行带会让所有进入它们的机器人自动翻一个特定方向滑行。网格地图每个格子都藏着秘密一它们内置了自动滑行......
  • [2024-9-12]如何在Z-Library中免费下载书籍讲解流程
    无不良引导,共享知识,书籍乃进步阶梯。一、登录官网https://z-lib.io/按要求进行注册。二、下载Discordhttps://discord.com/经过我的测试网页版应该是没有注册功能的,先下载再注册。三、免费下载书籍搜索图书,点击索取此书。 然后接受邀请,转到help,帮助内容如下:1)H......
  • 数据要素市场如何发展?2024WAIC零数科技这场论坛干货满满!
    7月6日,2024WAIC零数科技产业数据要素流通与应用论坛于上海世博中心430会议室成功举办。本次论坛由中国发展战略学研究会数字经济战略专委会主办,中国发展战略学研究会数字经济战略专委会、上海零数科技有限公司联合承办。作为2024WAIC重要分论坛之一,论坛以“激活数据要素×,筑基新质......
  • 2024 上海CCPC
    The2024ShanghaiCollegiateProgrammingContest补题连接:https://codeforces.com/gym/105229M.不共戴天观察样例2,注意到6个荷叶两两分成一组,共分为3组(1,2)(3,4)(5,6)其中对于青蛙的策略是组内全部连接,即:m=3:1->2,3->4,5->6鸟的策略是,相邻组相连,即:m=4:1->3,2->4,3->5,4->6猜......
  • 2024年9月11日(k8s环境配置)
    编号主机名称ip1k8s-master192.168.8.2022k8s-node1192.168.8.2033k8s-node2192.168.8.204 1、做免密[root@k8s-master~]#ssh-keygen[root@k8s-master~]#[email protected][root@k8s-master~]#[email protected]、yum源(三台主......
  • 2024年9月12日(k8s环境及测试 常用命令)
    一、环境准备及测试1、报错处理:kube-systemcalico-node-5wvln0/1Init:0/3016hkube-systemcalico-node-d7xfb0/1Init:0/3016hkube-system......