自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 AcWing 187. 导弹防御系统(LIS+dfs)

题意思路对于1~n个导弹爆搜将每个导弹放进上升 ||下降up[] down[]存每个上升||下降序列的最后一位复杂度O(n2^n)代码#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MaxN = 55;int n,a[MaxN],ans,up[MaxN],down[MaxN];//up[]:每个上升子...

2021-02-19 23:09:30 205

原创 AcWing 3074. 自适应辛普森积分 3069. 圆的面积并[BZOJ2178]

模板题3074. 自适应辛普森积分题意思路辛普森积分:(r - l) * (f(l) + f(mid) * 4 + f(r)) / 6.0 指过l,r,(l + r) / 2 三处确定点在抛物线上的积分的面积自适应辛普森积分:每次找l~r与l~mid+mid~r比较fabs<eps说明已经精确可用(对二次函数次数更高就不好说了)过程就是递归代码#include<cstdio>#include<iostream>#include&lt...

2021-02-15 01:07:19 256

原创 AcWing 2801. 三角形面积并 [CQOI2005] 扫描线

题目思路代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<vector>using namespace std;const double eps = 1e-6;const double pi = acos(-1.0);const int inf = 0x3f3f3f3f;const int MaxN =

2021-02-13 01:18:04 206

原创 AcWing 3034. 望远镜 POJ3675 三角剖分求圆与多边形的面积交并

题意https://www.acwing.com/problem/content/description/3037/求以原点为圆心的圆与一个简单多边形的面积交思路将多边形每条边与圆心相连求出其围成的有向三角形面积(三角剖分思想)相加即为答案求次面积交要考虑的状态如下:(设多边形某条边上的两端点为Point a,b,如果线段ab与圆有交点设交点为papb)1.a b均在圆内 S= Cross(a,b)/2;2.ab均在圆外①ab与圆心O的距离 >= R, S ...

2021-02-10 17:25:25 262

原创 AcWing 2119. 最佳包裹 (三维几何基础三维凸包)

三维凸包模板增量算法复杂度O(n^n)枚举点集每次看点与当前所有面的关系Pr能照到的面删除剩下的保留搭配np[]再将交界处的边与Pr的连接面加入np[]注意需要对数据微小扰动防止存在四点共面#include<cstring>#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;c...

2021-02-07 19:34:29 209

原创 AcWing 2785. 信号增幅仪

题意https://www.acwing.com/problem/content/description/2787/给你一个椭圆的倾斜角和短半轴与长半轴的比值问你将n个点全部覆盖的最小短半轴椭圆是多少思路根据椭圆的标准方程考虑将坐标压缩已知P =a / b , x' = x / P,y' = y 满足 x'² + y'² = 1;所以坐标先顺时针旋转后再压缩就变成了一个最小圆覆盖问题!代码#include<cstdio>#include<...

2021-02-07 00:25:00 167

原创 AcWing2957. 赛车

题意https://www.acwing.com/problem/content/2960/思路每个赛车的方程y =vi * t + ki;可知这是一个在x正半轴的(t >= 0)的半平面交添加两条封口的L 对于每条方程维护左边区域所有在core上的边/点都满足曾经不慢于others的条件有重边要处理一下代码#include<cstdio>#include<iostream>#include<algorithm>#includ...

2021-02-03 23:59:19 102

原创 AcWing 200. Hankson的趣味题

题意t组(2000)每组abcd问你有多少个x满足gcd(a,x) == c && lcm(b,x) == d思路题面给了0.3s根据题意可知x一定是d的因子,考虑枚举d的因子在check是否满足上面两个式子(check复杂度logn)纯暴力枚举d的因子是sqrt(n)的,那么总复杂度 2000 *sqrt(1e9) * logn≈ 1e8怎么减小寻找d的因子的复杂度呢?因为1e9内的一个数的约数<1600个,所以我们可以把sqrt(1e9)内的质...

2021-01-29 23:59:12 114

原创 Codeforces Round #697 (Div. 3) 1475 G. Strange Beauty

