bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
3356: [Usaco2004 Jan]禁闭围栏
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 45 Solved: 26
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
先将y坐标离散化,然后从左往右扫描,每遇到一条正方形的边就更新树状数组
正方形处理如下:
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct Line
{int x, l, r, id, t;bool operator < (const Line &b) const{if(x<b.x)return 1;return 0;}
}Line;
Line s[500005];
int cnt, p[500005], tre[500005], sum[500005];
int Query(int k)
{int ans = 0;while(k){ans += tre[k];k -= k&-k;}return ans;
}
void Update(int k, int x)
{while(k<=cnt){tre[k] += x;k += k&-k;}
}
int main(void)
{int x1, y1, x2, y2, n, i, bet, ans;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%d%d%d%d", &x1, &y1, &x2, &y2);p[++cnt] = y1, s[cnt].id = i, s[cnt].t = 1, s[cnt].l = y1, s[cnt].r = y2, s[cnt].x = x1;p[++cnt] = y2, s[cnt].id = i, s[cnt].t = -1, s[cnt].l = y1, s[cnt].r = y2, s[cnt].x = x2;}sort(p+1, p+cnt+1);cnt = unique(p+1, p+cnt+1)-(p+1);n *= 2;sort(s+1, s+n+1);for(i=1;i<=n;i++){s[i].l = lower_bound(p+1, p+cnt+1, s[i].l)-p;s[i].r = lower_bound(p+1, p+cnt+1, s[i].r)-p;}for(i=1;i<=n;i++){if(s[i].t==1)sum[s[i].id] = Query(s[i].l)+1;Update(s[i].l, s[i].t);Update(s[i].r, -s[i].t);}n /= 2;ans = 0, bet = 0;for(i=1;i<=n;i++){if(sum[i]==bet)ans++;else if(sum[i]>bet)bet = sum[i], ans = 1;}printf("%d %d\n", bet, ans);return 0;
}
bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)相关推荐
- bzoj 3356: [Usaco2004 Jan]禁闭围栏 离散化+树状数组
新博客链接:https://www.everlasting.wang/archives/228
- BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化)
BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化) 1 #include<algorithm> 2 #include<iostream> 3 #include ...
- BZOJ3356 : [Usaco2004 Jan]禁闭围栏
首先将坐标离散化,考虑从左往右扫描线 碰到插入操作则插入 碰到删除操作的: 当前包含i的矩形数=y1在[1,y2[i]]之间的矩形数-y2在[1,y1[i]-1]之间的矩形数 用两棵树状数组维护即可, ...
- BZOJ 3289 Mato的文件管理 | 莫队 树状数组
BZOJ 3289 Mato的文件管理 题意 求区间逆序对. 题解 在莫队的基础上使用树状数组求逆序对. 在当前区间左侧加入一个数时,res += 原区间比它小的数的个数: 在当前区间右侧加入一个数时 ...
- hdu 6681 2019 杭电多校九1002 Rikka with Cake(扫描线+树状数组)
题意:给一个矩形,在矩形内部有很多射线,这些射线的起点不会碰到矩形边界,问这些射线把矩形分成了几部分 题解:分成的区域数等于线段交点数加一,推导还是看jls的题解把 单说求交点个数的问题,我的方法就是 ...
- Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 1539 Solved: 665 [Submit][Status][ ...
- bzoj 2131: 免费的馅饼【dp+树状数组】
简单粗暴的dp应该是把馅饼按时间排序然后设f[i]为i接到馅饼能获得的最大代价,转移是f[i]=max(f[j])+v[i],t[j]<=t[i],2t[i]-2t[j]>=abs(p[i ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2221 Solved: 1179 [Submit][S ...
- bzoj 4765: 普通计算姬(分块+树状数组)
4765: 普通计算姬 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 1481 Solved: 318 [Submit][Status][Disc ...
最新文章
- 一起来看看Babel到底执行了什么?
- Django中STATIC_URL、STATIC_ROOT、STATICFILES_DIRS 的区别关系
- UITextView实现图文混排效果
- 手机知识:90Hz或120Hz屏幕刷新率有啥区别,看完你就懂了!
- Python 绘制散点图
- 使用for循环遍历文件、使用while循环遍历文件
- Failed to start Zabbix Agent.
- Mifare Classic Tool(MCT)汉化版
- 限流算法: 漏桶算法和令牌桶算法
- 银川JW万豪酒店与银川万怡酒店双品牌酒店启幕
- 业务分析报告与数据可视化报表
- 日暮途远,故吾倒行而逆施之.
- java中是什么意思_java中@什么意思
- Linux/ Unix 键盘检测程序
- 大一微积分笔记整理_大一微积分知识点总结
- 米的换算单位和公式_米的单位换算公式大全(长度单位大全表)
- 在电脑上怎么做判断题打√或x_苹果Mac电脑知识竞赛考试题
- BioPython读取FASTA文件保留header中空格的方法
- uni-app心得体会
- EWC:Overcoming catastrophic forgetting in neural networks论文笔记
热门文章
- python教程视频哪个好-Python入门视频哪个好?
- 盘点语音识别技术在人工智能中的应用
- 语音情感识别的优选方法与流程
- 前端链接共享(记录)
- 计算机域名DNS设置,电脑的IP地址和DNS域名服务器如何设置
- SpringBoot 实现登录验证码(附集成SpringSecurity)
- 前端面试知识点归纳:vue,react,webpack,bable,项目开发
- 【java笔记】常用函数式接口(1):Supplier接口
- int java 时间,java 时间处理类
- 浏览器管理oracle网址,浏览器用户界面 (Browser User Interface, BUI)