首页 > 试题广场 >

小红的矩阵

[编程题]小红的矩阵
  • 热度指数:4622 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红有一个 n \times m 大小的矩阵,矩阵第 i 行第 j 列的元素为 i \times j,小红想知道矩阵中第 k 小的元素是多少。

输入描述:
第一行三个整数 n, m, k
1 \leq n, m \leq 10^5, 1 \leq k \leq n \times m


输出描述:
输出一个整数表示答案。
示例1

输入

3 3 4

输出

3

说明

矩阵为
1 2 3
2 4 6
3 6 9

头像 Lambda_L
发表于 2025-12-11 00:16:34
题解:n×m 矩阵第 k 小元素题目分析问题描述给定 n×m 大小的矩阵,其中第 i 行第 j 列的元素为 i×j(1≤i≤n,1≤j≤m),要求找出矩阵中第 k 小的元素。分析题干矩阵规模极大(n,m≤1e5),直接生成矩阵会占用 O (nm) 空间,完全超出内存限制;暴力排序所有元素更是不可能( 展开全文
头像 _已被标记为牛弊_Refrain_Y
发表于 2025-12-11 00:54:39
观察到数据范围很大,不能暴力找既然说了找到第k小,我们就想到一个高效率的查找:二分查找如何计算每一行中小于k的个数呢首先一行至多m个,根据题目公式i*j,我们假定找到的数为mid,有i*j<=mid也就是j<=mid/i;对每一行统计,得到最终结果并且更新答案就好了 int main() 展开全文
头像 叫我大便
发表于 2025-12-11 11:04:19
#include <bits/stdc++.h> #define int long long using namespace std; int n, m; int k, l, r, mid, sum; inline int min(int a, int b) { return a 展开全文
头像 fruian
发表于 2025-12-11 11:06:24
二分遍历(O(nlog(n*m)) 思路可以参考其他题解, 此题解思路在此基础上进行了一点升级, 使用了数论分块加速 我们观察二分的 check 函数, 其返回值为: 注意到计算 是数论分块的经典问题 因此我们 check 函数的遍历可以使用数论分块思路加速 数论分块思路简单来说, 就是根据 展开全文
头像 冷艳的西红柿刷牛客
发表于 2025-11-14 15:35:36
#include <iostream> #include <vector> using namespace std; //注意精度 int main() { long long n, m, k; cin >> n >> m >> 展开全文
头像 此在Dasein
发表于 2025-12-11 04:33:47
核心思想:二分答案 确定数值范围:矩阵中最小的元素是 ,最大的元素是 。我们要找的第 小的数一定在这个区间 内。 单调性分析:如果我们选定一个数值 ,我们可以很容易地计算出矩阵中有多少个元素是小于等于 的。 如果小于等于 的元素个数 ,说明第 小的数一定在 范围内(即 可能是答案, 展开全文
头像 丨阿伟丨
发表于 2025-09-01 10:48:58
题目链接 小红的矩阵 题目描述 给定一个 大小的矩阵,矩阵第 行第 列的元素为 。小红想知道矩阵中第 小的元素是多少。 解题思路 这是一个在概念矩阵(Conceptual Matrix)中寻找第 小元素的问题。 1. 暴力解法的局限性 由于 和 的范围可达 ,矩阵的大小可能达到 。直接 展开全文
头像 飞飞233
发表于 2025-12-11 11:37:13
n, m, k = map(int, input().split()) def count(x): s = 0 for i in range(1, n + 1): s += min(m, x // i) return s l, r = 1, n * m w 展开全文
头像 牛客262093342号
发表于 2025-12-11 16:04:00
def foll(n,m,k): if n<m : n,m=m,n left=1 right = n * m while left<right: mid = (left+right)//2 count=0 展开全文
头像 小胡放轻松
发表于 2025-11-19 20:58:43
/* 我的主要思路是第k小的元素是使得小于自身的数为k-1个成立,小于等于自身的数大于等于k个成立的最小的元素 接下来要实现的是check(x)函数检测矩阵中有多少个小于等于x的元素,这个利用此矩阵的特殊性可以在O(n)内实现 之后在矩阵的元素中随x递增,check(x)的函数值也是递增的,这就表明 展开全文