[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来说一切都是对象,也就是函数的参数 ...
随机推荐
- 浏览器渲染流程&Composite(渲染层合并)简单总结
梳理浏览器渲染流程 首先简单了解一下浏览器请求.加载.渲染一个页面的大致过程: DNS 查询 TCP 连接 HTTP 请求即响应 服务器响应 客户端渲染 这里主要将客户端渲染展开梳理一下,从浏览器器内 ...
- Data Vault 简介
Data Vault 简介 Data Vault 2.0 不仅是建模技术,也提供了一整套数据仓库项目的方法论.它能提供一套非常可行的方案来满足数据仓库项目中对于历史轨迹和审核两个方面的需求. 多年来, ...
- Rust入坑指南:智能指针
在了解了Rust中的所有权.所有权借用.生命周期这些概念后,相信各位坑友对Rust已经有了比较深刻的认识了,今天又是一个连环坑,我们一起来把智能指针刨出来,一探究竟. 智能指针是Rust中一种特殊的数 ...
- java中的while循环和do while循环
那么在讲解循环之前呢我们先来了解一下什么是循环 生活中的例子 车子的轮胎他就是一直在循环 马拉松跑到也是在循环 因为运动员不停的一圈一圈在跑这也是一个循环 那么我们为什么要学习循环呢? 下面看一个 ...
- 一套代码同时支持.NET Framework和.NET Core
转自:https://www.cnblogs.com/tianqing/p/11614303.html 在.NET Core的迁移过程中,我们将原有的.NET Framework代码迁移到.NET C ...
- redis实现数据库(一)
转:https://www.cnblogs.com/beiluowuzheng/p/9738159.html 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redis ...
- net core天马行空系列:移植Feign,结合Polly,实现回退,熔断,重试,超时,做最好用的声明式http服务调用端
系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 2.net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作 3.net core ...
- 小白学 Python 数据分析(17):Matplotlib(二)基础操作
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- vscode 对于 md的编写 左侧 大纲 很重要!!
vscode 对于 md的编写 左侧 大纲 很重要!!
- $api 回调函数then应用
getReceiveListAPI (param) { return new Promise(resolve => { let params = { // idCard: this.idCard ...