求出每个点向上下左右能延伸的最大长度$left$、$right$、$up$、$down$。

枚举每一条对角线,如果$j$可以作为左上角,$i$可以作为右下角,那么有:

$j+\min(down[j],right[j])-1\geq i$

$i-\min(left[i],up[i])+1\leq j$

$j<i$

排序+树状数组统计即可。

时间复杂度$O(n^2\log n)$。

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=2010;
int n,m,i,j,a[N][N],up[N][N],left[N][N],down[N][N],right[N][N],bit[N],ans;
struct P{int x,y;P(){}P(int _x,int _y){x=_x,y=_y;}}e[N],q[N];
inline bool cmp(const P&a,const P&b){return a.x<b.x;}
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline void init(){
int A,B,C,D;
read(A),read(B),read(C),read(D);
A++;B++;C++;D++;
A<<=1;B<<=1;C<<=1;D<<=1;
a[A][B]++;
a[A][D+1]--;
a[C+1][B]--;
a[C+1][D+1]++;
}
inline void add(int x){for(;x<=n;x+=x&-x)bit[x]++;}
inline void askadd(int x){for(;x;x-=x&-x)ans+=bit[x];}
inline void askdel(int x){for(;x;x-=x&-x)ans-=bit[x];}
inline void solve(int x,int y){
for(m=0;x<=n&&y<=n;x++,y++){
if(!a[x][y])continue;
e[++m]=P(x-min(up[x][y],left[x][y])+1,x);
q[m]=P(x,x+min(down[x][y],right[x][y])-1);
}
sort(e+1,e+m+1,cmp);
sort(q+1,q+m+1,cmp);
for(int i=1;i<=n;i++)bit[i]=0;
for(int i=1,j=1;i<=m;i++){
while(j<=m&&e[j].x<=q[i].x)add(e[j++].y);
askadd(q[i].y);
askdel(q[i].x);
}
}
int main(){
read(n),read(m);n++;n<<=1;
while(m--)init();
for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
for(i=1;i<=n;i++)for(j=1;j<=n;j++){
up[i][j]=a[i][j]?up[i-1][j]+1:0;
left[i][j]=a[i][j]?left[i][j-1]+1:0;
}
for(i=n;i;i--)for(j=n;j;j--){
down[i][j]=a[i][j]?down[i+1][j]+1:0;
right[i][j]=a[i][j]?right[i][j+1]+1:0;
}
for(i=1;i<=n;i++)solve(1,i);
for(i=2;i<=n;i++)solve(i,1);
return printf("%d",ans),0;
}

  

BZOJ2509 : 送分题的更多相关文章

  1. fjwc2019 D3T2 送分题

    #185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$ ...

  2. 送分题,ArrayList 的扩容机制了解吗?

    1. ArrayList 了解过吗?它是啥?有啥用? 众所周知,Java 集合框架拥有两大接口 Collection 和 Map,其中,Collection 麾下三生子 List.Set 和 Queu ...

  3. 良心送分题(牛客挑战赛35E+虚树+最短路)

    目录 题目链接 题意 思路 代码 题目链接 传送门 题意 给你一棵树,然后把这棵树复制\(k\)次,然后再添加\(m\)条边,然后给你起点和终点,问你起点到终点的最短路. 思路 由于将树复制\(k\) ...

  4. 牛客 26E 珂学送分2 (状压dp)

    珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你可以从里面选出最多m个数 一个合法的选择的分数定义为选中的这些数的和加上额外规则的加分: 有b个额外的规则,第i ...

  5. 算法笔记_063:蓝桥杯练习 送分啦(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 这题想得分吗?想,请输出“yes”:不想,请输出“no”. 输出格式 输出包括一行,为“yes”或“no”. 2 解决方案 初步一看,这题 ...

  6. C语言 · 送分啦

    问题描述 这题想得分吗?想,请输出"yes":不想,请输出"no". 输出格式 输出包括一行,为"yes"或"no". ...

  7. 51nod 1174 区间中最大的数(送盾题)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. ...

  8. PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  9. 请问如何实现字符串UTF8->BIG5,BIG5->UTF8。保证送分。-Java/JavaSE

    请问如何实现字符串UTF8-> BIG5,BIG5-> UTF8. ------回答--------- ------其他回答(100分)--------- public String BI ...

随机推荐

  1. Nginx软件优化【转】

    转自 Nginx软件优化 - 惨绿少年 - 博客园 Nginx软件优化 - 惨绿少年 - 博客园 https://www.cnblogs.com/clsn/p/8484559.html 1.1 Ngi ...

  2. C++11 并发指南一(C++11 多线程初探)

    引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧, ...

  3. oracle 回退表空间清理

    1.查看已有表空间,找到回退表空间 SELECT * FROM DBA_TABLESPACES WHERE CONTENTS='UNDO' 2.创建新的回退表空间 create undo tables ...

  4. centos6.5生产环境编译安装nginx-1.11.3并增加第三方模块ngx_cache_purge、nginx_upstream_check、ngx_devel_kit、lua-nginx

    1.安装依赖包 yum install -y gcc gcc-c++ pcre-devel openssl-devel geoip-devel 2.下载需要的安装包 LuaJIT-2.0.4.zip ...

  5. centos6环境创建局域网http方式的yum源

    环境: yum服务器:centos 6.3 :192.168.8.20 yum源客户端:centos6.5 使用的主要rpm包来自centos6.5光盘 yum源服务器端配置: 1. 首先需要检查一下 ...

  6. cactiez v11添加对mysql数据库、apache系统进行监控

    cactiez默认已经安装了mysql监控的模板,需要我们对服务器端和被监控的mysql客户端进行配置才能生效. 被监控的Mysql客户端: 如cactiez的IP为192.168.0.8 #添加一个 ...

  7. 浏览器桌面通知Notification实践

    一言不合就上图: 最近常常在浏览器看到这样的消息推送,还有QQ.com的推送,现在我对这个不了解,不知道叫消息自动推送对不对,这个时chrome浏览器的截图,出现在右下角,其他浏览器的样式可能有些微差 ...

  8. 使用@font-family时各浏览器对字体格式(format)的支持情况

    说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...

  9. PHP获取文件后缀名

    PHP获取文件后缀名是PHP学习者常见的一种操作,无论是在面试过程中还是PHP新手自学中.PHP获取文件后缀名都是很普遍的需要掌握的一个知识点. 下面我们就给大家总结介绍PHP获取文件扩展名也就是后缀 ...

  10. 将eclipse的maven项目导入到intellij idea中

    最近项目中需要用到idea,需要将原来的eclipse项目进行转移.捣鼓了半天终于成功了,在这里和大家分享下,希望对大家有所帮助,如有错误,欢迎指正. idea的确是一款很智能的开发工具,真的是爱不释 ...