【ABC 203】D - Pond:二分 + 前缀和
传送门
分析
二分一下,把矩阵改成010101矩阵,搞一下前缀和即可
代码
#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define debug(x) cout<<#x<<":"<<x<<endl;
#define dl(x) printf("%lld\n",x);
#define di(x) printf("%d\n",x);
#define _CRT_SECURE_NO_WARNINGS
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef vector<int> VI;
const int INF = 0x3f3f3f3f;
const int N = 1e3 + 10;
const ll mod = 1000000007;
const double eps = 1e-9;
const double PI = acos(-1);
template<typename T>inline void read(T &a) {char c = getchar(); T x = 0, f = 1; while (!isdigit(c)) {if (c == '-')f = -1; c = getchar();}while (isdigit(c)) {x = (x << 1) + (x << 3) + c - '0'; c = getchar();} a = f * x;
}
int gcd(int a, int b) {return (b > 0) ? gcd(b, a % b) : a;}
int a[N][N];
int sum[N][N];
int n,k;bool check(int mid){for(int i = 1;i <= n;i++)for(int j = 1;j <= n;j++)sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + (a[i][j] >= mid);for(int i = k;i <= n;i++)for(int j = k;j <= n;j++){if(sum[i][j] - sum[i - k][j] - sum[i][j - k] + sum[i - k][j - k] < (k * k / 2) + 1) return false;}return true;
}int main() {read(n),read(k);for(int i = 1;i <= n;i++)for(int j = 1;j <= n;j++)read(a[i][j]);int l = 0,r = INF;while(l < r){int mid = (l + r + 1) >> 1;if(check(mid)) l = mid;else r = mid - 1;}di(l);return 0;
}/**
* ┏┓ ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃ ┃
* ┃ ━ ┃ ++ + + +
* ████━████+
* ◥██◤ ◥██◤ +
* ┃ ┻ ┃
* ┃ ┃ + +
* ┗━┓ ┏━┛
* ┃ ┃ + + + +Code is far away from
* ┃ ┃ + bug with the animal protecting
* ┃ ┗━━━┓ 神兽保佑,代码无bug
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛ + + + +
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛+ + + +
*/
【ABC 203】D - Pond:二分 + 前缀和相关推荐
- P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★
P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...
- POJ 3061 (二分+前缀和or尺取法)
题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...
- 【实数二分/前缀和维护】Best Cow Fences
Poj 2018 Best Cow Fences 实数二分+前缀和维护 调了一晚上, 但发现没什么注意事项orz 无输出只因eps定义成了int型QAQ哭唧唧 #include<cstdio&g ...
- AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
link 思路: 先来想想暴力的写法: n2n^{2}n2枚举左上角的顶点,k2k^{2}k2求最小值. 考虑优化: 1.1.1.答案有单调性,可以二分答案,省去枚举左上角顶点的复杂度. 2.2.2. ...
- AtCoder Beginner Contest 203 Pond(二分+二维前缀和)
样例输入 [样例1] 3 2 1 7 0 5 8 11 10 4 2 [样例2] 3 3 1 2 3 4 5 6 7 8 9 样例输出 [样例1] 4 [样例2] 5 据说这个题用对顶堆维护被卡了 先 ...
- 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)
聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员, ...
- AcWing120防线 经典题二分+前缀和+等差数列
达达学习数学竞赛的时候受尽了同仁们的鄙视,终于有一天-受尽屈辱的达达黑化成为了黑暗英雄怪兽达达. 就如同中二漫画的情节一样,怪兽达达打算毁掉这个世界. 数学竞赛界的精英 lqr 打算阻止怪兽达达的阴谋 ...
- POJ3179 Corral the Cows 离散化 二分 前缀和
题目链接 http://poj.org/problem?id=3179 分析 容易想到二分和前缀和,难点在于坐标离散化,要将横纵坐标分别离散化. 对于三叶草的每个坐标,将其映射为次序: 没有三叶草的位 ...
- Corral the Cows POJ - 3179(二分+前缀和+离散化)
题意:传送门 题解:根据题意可以直接看出使用二分来做,但是数据范围是100001000010000,二分+++判断下来复杂度为O(n2∗logn)O(n^2*logn)O(n2∗logn)肯定会TTT ...
最新文章
- 083、Prometheus架构(2019-05-05 周日)
- phpcms v9整合Ueditor
- SQL Server创建索引
- (原+转)linux安装rtl 8812au驱动
- 宏光MINI EV收割的年轻人,又被苏宁、小米、欧拉盯上了
- ant的设置properties
- 插入箭头_“PPT立体箭头”这样做
- php生成extjs下拉树json数据格式
- ORA-01555 原因与解决
- KVM虚拟机禁止上网(路由转发)
- 【520有奖征文】 老同学聚会,20年IT行业从业感悟
- IOS平台hosts修改
- 幅值与峰峰值的计算_正弦波的幅度指的是峰值还是峰峰值
- 【ROS】header.stamp与double转换
- linux 查看磁盘实际空间,如何运用linux查看磁盘总空间
- html中隐藏溢出怎么写,CSS溢出文字隐藏
- 超强可视化图表工具:Smartbi!!
- VSCode 浏览器打开插件
- 多线程系列学习:AQS(一)获取锁
- 人工智能:免疫算法概述