BZOJ2509 : 送分题
求出每个点向上下左右能延伸的最大长度$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 : 送分题的更多相关文章
- fjwc2019 D3T2 送分题
#185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$ ...
- 送分题,ArrayList 的扩容机制了解吗?
1. ArrayList 了解过吗?它是啥?有啥用? 众所周知,Java 集合框架拥有两大接口 Collection 和 Map,其中,Collection 麾下三生子 List.Set 和 Queu ...
- 良心送分题(牛客挑战赛35E+虚树+最短路)
目录 题目链接 题意 思路 代码 题目链接 传送门 题意 给你一棵树,然后把这棵树复制\(k\)次,然后再添加\(m\)条边,然后给你起点和终点,问你起点到终点的最短路. 思路 由于将树复制\(k\) ...
- 牛客 26E 珂学送分2 (状压dp)
珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你可以从里面选出最多m个数 一个合法的选择的分数定义为选中的这些数的和加上额外规则的加分: 有b个额外的规则,第i ...
- 算法笔记_063:蓝桥杯练习 送分啦(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 这题想得分吗?想,请输出“yes”:不想,请输出“no”. 输出格式 输出包括一行,为“yes”或“no”. 2 解决方案 初步一看,这题 ...
- C语言 · 送分啦
问题描述 这题想得分吗?想,请输出"yes":不想,请输出"no". 输出格式 输出包括一行,为"yes"或"no". ...
- 51nod 1174 区间中最大的数(送盾题)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. ...
- PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)
1050 String Subtraction (20 分) Given two strings S1 and S2, S=S1−S2 is defined to be t ...
- 请问如何实现字符串UTF8->BIG5,BIG5->UTF8。保证送分。-Java/JavaSE
请问如何实现字符串UTF8-> BIG5,BIG5-> UTF8. ------回答--------- ------其他回答(100分)--------- public String BI ...
随机推荐
- 【转】new对象时,类名后加括号和不加括号的区别
请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...
- 网站遭遇CC及DDOS攻击紧急处理方案
检测访问是否是CC攻击的命令: 80口为网站的访问端口,可以根据实际情况进行修改 # netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: ' ...
- SeaJS入门教程系列之SeaJS介绍(一)
前言SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封装 ...
- Jquery----属性的利用
属性操作: 1.属性 属性(如果你的选择器选出了多个对象,那么默认只会返回出第一个属性). attr(属性名|属性值) - 一个参数是获取属性的值,两个参数是设置属性值 - 点击加载图片示例 remo ...
- js在字符串中提取数字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 阿里巴巴 Java 开发手册评述
http://blog.jobbole.com/110427 阿里巴巴Java开发手册(终极版)https://pan.baidu.com/s/1c1UQM7Q 阿里巴巴Java开发规约插件p3cGi ...
- hdu 1596 乘积的最大值
一般题是 和的最小值 这个是乘积的最大值 Sample Input31 0.5 0.50.5 1 0.40.5 0.4 131 2 //起点 终点2 31 3 Sample Output0.5000. ...
- 开始写博客,学习Linq(2)
linq的功能是什么? 它将极大地改变应用程序或组件处理数据的方式.这是第一个功能. LINQ to Objects.LINQ to SQL和LINQ to XML,是LINQ三大主要功能,当然LIN ...
- 【Java】 剑指offer(47) 礼物的最大价值
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值( ...
- 014 view-controller标签
1.说明 可以直接相应转发的页面, 而无需再经过 Handler 的方法. 这个时候可以使用mvc:view-controller标签. 但是以前的映射会出现问题,这个时候需要再配置一个标签<m ...