BZOJ2702 : 金融风暴
求出离每个点最近的关键点,然后用二维ST表回答正方形最大值。
将关键点分为上下两部分,以上为例:
从上到下依次考虑每一行,记录每一列往上最近的关键点的距离,那么最优决策具有单调性,可以分治求解。
时间复杂度$O(n^2\log n+t)$。
#include<cstdio>
#include<cmath>
const int N=1005,inf=N*N+N*N,BUF=27000000;
int n,m,i,j,k,x,y,z,f[N],g[N],Log[N],d[10][N][N];bool is[N][N],flag;
char Buf[BUF],*buf=Buf;
inline void read(int&a){for(a=0;*buf<48;buf++);while(*buf>47)a=a*10+*buf++-48;}
void solve(int l,int r,int dl,int dr){
int m=(l+r)>>1,&ret=g[m],dm;
for(int i=dl;i<=dr;i++)if(~f[i]){
int t=(m-i)*(m-i)+f[i]*f[i];
if(t<ret)ret=t,dm=i;
}
if(l<m)solve(l,m-1,dl,dm);
if(r>m)solve(m+1,r,dm,dr);
}
inline int max(int a,int b){return a>b?a:b;}
inline int ask(int x,int y,int k){
int o=Log[k];
return max(max(d[o][x][y],d[o][x+k-(1<<o)][y]),max(d[o][x][y+k-(1<<o)],d[o][x+k-(1<<o)][y+k-(1<<o)]));
}
int main(){
fread(Buf,1,BUF,stdin);read(n),read(m),read(k);
for(i=2;i<=n||i<=m;i++)Log[i]=Log[i>>1]+1;
while(k--)read(x),read(y),is[x][y]=1;
for(i=0;i<=m;i++)f[i]=-1;
for(i=0;i<=n;i++){
for(j=0;j<=m;j++){
if(is[i][j])f[j]=0,flag=1;else if(~f[j])f[j]++;
g[j]=inf;
}
if(flag)solve(0,m,0,m);
for(j=0;j<=m;j++)d[0][i][j]=g[j];
}
for(flag=i=0;i<=m;i++)f[i]=-1;
for(i=n;~i;i--){
for(j=0;j<=m;j++){
if(is[i][j])f[j]=0,flag=1;else if(~f[j])f[j]++;
g[j]=inf;
}
if(flag)solve(0,m,0,m);
for(j=0;j<=m;j++)if(d[0][i][j]>g[j])d[0][i][j]=g[j];
}
for(k=1;k<10;k++)for(i=0;i+(1<<k)-1<=n;i++)for(j=0;j+(1<<k)-1<=m;j++)d[k][i][j]=max(max(d[k-1][i][j],d[k-1][i+(1<<(k-1))][j]),max(d[k-1][i][j+(1<<(k-1))],d[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
read(k);
while(k--){
read(x),read(y),read(z);
if(x<z||x+z>n||y<z||y+z>m){puts("-1");continue;}
printf("%.3f\n",std::sqrt(ask(x-z,y-z,z<<1|1)));
}
return 0;
}
BZOJ2702 : 金融风暴的更多相关文章
- bzoj2702[SDOI2012]走迷宫
题意:给你一个有向图,点数10000,边数1000000,SCC大小不超过100(按数据范围的写法只有第三部分数据满足这个条件,不过第二部分数据并没有出现大小大于100个点的SCC,我是用数组大小为1 ...
- 认识WCF
WCF 一.什么是WCF? 1.Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口.它是.NET框 ...
- 红星美凯龙CEO车建新的圆融和霸气
待人接物中车建新有许多习惯,与别人一起行走时,走在靠马路的一边:吃饭时最好的菜留给客人.他说,做人往往就在细节中,别小看一个举动,无意中就会感染别人.和别人在一起,你要时时刻刻先考虑对方. 细节上体察 ...
- Google不做坏事吗?
说中国足球为什么冲不出亚洲,那是因为咱中国人太文气,足球是种“斗牛士”式的游戏,得玩的有点儿“野蛮”色彩.记得以前在英国的时候,遇上联赛,晚上大街小巷全民皆兵,曼切斯特队的粉丝在街道一边酒吧里,利物浦 ...
- suricata抓包方式之一AF_PACKET
suricata抓包方式之一AF_PACKET 噜拯渡 睦坚削 曜纡宄 式犒藿氆 咬焚桤φ 要蒯钮 喃俚夼 币噎嶂颐 话千叶舞就后悔了怎么想都容易让人引 虻谮м 及葚雏钏 看着表面平静实际 ...
- 初识WCF之使用配置文件部署WCF应用程序
二月份的开头,小编依旧继续着项目开发之路,开始接触全新的知识,EF,WCF,MVC等,今天小编来简单的总结一下有关于WCF的基础知识,学习之前,小编自己给自己提了两个问题,WCF是什么?WCF能用来做 ...
- 你的B计划在哪里?
春节同学聚会,大家聊起近况. 甲在实体经济部门工作,企业效益不好,正酝酿减员增效,他忧心忡忡,跳槽都不知道怎么跳,因为全行业都不景气. 乙从事互联网工作,行业发展热火朝天,新事物层出不穷,但是他已人到 ...
- [转帖]DRAM芯片战争,跨越40年的生死搏杀
DRAM芯片战争,跨越40年的生死搏杀 超级工程一览 ·2017-08-20 12:50·半导体行业观察 阅读:1.4万 来源:内容来自超级工程一览 , 谢谢. DRAM是动态随机存储器的意思,也就是 ...
- 差异是关键,TI首款隔离式CAN收发器评析
差异是关键,TI首款隔离式CAN收发器评析 “无论是在日常生活还是媒体报道中, CAN接口对大家来说已经司空见惯了,然而将CAN接口和隔离功能整合在同一产品里,这还是业界头一遭,” ...
随机推荐
- 论文阅读笔记十三:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation(FC-DenseNets)(CVPR2016)
论文链接:https://arxiv.org/pdf/1611.09326.pdf tensorflow代码:https://github.com/HasnainRaz/FC-DenseNet-Ten ...
- 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)
前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...
- 使用CSS选择器定位页面元素
摘录:http://blog.csdn.net/defectfinder/article/details/51734690 CSS选择器也是一个非常好用的定位元素的方法,甚至比Xpath强大.在自动化 ...
- 去掉A标签的点击选中边框
非IE a:focus { outline:none; }
- [转] 深入浅出mongoose-----包括mongoose基本所有操作,非常实用!!!!!
深入浅出mongoose mongoose是nodeJS提供连接 mongodb的一个库. 此外还有mongoskin, mongodb(mongodb官方出品). 本人,还是比较青睐mongoose ...
- Java基础知识➣多线程编程(五)
概述 Java 给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径.使用多线程也是为了充分的利用服务器资源, ...
- nginx 301重定向一种实现方法
假设要使用的域名是b.com,以前的老域名是a.com,则以下设置让nginx把a.com的请求访问转发到b.com,并返回301给浏览器. server { listen 80; server_na ...
- SqlSever大数据分页【转】
在sql sever中大数据的分页一直是难以处理的一块,利用id自增列分页也存在不足之处.从一个相对全面的分页看,sql sever2005中新增的row_number()函数解决了这个问题.还 ...
- 再理解tcp backlog
在Linux 2.2以前,backlog大小包括了半连接状态和全连接状态两种队列大小.linux 2.2以后,分离为两个backlog来分别限制半连接SYN_RCVD状态的未完成连接队列大小跟全连接E ...
- sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)-- 2
参考上篇博文:https://www.cnblogs.com/niutao/p/10547718.html 同样的逻辑,不同的封装 package offsetInZookeeper /** * Cr ...