[vijos1883]月光的魔法<递归>
题目链接:https://vijos.org/p/1883
这道题还有另外一种版本叫天神下凡,属于模拟题,可是模拟题数据太水以至于模拟题A了都不一定在vijos上A。。。。
在模拟题里我用的是一种类似扫描线的方式,完美AC,然后在vijos上就是只能过2组
最后经同学提点改为递归才A了
这道题我们把圆看成线段,所以这题就是线段覆盖,然后答案是被完全覆盖的线段数+所有线段数+1
被完全覆盖的线段的数量就用递归找,不断的找被当前线段完全包含的线段,然后判断是否在里面
然后这道题有一种特殊情况可以不用执行程序,就是所有圆都是同心圆的时候,因为这种状态只存在重合和包含(本题重合不算完全覆盖),直接输出圆的数量+1即可
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#define maxn 300005
#define ll long long
using namespace std; ll n,cnt,can,ans;
struct node{
ll l,r;
}e[maxn]; ll read(){
ll xx=;ll ff=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){xx=xx*+ch-'';ch=getchar();}
return xx*ff;
} int cmp(node a,node b){
if(a.l==b.l ){
return a.r>b.r;
}return a.l<b.l;
} int t;
int check (ll id){
int now=e[id].l,add=,ret=;
while(t!=n+&&e[t].r<=e[id].r){
if(e[t].l!=now)add=;
now=e[t].r;
ret+=check(t++);
}
if(now!=e[id].r )add=;
return +ret+add;
} int main(){
n=read();
for(ll i=;i<=n;i++){
ll x,R;
x=read();R=read();
e[i].l=x-R;e[i].r=x+R;
if(cnt==)cnt=x;
if(cnt!=x)can=;
}
if(!can){cout<<n+;return ; }//同一个圆心可以不管了
sort(e+,e+n+,cmp);t=;
while(t!=n+){
ans+=check(t++);
} ans=ans+;
cout<<ans;
}
然后这道题还有一个解法就是线段树,因为不存在相交的情况,所以不需要使用lazy标记,没有lazy标记的线段树就很简单了
但是要注意一点就是这些左右端点在坐标轴上,坐标轴有可能很大,所以要用到离散化
[vijos1883]月光的魔法<递归>的更多相关文章
- [补档]vijos1883 月光的魔法
vijos1883 月光的魔法 题目 传送门:https://www.vijos.org/p/1883 背景 影几欺哄了众生了 天以外-- 月儿何曾圆缺 描述 有些东西就如同月光的魔法一般. Lu ...
- voijs1883 月光的魔法
背景 影几欺哄了众生了天以外——月儿何曾圆缺 描述 有些东西就如同月光的魔法一般. Luke是爱着vijos的.他想为自己心爱的东西画些什么. 就画N个圆吧.把它们的圆心都固定在x轴上. 圆与圆.为了 ...
- vijos国庆节模拟赛之繁星春水
A.闪烁的繁星 题目:https://vijos.org/p/1881 题解:貌似做过小白逛公园或者序列操作都可以秒出吧,就是pushup函数比较麻烦,不过仔细想一想就知道了. 代码: #includ ...
- [补档]暑假集训D4总结
考试 爆零了,不开心,打了两道自己以为是正解的东西,打了两道样例骗分,结果发现并没有给样例分= =,自己以为的正解也打挂了,所以就很= = 但是没办法啊,自己弱也不能怪谁,考试这东西有时候也很玄学. ...
- vijos p1883
题意: 有些东西就如同月光的魔法一般. Luke是爱着vijos的.他想为自己心爱的东西画些什么. 就画N个圆吧.把它们的圆心都固定在x轴上. 圆与圆.为了爱,两两不能相交.为了爱,它们可以互相贴在一 ...
- [CareerCup] 9.3 Magic Index 魔法序号
9.3 A magic index in an array A[0.. .n-1] is defined to be an index such that A[i] = i. Given a sort ...
- Python的魔法方法 .
基本行为和属性 __init__(self[,....])构造函数 . 在实例化对象的时候会自动运行 __del__(self)析构函数 . 在对象被回收机制回收的时候会被调用 __str__(sel ...
- 《Python基础教程(第二版)》学习笔记 -> 第九章 魔法方法、属性和迭代器
准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here ...
- python 魔法方法
I am not a creator, I just a porter. Note: Everything is object in python. 对于Python来说一切都是对象,也就是函数的参数 ...
随机推荐
- leetcode 209 3 滑动窗口
class Solution { public: int minSubArrayLen(int s, vector<int>& nums) { ,r=-; //由于数组是[]区间, ...
- IIS6.0文件解析漏洞和短文件名漏洞复现
一.IIS6.0文件解析漏洞 1.ASP一句话木马的准备 新建木马文件“muma.txt”,将“我asp是一句话木马:<%eval request("asp")%>”写 ...
- 2019年最新老男孩高性能Web架构与自动化运维架构视频教程
课程目录L001-老男孩架构15期-Web架构之单机时代L002-老男孩架构15期-Web架构之集群时代L003-老男孩架构15期-Web架构之dnsL004-老男孩架构15期-Web架构之缓存体系L ...
- 使用R进行空间自相关检验
「全局溢出」当一个区域的特征变化影响到所有区域的结果时,就会产生全局溢出效应.这甚至适用于区域本身,因为影响可以传递到邻居并返回到自己的区域(反馈).具体来说,全球溢出效应影响到邻居.邻居到邻居.邻居 ...
- ggplot2(11) 总结回顾&案例练习
从2020年2月20到2月27日,3月13日到2020年3月16日,学习了ggplot2:数据分析与图形艺术(哈德利·威克姆 著 统计之都 译),历时12天.另外,3月6日到3月9日参加了美赛,也用到 ...
- Python 装饰器(无参,有参、多重))
Python装饰器介绍 在Python中,装饰器(decorator)是在闭包的基础上发展起来的. 装饰器的实质是一个高阶函数,其参数是要装饰的函数名,其返回值是完成装饰的函数名,其作用是为已经存在的 ...
- Rust入坑指南:齐头并进(上)
我们知道,如今CPU的计算能力已经非常强大,其速度比内存要高出许多个数量级.为了充分利用CPU资源,多数编程语言都提供了并发编程的能力,Rust也不例外. 聊到并发,就离不开多进程和多线程这两个概念. ...
- html5 cavans的小应用
1.canvas鼠标画线,canvas小方块移动,canvas小方块旋转并缩放 <!doctype html> <html> <head> <meta cha ...
- Spark入门(一)--用Spark-Shell初尝Spark滋味
Spark-Shell的使用 执行scala命令的spark-shell 进入spark的sbin目录,打开键入 ./spark-shell 即可进入spark-shell的目录 spark-shel ...
- springBoot启动后 http://localhost:8080 地址无法访问
http://localhpost:8080/hello 代码结构: 代码内容: @RestController public class HelloWordRestImpl implements H ...