题意给你n个数(2e5) a[](2e5)问你最少删掉几个使得剩下的数两两之间一个数是另一个数的因子思路dp[i]表示数组中留下最大值到i有多少个数能留下ans =n -max(dp[]);要使两两之间一个数是另一个数的因子则如果当前最大到i,那么每个i的倍数j(i是j的因子)都能继承更新dp[i]的值,因为如果一个数k是i的因子(包含在dp[i]里) && j是i的倍数,那么k也一定是j的因子 //dp[j]=max(dp[i],dp[j]);代码#in...

2021-01-28 02:13:41 201 1

原创 Acwing198. 反素数

题意给你N(<2e9) 求N以内约数个数最多的最小的那个数?思路X = 2^c1 * 3^c2 * …… * 23^c9 约数个数=(c1 + 1)*(c2 + 1)*.....*(cn + 1);2e9的范围质因子最多用到23质因子的次数(c1~cn)最多是30(<2^31)且次数满足递减 c1>=c2>=c3......>=cn这是因为约数的个数只与次数c1~cn相关,我们要找的是约数个数最大的最小的那个数,如果c2>c3将两者次数交换产...

2021-01-27 01:17:47 122

原创 AcWing 196.质数距离

题意https://www.acwing.com/problem/content/198/思路题目旨在问对于一个较大的L、R区段如何对区段内数字判断isprime?假设A是合数则A必有一个因子< sqrt(A)所以我们可以对sqrt(R)以内的数据范围线性筛出所有素数prime[]对于现有这PNum个素数将他们在[L,R]内的倍数(>=2倍)全部标记为合数(埃筛)数据范围过大可以用相对位置标记代码#include<cstdio>#includ...

2021-01-24 00:42:56 181

原创 中国剩余定理 CRT

参考:https://www.cnblogs.com/MashiroSky/p/5918158.html问题求x?m[]互质推理过程详见上面链接poj1006互质版裸题#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int a[4],m

2021-01-21 00:38:59 124

原创 扩展欧几里得 extend_Euclid

推导过程原理代码int exgcd(int a,int b,int &x1,int &y1){ if(!b){ x1 = 1,y1 = 0; return a; } int x2,y2; int d = exgcd(b,a % b,x2,y2); x1 = y2,y1 = x2 - (a / b) * y2; return d;}求逆元x是a关于m的逆元

2021-01-14 01:32:02 102

原创 codeforces 1469 E. A Bit Similar(unorderedmap + bitset)

题目链接:https://codeforces.com/contest/1469/problem/E题意:给你一个长度为n的01串,请问你能否构造出一个k长度的01串使这个构造出来的串与原串的所有k长度的子串都至少有1位相同(同位数字符一样)NO/YES输出构造串n,k<= 1e6思路:算是个思维题⑧2^20 > 1e6(n - k + 1种子串的情况) 所以对于超出20位的部分可以一律不考虑将长度为k的串分成两部分前Len(=n - K) +后K(=m...

2021-01-12 16:30:34 258

原创 uva10173 最小矩形覆盖

题意给你一个点集求出能覆盖这个点集的最小矩形面积思路代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<string>using namespace std;const double eps = 1e-8;const double pi = acos(-1.0).

2020-12-08 21:52:10 117

原创 poj3608 两凸包间最小距离 旋转卡壳

题意给你两个凸多边形问你两凸多边形的最近距离思路找到凸包 p 的 y 值最小点 yminP 和 q 的 y 值最大点ymaxQ枚举P[yminP]-P[yminP + 1]这条边与Q[ymaxQ]Q[ymaxQ]旋转卡每次找到最近后min(四个点两条边的距离)代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using name...

2020-12-06 20:32:37 173

原创 bzoj1069最大土地面积(旋转卡壳)

bzoj1069给你n个点围成的土地让你选择四个点使构成的土地面积最大注:求对踵点的时候记录每对对踵点的len及dzd[]数组以便计算面积从第一对对踵点开始CD分别是当前对踵点(最大土地面积的对角线)对应的另外两个点显然寻找CD的过程同样符合旋转卡壳的单调性所以可以O(n)维护出最大面积#include<cstdio>#include<iostream>#include<algorithm>#include<cmath&g...

