[vijos]1066弱弱的战壕<线段树>
2024-10-08 23:44:00
题目链接:https://www.vijos.org/p/1066
这道题没什么难度,只是要一个排序然后就是线段树的基本套路模版了
但是我还是讲一讲思路吧:
给出的是坐标x,y,当一个点的x,y都小于等于另外一个点,则这个点就是另外一个点的保护对象,然后我们就可以对x进行一个排序,然后用线段树依次加入纵坐标去更新
保护的数量,这就是这个简单套路
这题不难,就直接上代码吧
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<cstdlib>
#define maxn 15005
using namespace std; struct edge{
int l,r,sum;
}e[maxn*]; int n,maxy,ans[]; struct point{
int x,y;
}f[maxn*]; int comp(point a,point b)
{
return (a.x==b.x)?(a.y<b.y):(a.x<b.x);
} void build(int l,int r,int pos)
{
e[pos].sum=;e[pos].l=l;e[pos].r=r;
if(l!=r)
{
int mid=(l+r)/;
build(l,mid,pos*);
build(mid+,r,pos*+);
} } void change(int l,int r,int pos)
{//将那些纵坐标大于等于l的处理
if(e[pos].l==l&&e[pos].r==r)
{
e[pos].sum++;
return;
}
if(e[pos].l==e[pos].r)return;
int mid=(e[pos].l+e[pos].r)/;
if(mid>=r)
{
change(l,r,pos*);
}else{
if(mid<l)change(l,r,pos*+);
else{
change(l,mid,pos*);
change(mid+,r,pos*+);
}
} } int query(int po,int pos)
{
if(e[pos].l==e[pos].r)return e[pos].sum;
int mid=(e[pos].l+e[pos].r)/;
if(po<=mid){
return e[pos].sum+query(po,pos*);
}else return e[pos].sum+query(po,pos*+); } int main()
{ scanf("%d",&n);
for(int i=;i<=n-;i++)
{
int a,b;
scanf("%d%d",&a,&b);
f[i].x=a;f[i].y=b;
maxy=max(maxy,b);
}
sort(f,f+n,comp);//首先让x坐标排个序,接下来加点就只用在y坐标上进行处理
build(,,);
for(int i=;i<=n-;i++)
{
ans[query(f[i].y,)]++; //查看在哪一个答案区间
change(f[i].y,,);//i点加进来后,需要加1的点区间
}
for(int i=;i<n;i++)
{
printf("%d\n",ans[i]);
} }
最新文章
- word20161208
- Python之路 day2 字符串函数
- 《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View
- 使用mutt+msmtp在Linux命令行界面下发邮件
- 《Linux系统 date、cal、hwclock时间命令的用法》
- 随记一个C的毫秒级群PING
- EL表达式与三目运算符
- 深入浅出Ajax(一)
- rest api get 查询接口 多个参数
- Java_Date_01_判断两个时间相差的天数
- ELK学习笔记(一)安装Elasticsearch、Kibana、Logstash和X-Pack
- AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构
- Java进阶篇设计模式之十 ---- 访问者模式和中介者模式
- codeforces#1154F. Shovels Shop (dp)
- Spring Boot 框架的依赖管理
- Android--px(像素)和dp、sp之间的相互转化
- 【Codeforces 1105E】Helping Hiasat
- tomcat站点配置
- bzoj1043 [HAOI2008]下落的圆盘
- idea 插件
热门文章
- Vue+Axios+iview+vue-router实战管理系统项目
- html/css系列-图片上下居中
- 这样学习Servlet,会事半功倍!!
- Linux下git使用
- Simulink仿真入门到精通(六) Simulink模型保存为图片
- python读取文件指定行内容
- sklearn-转换器与机器学习流程
- SpringCloud之Hystrix服务降级入门全攻略
- Vue.js组件嵌套和template外用
- 在d盘创建文件夹,里面有aaa.txt/bbb.txt/ccc.txt,然后遍历出aaa文件夹下的文件(新手)