CF1167G Low Budget Inception 题解

技术CF1167G Low Budget Inception 题解 CF1167G Low Budget Inception 题解Link.
Codeforces
Luogu
Description.

cf1167g低预算事件解释。

Link.

代码力

洛古

Description.

房子很多,都是单位正方形,左下角是\((x_i,0)\),右上角是\((x_i 1,1)\)。

确保\(x_i\in\mathbb N\),房屋不相交,相邻两个房屋之间的距离不超过\(D\)。

现在有几个点,数轴围绕这些点旋转,使房屋不相交,房屋不与地面相交。

旋转的角度是多少?\(m\)询问。

\(n,m \ le 2 \乘以10^5,D\le 7000\)

Solution.

有两种情况。

一栋房子击中了数轴。

两栋房子相撞了。

由于所有房屋坐标都是整数,2种情况需要\(|x y-2w|\le 1\)。

其中\(w\)是查询位置。

画一幅画,发现一定有\(\ var theta=2 \ text { atan }(\ frac 1 \ min(| x-w |,| y-w |)}) \)。

1必须有\(\ var theta=\ text { atan }(\ frac 1 { | x-w | })\)。

最后,它必须是案例1 2的最大值。

首先,案例1可以通过\(O(1)\)的双指针找到。

此时,如果情况\(2\)大于情况\(1\),则必须保证\(\min(|x-w|,|y-w|)\le 2|x-w|\)。

结合\(\text{atan}\)的性质,可以推导出来。

也就是说范围不是很大,只是在\([x-2d,x 2d]\)的范围内。

直接扫描,复杂度是\(O(Dm n)\),勉强可以卡住。

注意这里有一个提示:Tips:atan2功能很慢,最好不要用它来修剪。

一种更优雅的方式是用一个位集来维护第一个\(2d\)位。

每次指针移动都可以通过左右移动直接计算,每次都会插入\(O(1)\)个点。

然后复杂性变得非常漂亮。

Coding.

单击2021 . 10 . 27 { { }上由leap frog编码的代码//。

//对,你就是鬼,所以遇到我的时候,就轮到我变成鬼了。

#includebits/stdc。h

使用命名空间标准;typedef long long ll

template typename Tinline void read(T x)

{

x=0;char c=getchar(),f=0;

for(;c48 | | c57c=getchar()) if(!(c^45)f=1;

for(;c=48c=57c=getchar())x=(x1)(x3)(c^48);

FX=-x : x;

}

templatetypename T,typename.Linline void read(T x,L.l) {read(x),read(l.);}//}}}

#pragma GCC优化(' Ofast,无堆栈保护,展开循环,快速数学')

#pragma GCC目标(' sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native ')

const int N=200005const double Pi=acos(-1);

int n,D,a[N],m,pos=0;

int main()

{

读(n,D);for(int I=1;I=n;改为(a[I]);

改为(m);for(int i=1,x;I=m;(一)

{

改为(x);而(posna[位置1]x)位置;

if(a[pos]==x-1a[pos 1]==x){ printf(' % . 15 lf \ n ',Pi);继续;}

if(a[pos]==x-1 | | a[pos 1]==x){ printf(' % . 15 lf \ n ',Pi/2);继续;}

int lim=(min(a[pos 1]-x,x-a[pos]-1) 5)*4,pl=pos,pr=pos 1;double RS=0;

if(pos) rs=max(rs,atan2(1.0,x-a[pos]-1));

if(pos!=n) rs=max(rs,atan2(1.0,a[pos 1]-x));

while(pr=npl=1a[pr]-a[pl]=lim)

{

int d1=a[pr]-x,D2=x-a[pl]-1;

if(abs(d1-d2)=1) {rs=max(rs,atan2(1.0,max(d1,D2))* 2);打破;}

if(D1 D2)pr;else pl-;

}printf('%.15lf\n ',RS);

}返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52943.html

(0)

相关推荐

  • 宁冈县,黄河界保卫战发生于江西哪个县

    技术宁冈县,黄河界保卫战发生于江西哪个县宁冈县宁冈县。
    1928年8月,湘赣敌军乘毛泽东带领三十一团一营前往湘南迎还红军大队之机,纠集七个团的兵力会攻井冈山军事根据地。8月30日,吴尚、王均部各两个团进攻黄洋界哨口。红军

    生活 2021年10月29日
  • flex布局中遇到的问题(flex开发技术)

    技术Flex开发时需要注意哪些问题这篇文章给大家分享的是有关Flex开发时需要注意哪些问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex开发心得小结和Flash的开发环境相比,Flex

    攻略 2021年12月14日
  • java中的公平锁和非公平锁(java哪些是公平锁和非公平锁)

    技术Java AQS中的公平锁与非公平锁怎么使用本篇内容主要讲解“Java AQS中的公平锁与非公平锁怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java AQS中

    攻略 2021年12月21日
  • 分数解方程,5年级分数解方程该怎样做

    技术分数解方程,5年级分数解方程该怎样做一分数解方程、可以根据等式的性质来解方程。1.等式性质一:等式两边都加上(或减去)同一个数,等式仍然成立。比如: x+5=15
    解:x+5 —5=15—5
    x=10
    2.等式性质

    生活 2021年10月29日
  • 如何解决Spring Cloud Gateway和OAuth2不兼容的问题

    技术如何解决Spring Cloud Gateway和OAuth2不兼容的问题今天就跟大家聊聊有关如何解决Spring Cloud Gateway和OAuth2不兼容的问题,可能很多人都不太了解,为了让大家更加了解,小编

    攻略 2021年10月22日
  • iphone手机壁纸,苹果手机壁纸在哪里可以找到

    技术iphone手机壁纸,苹果手机壁纸在哪里可以找到1、解锁iPhoneiphone手机壁纸,然后找到设置,点击设置、墙纸。2、点击选取新的墙纸,能看到所有系统的壁纸。一、手机壁纸通常也被称之为手机图片,待机图片,就跟W

    生活 2021年10月28日