题目

题意:有一个n*m的显示屏,有q个坏点先后出现,已知第i个坏点位置为(xi,yi),在ti时间出现。显示屏上出现一个k*k的矩阵全都是坏点时显示屏就是坏的。输出显示屏坏的时间,如果不会坏就输出-1。

所以说,O(nmq)到底是怎么过的?

 //b[i][j]表示第i行第j个开始的向右延伸的坏条长度
#include<cstdio>
#include<algorithm>
using namespace std;
struct Point
{
int x,y,t;
bool operator<(const Point& b) const
{
return t<b.t;
}
}p[];
int b[][];
bool c[][];
int n,m,k,q;
bool judge(int x,int y)
{
int i,ans=;
for(i=x;i<=n;i++)
{
if(b[i][y]<k)
break;
ans++;
if(ans>=k) break;
}
for(i=x-;i>=;i--)
{
if(b[i][y]<k)
break;
ans++;
if(ans>=k) break;
}
if(ans>=k)
return true;
else
return false;
}
int main()
{
int i,j;
bool boo;
scanf("%d%d%d%d",&n,&m,&k,&q);
for(i=;i<=q;i++)
scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].t);
sort(p+,p+q+);
for(i=;i<=q;i++)
{
int& x=p[i].x;
int& y=p[i].y;
c[x][y]=true;
for(j=y;j>=;j--)
{
if(!c[x][j]) break;
b[x][j]=b[x][j+]+;
if(b[x][j]>=k)
{
boo=judge(x,j);
if(boo==true)
{
printf("%d",p[i].t);
return ;
}
}
}
}
printf("-1");
return ;
}

所以,以下才是正解...

正解1:二分时间,把当前时间的显示屏状态求出来并放入二维线段树/树状数组(坏点为1,好点为0),暴力枚举k*k矩阵的右下角端点,看是否某个矩阵的所有点的和为k*k,如果这样就说明这一块全坏了。

正解2:每个格子记录变坏的时间(不坏的就给个大值),放进二维线段树,然后暴力查询每个k*k的矩阵中变坏时间的最大值,再取所有最大值的最小值,就是答案(如果为那个大值就是-1)

Monitor CodeForces - 846D的更多相关文章

  1. C - Monitor CodeForces - 846D (二维前缀和 + 二分)

    Recently Luba bought a monitor. Monitor is a rectangular matrix of size n × m. But then she started ...

  2. Codeforces 846D Monitor(简单二分+二维BIT)

    D. Monitor time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  3. Codeforces Beta Round #16 div 2 C.Monitor最大公约数

    C. Monitor time limit per test 0.5 second memory limit per test 64 megabytes input standard input ou ...

  4. D. Monitor Educational Codeforces Round 28

    http://codeforces.com/contest/846/problem/D 二分答案 适合于: 判断在t时候第一次成立 哪个状态是最小代价 #include <cstdio> ...

  5. codeforces B. Routine Problem 解题报告

    题目链接:http://codeforces.com/problemset/problem/337/B 看到这个题目,觉得特别有意思,因为有熟悉的图片(看过的一部电影).接着让我很意外的是,在纸上比划 ...

  6. Educational Codeforces Round 28

    A. Curriculum Vitae 题目链接:http://codeforces.com/contest/846/problem/A 题目意思:给你一个只包含0-1的数组,现在要求去可以去掉一些元 ...

  7. C#各种同步方法 lock, Monitor,Mutex, Semaphore, Interlocked, ReaderWriterLock,AutoResetEvent, ManualResetEvent

    看下组织结构: System.Object System.MarshalByRefObject System.Threading.WaitHandle System.Threading.Mutex S ...

  8. API Monitor简介(API监控工具)

    API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用. 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题. 64位支持 API ...

  9. 创建 Monitor 并测试 - 每天5分钟玩转 OpenStack(124)

    前面我们创建了 Pool,VIP 并添加了 Member.今天将创建 Monitor,然后测试 LBaaS 是否能够正常工作. 创建 Monitor LBaaS 可以创建 monitor,用于监控 P ...

随机推荐

  1. VB.NE总结

    VB.NET视频看完了.但台湾微软资深讲师的声音还回荡在我的脑海中啊.刚開始听两位老师的讲课那是一个纠 结.感觉不亚于听英语听力训练.后来看到王鹏同学转载的台湾计算机术语和大陆计算机术语的对比,我才明 ...

  2. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

  3. MVC 基于FormsAuthentication 方式的权限验证

    1.登录的代码 1 [HttpPost] 2 public ActionResult Index(User entity) 3 { 4 User user = GetUser(entity.Name, ...

  4. activemq的安装使用

    近期有项目中用到消息队列,JMS规范中实现最好的开源框架就是activemq.所以选择它(当然这是我老大决定的,像我这样的刚入职场的小菜鸟考虑问题还不太全面)作为消息队列数据传输.公司有有成型的消息队 ...

  5. HTTP请求中带有特殊字符"|",返回400错误

    Java平台,服务器是Tomcat8,前端ajax访问服务器时,F12返回400错误,经分析,URL地址中get传参值里面含有“|“, Invalid character found and RFC ...

  6. Mac版idea使用总结

    1.设置文档注释快捷键:快捷键设置里搜索 Fix doc comment 2.IDEA不显示项目project视图(转载于 https://blog.csdn.net/oyimiyangguang12 ...

  7. asp.net连接Access数据库实现登陆功能

    这里话就不多说了,直接演示代码. 连接access数据库首先需要配置web.config <appSettings> <add key="AccessConnString& ...

  8. IE67下float左右对齐

    例子: <style> .h1{text-align: left;} .leftA{color: #000} .rightA{color: #ccc; float: right;} < ...

  9. POJ 3279 Dungeon Master

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21242   Accepted: 8265 D ...

  10. react native 之页面布局

     第一章 flexbox 布局 1.flexDirection:'row', 水平 flexDirection:'column',垂直 需要在父元素上设置这种属性才能实现flex. flex:1 会撑 ...