题目

题意:有一个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. HDU 2601An easy problem-素数的运用,暴力求解

    id=17433" target="_blank" style="color:blue; text-decoration:none">An ea ...

  2. junit使用小结

    1.spring中使用 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=CDPlayerConfig.cla ...

  3. oracle的索引有几种?各有何用途?

    1. b-tree索引Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名.CREATE INDEX语句时,默认就是在创建b-tree索引.没有特别规定 ...

  4. mongo-java-driver

    http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver/3.5.0 <!-- https://mvnrepository. ...

  5. Window XP安装Ubuntu14.04实现Samba文件共享

    安装了Ubuntu14.04之后,在虚拟机设置里设置了文件共享.但在mnt文件夹下没有hgfs这个文件夹.依照网上说的去做还是不行,仅仅好放弃.改用samba实现Windows与Ubuntu文件共享. ...

  6. Linux系统(Centos)下安装Java环境配置步骤详述

    1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2 ...

  7. Ruby中任务构建工具rake的入门

    不同的rake文件当中不要定义重名的方法,不然没法调用 参考:http://www.jb51.net/article/81476.htm Rake简介 Rake的意思是Ruby Make,一个用rub ...

  8. 设置label的字体

    label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24]; 字体名如下: Font Family: Amer ...

  9. linux 解决 Device eth0 does not seem to be present

    在虚拟机中安装cent os系统,然后配置网络 执行命令ifconfig 没有看到eth0的信息: 重启网卡报错: service network restart Shutting down loop ...

  10. HUST1017 Exact cover —— Dancing Links 精确覆盖 模板题

    题目链接:https://vjudge.net/problem/HUST-1017 1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 7673 次提交 3898 次 ...