[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来说一切都是对象,也就是函数的参数 ...
随机推荐
- python Could not find a version that satisfies the requirement pymysql (from versions: none) ERROR: No matching distribution found for pymysql
使用pip安装pymysql出错;Could not find a version that satisfies the requirement cryptography (from pymysql) ...
- preload & prefetch
原文地址在 我的笔记里,觉得还行就给个 star 吧:) 关于 preload 和 prefetch 早有耳闻,知道它们可以优化页面加载速度,然具体情况却了解不多.搜索了相关的资料后对其有了些认识,在 ...
- http相关知识点回顾
一.概述 1.什么是HTTP HTTP是一种可以获取HTML这样的网络资源的一种通讯协议protocol.是在WEB上进行数据交换的基础,是一种客户端--服务器协议.HTTP是一种可扩展的应用层协议, ...
- Deepin环境下启动Pycharm没有启动图标解决办法
小伙伴们在deepin下运行pycharm时,是不是需要通过sh文件启动? 下面告诉大家如何将pycharm图标放在桌面上: 1.在桌面打开终端,输入命令: sudo gedit /usr/share ...
- React的组件
React的组件化思想尤为明显,一切皆组件,觉着比Vue的组件化思想更加凸显. const PacketBG = (props) =>( <div className="pack ...
- 复制url事故:出现特殊的字符%E2%80%8B
复制url事故:出现特殊的字符%E2%80%8B 问题:直接其他地方复制过来的中文字进行网页搜索.或者中文字识别排序等情况的,会出现搜索不到的情况. 解决方法:可能存在复制源里面的文字带了空白url编 ...
- 你知道吗,Flutter内置了10多种Button控件
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我 ...
- Polly每次重试执行不同的操作
Polly每次重试执行不同的操作 前言 最近在写WG(用的 .net core 3.1 + wpf + abp vnext),程序里大量用到了重试机制选用的是Polly组件(只知道这个...). ...
- js小数计算引起的精度误差问题
我记得刚开始学js的时候学到浮点有举例0.1+0.2 它的计算结果是: 0.1+0.20.30000000000000004 很神奇的一个计算,js是弱语言,在精度上没做处理: 我就自己定义了加减乘除 ...
- Open live Writer 直接发布wps文章,优点是可以带上图片
官方网站: http://openlivewriter.org/ 博客园的设置里面的 MetaWeblog访问地址