2020-12-04 20:01:34 211 2

原创 2018icpc沈阳L Machining Disc Rotors 求圆与圆的交点

题意T组(5000)每组给你一个圆心在(0,0)半径R的圆 和n(100)个圆的圆心和半径分别与circle(0,0)相交 重叠部分删去 题目保证这n个重叠间相互不重叠 问你对于Circle(0,0)剩下的区域中最远两点的距离思路先求出圆圆交点 再对于这些交点构成的凸包旋转卡壳求平面最远点对(这里时间给了8s 不卡壳暴力也能过)需要注意的是 在对凸包卡壳之前要判断 是不是存在一个交点在Circle(0,0)上的对称点不在那n个圆内 此时ans = R 否则答案才是凸包最远点对求两圆交点.

2020-12-03 22:13:27 208

原创 poj2187 旋转卡壳模板 求平面最远点对 + poj2079 求平面选三个点围成最大三角形面积

题意n个点求最远点对的平方思路旋转卡壳模板m==1 || m == 2的情况直接特判逆时针枚举每一条线及当前线上两点(a[i],a[i+1])的可能对踵点(a[j])因为j对于i,i+1而言存在先单调增再单调减的过程,所以直接先前推进j(j = (j + 1) % m)RotatingCalipers O(n) 凸包O(nlogn)复杂度O(nlogn)代码#include<cstdio>#include<iostream>#includ...

2020-12-02 18:06:50 120

原创 2018CCPC吉林E The Tower

题意给你一个锥心位于(0,0,0)的圆锥体给出rh再给你一个人的坐标(x0,y0,z0)和他三个方向的速度(vx,vy,vz)问你人和锥体相撞的最短时间是?思路列出各种不等式然后各种代换解二元一次方程这玩意儿是真难算啊 过程如图(字丑写给自己随意看的):代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using nam...

2020-12-02 01:35:12 159 2

原创 2019CCPC秦皇岛A Angle Beats

