[CF846D]Monitor题解
2024-08-26 08:22:22
看了一眼这题所用的操作,我觉得二维树状数组珂做,然后发现如果按时间顺序把节点一个个加进去再判会TLE,但发现二分时间明显比刚刚的做法快,于是二分时间+暴力插入该时间之内的点+树状数组维护即可AC
贴个代码:
#include <cstdio>
#include <cstring>
#define ll long long
#define lowbit(x) (x&(-x))
inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}
int C[1005][1005];
int n, m, k, q;
int xi[250005], yi[250005];
ll ti[250005];
void clr(){
memset(C, 0, sizeof(C));
}
void modify(int i, int j, int val){
for(int x = i; x <= n; x += lowbit(x))
for(int y = j; y <= m; y += lowbit(y))
C[x][y] += val;
}
int getsum(int i, int j){
int res = 0;
for(int x = i; x > 0; x -= lowbit(x))
for(int y = j; y > 0; y -= lowbit(y))
res += C[x][y];
return res;
}
inline bool judge(ll num){
clr();
for (int i = 1; i <= q; ++i)
if (ti[i] <= num)
modify(xi[i], yi[i], 1);
for (int i = k; i <= n; ++i)
for (int j = k; j <= m; ++j){
int tmp1 = getsum(i, j) - getsum(i - k, j) - getsum(i, j - k) + getsum(i - k, j - k);
if (tmp1 == k * k)
return true;
}
return false;
}
int main(){
n = read(), m = read(), k = read(), q = read();
ll _max = 0;
for (int i = 1; i <= q; ++i){
xi[i] = read(), yi[i] = read(), ti[i] = read();
if (ti[i] > _max) _max = ti[i];
}
ll l = 0, r = _max + 1, ans = -1;
while (l <= r){
ll mid = (l + r) >> 1ll;
if (judge(mid)){
r = mid - 1;
ans = mid;
}
else
l = mid + 1;
}
printf("%d", ans);
return 0;
}
最新文章
- elasticsearch suggest 的几种使用-completion 的基本 使用
- linux下安装jdk+tomcat+eclipse+mysql
- OTG 接口烧写最小Linux的方法
- iOS 的 Safari 文件上传功能详解
- loadView, viewDidLoad 快速使用
- Core管道中的处理流程3
- c++ 10
- android脚步---UI界面修改,关于activity中增加按钮和监听
- java 多线程安全问题-同步代码块
- 基于Windows下python环境变量配置
- mybatis快速入门(八)-spring-mybatis动态代理整合
- 局域网下访问其他计算机搭建的django网页
- BMP 转 YUV (BMP2YUV)
- 开篇python
- jmeter笔记(3)--响应结果中文乱码的解决方式
- Go指南练习_Reader
- hbase1.4.0安装和使用
- 更改GeoServer的端口号
- 如何让chrome浏览器自动翻译
- Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食
热门文章
- nginx的域名解析
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_6_练习_转换文件编码
- Vue+Java实现在页面树形展示文件目录
- JMeter性能测试入门-不同类型线程组的使用
- Policy Improvement and Policy Iteration
- 如何通过脚本实现显示版本号、CPU、硬盘和内存条大小
- Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)
- Sentinel之熔断降级
- 1 Python 新建项目
- MongoDB查询系统