题意给你n个点(p[])再给你m个查询每次一个点(A[])问你与当前查询点能构成直角三角形的点对有多少对?题目多组思路好怪异啊hdu6731上给的15sgym102361上给的4s(好像比赛的时候就是4s)大体思路:A作直角顶点 +A不作直角顶点两种做法:1.离线去做,对于A作直角顶点的情况,每次从A[]里选择一个点作为极角排序的参照点对p[]排序然后O(n)枚举与A相连边的i及此时有多少j满足∠iAj=90复杂度q*n*logn对于p作直角顶点的情况,每次从p[...

2020-11-29 21:33:58 119

原创 poj2354 地球坐标系求球体两点间的距离

题意给你地球上两点的经纬度求球面距离思路//d(x1,y1,x2,y2)=r*arccos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))//x1,y1是纬度\经度的弧度单位,r为地球半径角度 =d + m / 60.0 + s / 3600.0;代码#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#..

2020-11-26 16:19:40 391

原创 poj1375 解析几何 求点与圆切线在幕布上的映射(求切线)

题意:给你一个光源和n个圆形障碍物,现在光源向y = 0投影问你被圆遮住的阴影区段有哪些?思路:图是偷的qaq可以求出图中∠a和∠b投影到下面幕布的区段: (b-a的正负不打紧,我们根据角度求映射距离,负角就变成了O.x+……了)double OA = dis(O,a[i]);//圆心与光源的距离double a = asin(a[i].r/OA);//R对角的角度double b = asin((O.x-a[i].x)/OA);//圆心与y轴的角度ans[i].L = ...

2020-11-25 15:22:20 177

原创 2018icpc EC-final F gym102056

题意:给你一个实心球的球心+R给出S、T两点在三维空间的坐标问你S走到T的最短距离思路1.dis_st == 0.02.∠S或∠T >= pi/2说明直线必定不与球相交3.O到ST的距离H >= R也不相交4.常规相交:分别求出S、T与球相切这段的距离(勾股定理)、求出绕球(圆切面)的弧线距离L =πR这里求弧度需要用到余弦定理求H:正弦定理面积=H*L上代码#include<cstdio>#include<iostr...

2020-11-25 02:15:54 203

原创 poj2540 半平面交求可行性区域解线性规划

题意:现有一个[0,0]到[10,10]的方格子,已知这里面有一点火源,但你不知道其确切位置你初始在(0,0)每次移动到下一个点并告知你距离火源和上一次比较是更近还是更远或者Same。对于每次移动你需要给出目前火源可能在的区域面积。思路:每次找到lst与cur点的中垂线,显然hotter的一边计入答案与原先剩下的面积半平面交求中垂线:中点为mid,法向量Fa,中垂线向量(mid,end) end =mid+Fa; Vector QAQ; QAQ.x = cur.x -...

2020-11-23 18:39:51 144

原创 poj1755 半平面交解不等式

题意给你n个人铁人三项的速度(n<=100),每项比赛长度可调节,问你对于每个人来说,调节比赛长度这个人有没有获胜(比剩下人都快)的可能。思路三项速度设为ui,vi,wi长度a b ct = a / ux+ b / vx+ c / wx;获胜需满足对于所有i: (1/ux - 1/ui)*a + (1/vx - 1/vi)*b + (1/wx - 1/wi)*c < 0已知c!=0,那么可将c除过去即 (1/ux - 1/ui)*a/c + (1/vx - 1/...

2020-11-23 01:33:01 272 2

原创 POJ3384 多边形内两定R内圆最小覆盖

题意顺时针给出一个凸多边形 要在多边形内放入两个半径为R的圆问这两个圆最小覆盖面积(==多边形尽量被圆覆盖)两个圆的圆心?思路对每条线向内平移R求凸核此时凸核内距离最远的两点就是圆心要注意存在凸核中只有一个点的情况。上代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const dou...

2020-11-19 17:39:21 285

原创 poj3525 计算凸多边形最大内接圆(二分+半平面交 )

题意给你一个凸包问你凸包的某一点到每条边的最短距离最大?思路题目的实质就是多边形的最大内接圆半径!二分圆的半径mid,用半平面交验证,每条直线向内平移mid的距离,之后跑一遍半平面,判断有没有凸核,若有凸核,l=mid(进一步扩大范围),else r=mid将逆时针凸包中每条边向内推进R的实现:直线平移!把直线表示成Ax + By + C = 0后(已考虑顺逆时针所带来的正负号问题),把直线向内推进d时,只需要写:c += d * sqrt(a*a + b*b); ..

2020-11-19 14:39:34 562

原创 半平面交模板

题目:按顺序给出多边形的点问你是否有核?半平面交:1.把输入点的顺序捋成逆时针2.对所有边排序极角小的在前极角相同最右边的方最前面3.根据2的排序去重4.模拟双端队列求出构成核的直线集合:每次判断前两条边的交点在当前边的右边与否5.判断双端队列里元素的个数 >=3 YES为啥子双端队列呢因为极角排序这其实是个环所以记得判一下首尾连接处。6.齐活NICE!上代码!#include<cstdio>#include<iostream&...

2020-11-16 23:20:54 148 2

原创 poj1873 The Fortified Forest (状压+凸包)

题意:平面上有n棵树(2~15),现在要砍掉其中的一部分来做成篱笆将剩下的树包围起来,现在给出每棵树的坐标、价值和可以制造篱笆的长度,求砍掉最少价值的树,将剩下的树包围起来,当两种方式的价值相同时,取砍掉树更少的方式。输出砍掉的树和篱笆剩余多少。思路位运算枚举砍掉的树的L和保留的树的凸包周长。代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>.

2020-11-11 11:17:27 118

原创 poj1265 皮克公式 求多边形面积(凹凸)

题意一机器人从原点出发进行n 次移动,每次向右移动dxi​,向上移动dyi​,求画成的多边形内部有多少格点,边界上有多少格点,及其面积多大?皮克公式:S =内部点 +边界点/2 - 1;求出多边形面积(叉积),gcd求出边界点,皮克公式推内部点。顺便一提这题不知道为啥poj又是交G++waC++AC……#include<cstdio>#include<iostream>#include<algorithm>#include<cm...

2020-11-06 21:05:59 283

原创 Graham Scan O(nlogn) poj1228稳定凸包

1.找左下角点p[0]2.以p[0]为C极角排序(叉积同角度dis取min)3.遍历叉积判断p[i]加进凸包队列后前面哪些点pop可以保证在最差情况下也能在O(nlogn)的时间复杂度求出结果#include<cstdio>#include<iostream>#include<algorithm>#include<cmath> using namespace std;const double eps = 1e-8;con...

2020-11-05 22:07:37 133

原创 HDU6231 2017CCPC 哈尔滨B K-th Number

题意给你一个A数组让你其中每个len>=k的区间中的第k大数丢到另一个B数组问你B数组中的第M大思路二分答案check(x)求出区间第k大>=x的个数(尺取)check(x)==M刚好是答案>M:X还可以更大#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;typedef l...

2020-10-30 21:08:54 126

原创 hdu6230 2017CCPC 哈尔滨A Palindrome

题意给你一个1e5的字符串,让你求出子串的数量,使得子串满足:长度为3n−23n−2,且[1,2n−1][1,2n−1]和[n,3n−2][n,3n−2]都是回文串。思路这两个回文串长度都是奇数manachar求出每个位置的最长回文半径那么假设两个回文中心为ij那么需满足 i + r[i] ≥ j &&j −r[j] ≤ i用树状数组离线求答案G[i - r[i]].push_back(i);//G[这个位置开始的].push_back(覆盖到哪里);...

2020-10-29 22:13:47 121

原创 zoj3891 2017CCPC秦皇岛站A

题意n支队伍,一张桌子有m个座位顺时针编号1~m。p个预言。预言a队伍在b时刻ac一道题目。机器人每个时刻都顺时针走一步,有需要气球的就发。每支队伍,ac后多少时刻没收到气球就有多少不开心的值,问机器人起始位置在哪里可以使得总的不高兴值最小。输出最小的不高兴值。题解n 1e5 m 1e9 ,robot的可能出发位置一定是在这1e5个之内,就是当它到某个队伍可以恰好给这个队伍气球的时候,这个位置一定是其中之一。可以将所有队伍的AC时间等价到一支队伍上,例如第一支队伍位置p1,A题时间为a,第.

2020-10-27 00:30:51 85

原创 hdu6547 2019CCPC女生专场 树链剖分+势能线段树

题意:给出一棵树op = 0求u到v链上的和 op = 1将u到v链上所有元素开根向下取整树链剖分模板 +势能线段树(势能线段树大佬博客)#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int MaxN = 1e5 + 5;typede...

2020-10-13 20:33:47 154 1

原创 poj1556 线段相交+最短路

题意:10*10迷宫,n堵墙,求(0,5)到(10,5)的最短距离找出墙边缘点和起止点两两之间是否可以直线直接通过(不与其他墙相交)可以的话存图跑一遍dij#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<string>#include<vector> ...

2020-10-05 02:41:35 123

原创 poj2826

题意:给你两个线段填空垂直下雨问能接到的水的面积ans = 0.0:1.存在线段平行y轴2.两线段重合平行不相交2.一条线挡住另一条求S:点到直线的距离 *x / 2注:自己加的点虚构的坐标可能和原有的点撞上啊!加个一啊!答案最好加eps#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring...

2020-10-02 21:20:39 71

原创 POJ2074 视线相交

https://vjudge.net/contest/377085#problem/O普通的线线相交有一些细节#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring> using namespace std;const double eps = 1e-8;const double pi = acos(-1...

2020-10-02 13:37:40 213

原创 poj1696 卷包裹法 O(N H)求凸包

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int inf = 0x3f3f3f3f;const double eps = 1e-8;int t,n,ans[55];bool vis[55];struct Point{ double x,y;.

2020-10-01 13:55:54 109

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除