自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(908)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Codeforces Round #340 (Div. 2) E. XOR and Favorite Number(莫队+前缀异或)

给出数 n,m,k ,现在有 n 个数,m 此询问,每次询问给出 l,r 代表区间,求任意满足条件的的 l <= i <= j <= r 的 i ,j 使得 a[i]^a[i+1]^……a[j]=k,求可以找出多少对 <i,j> 这样的二元组离线问题,我们采用莫队的方法来求解但是想要求得任意一个区间的异或值比较困难,由异或运算可得 a^b=k ---> k^b=a所以每一次更新莫队时,例如添加一个数时,因为他不是在左端点添加就是在右端点添加,所...

2020-11-22 20:09:53 15

原创 HDU 5213 Lucky(莫队+容斥)

给出 n 个数和数字 k,有 m 此询问,每次给出两个区间 [l,r] [u,v] ,问每次询问时,从两个区间内各选一个数字 x,y ,问有多少个二元组使得 x+y=k 成立本来是打算直接用两个莫队来维护这两个区间,但是超时了,想想也是,有 e7 的级数这个题可以将这两个区间和并,因为注意到 l,r,u,v 的关系是单调递增的,所以合并之后用一个莫队来解决,为了满足题目中所说,分别从两个区间中选择 x,y ,所以从区间 [r+1,v] 和 [l,u-1] 中选择的另一个数字是不合法的,所...

2020-11-25 11:05:36 6

原创 UVA 11168 Airport(凸包)

Sample Input440 00 11 01 1215035 3957234582 3953530 00 11 050 00 22 02 21 1Sample OutputCase #1: 0.500Case #2: 0.000Case #3: 0.236Case #4: 1.000

2020-11-25 08:47:42 8

原创 UVA10652 Board Wrapping(凸包)

Sample Input144 7.5 6 3 08 11.5 6 3 09.5 6 6 3 904.5 3 4.4721 2.2361 26.565Sample Output64.3 %

2020-11-24 16:51:08 9

原创 SGU 154. Factorial(二分+数学)

给出一个询问 Q,问是否存在一个数 N,使得 N !中包含 Q 个 0,如果有输出 N 的值其实想一下应该可以想到,如果 N!中包含 0 的话,一定是在最后面,而阶乘当中想要形成 10,只能依靠 5*2 所作的贡献,因为 2 的个数 >= 5 的个数,也就是寻找的个数。根据容斥原理,N/5 之后,N/25 的贡献只有 1,同理,以此类推 N/625 的贡献也为 1。所以我们只需要找到一个数 N ,使得当式子 可以成立即可利用二分查找,下界显然是 0,上界 5...

2020-11-24 15:31:44 6

原创 POJ 1113 && HDU 1348 Wall(凸包周长)

给出 n 个点,以及数 L,要求修一面城墙花费最少的资源,使得每个点到达城墙的距离全都大于 L求出这 n 各点所形成的凸包的周长+以 L 为半径的圆的周长即可const int N=1e4+5; int i,j,k; int n,m,t; struct Point { double x,y; Point(double x=0,double y=0):x(x),y(y){} }p[N],ch[N]; ...

2020-11-24 14:19:59 10

原创 POJ 3348 Cows(凸包面积)

const int N=1e4+5; int i,j,k; int n,m,t; struct Point { double x,y; Point(double x=0,double y=0):x(x),y(y){} }p[N],ch[N]; typedef Point Vector; Vector operator+(Vector a,Vector b){ return Vector(a.x-b.x,a.y-...

2020-11-24 13:51:04 17

原创 SGU 358. Median of Medians

int main(){ IOS; int a,b,c,maxx,minn; int have[3]; for(int i=1;i<=3;i++){ cin>>a>>b>>c; maxx=max(a,max(b,c)); minn=min(a,min(b,c)); have[i%3]=a+b+c-minn-maxx; } for(int i=0;i...

2020-11-24 08:06:34 7

原创 SGU 404. Fortune-telling with camomile

题目链接:https://codeforces.ml/problemsets/acmsguru/problem/99999/404int main(){ IOS; while(cin>>n>>m){ int res=n%m?n%m:m; string ans,s; for(int i=1;i<=m;i++){ cin>>s; if...

2020-11-23 11:14:24 3

原创 Yandex.Algorithm 2011: Round 2 D. Powerful array(莫队)

给出 n 个数,m 此询问,求区间 [l,r] 内某个数 x 的 val,val 的定义为 :(x 在区间内出现的次数)^2 * x题目链接:http://codeforces.com/problemset/problem/86/D用莫对维护所询问的区间即可,可以推一下假如一个数或删除一个数产生的贡献,或者直接暴力const int N=1e6+5; int i,j,k; int n,m,t; int a[N]; struct Node...

2020-11-23 09:32:43 13

原创 HDU 1756 Cupid‘s Arrow(转角法)

转角法判断点在多边形内部模板题const int N=1e3+5; int i,j,k; int n,m,t; struct Point { double x,y; Point(double x=0,double y=0):x(x),y(y){} }a[N],p;typedef Point Vector ;Vector operator-(Vector a,Vector b){ return Vector(a.x...

2020-11-23 08:47:24 11

原创 训练周记

二分首先就要判断是否符合二分单调的性质;想想发现如果能组成X XX个"2020"子序列,显然也能组成X − 1 X-1X−1个"2020"子序列,反之如果不能组成X XX个"2020"子序列,显然也就不能组合出X + 1 X+1X+1个子序列。...

2020-11-22 21:41:27 17

原创 NC15203 投票统计(离散化)

其实这个题用 map 的话很好解决本题采用离散化解决,利用桶排的思想,因为桶无法申请那么大的内存,所以进行离散化const int N=1e5+5; int i,j,k; int n,m,t; pii a[N],cnt[N]; vector<int> v,ans;int get_id(int x){ return lower_bound(v.begin(),v.end(),x)-v.begin()+1;}bool ...

2020-11-22 15:47:32 15

原创 UVALive 3263 && POJ 2284 That Nice Euler Circuit (欧拉定理+计算几何)

给出 n 个点,将其连成一个回路,问这些线段将平面分成几部分根据欧拉定理,平面数 ans=边数-顶点数+2所以只需要利用计算机和基础计算顶点数和边数即可因为所连的线是由给定的顺序产生的,所以可以从前面按照顺序枚举,两两相邻的点作为一条边,判断是否产生交点由于可能产生多线共点的情况,再进行去重。最后判断每一个点再几条边上,这样线段内的一个点将一条线段分为两条线段const int N=300+5; int i,j,k; int n,m,t; ...

2020-11-22 11:54:06 10

原创 洛谷P1494 [国家集训队]小Z的袜子(莫队)

从总的袜子数中任意选取 2 个作为分母,再从任意颜色相同的袜子数中选取 2 个,可以先与处理一下,这样每次更新减去上一次的值,在加上这一次的值。虽然数据量不大,但是预处理的时候会爆 int ,累加答案的时候也会爆,所以采用 long longconst int N=5e4+5; int i,j,k; int n,m,t; int a[N]; int num,block,bel[N]; struct Node { i...

2020-11-22 10:13:45 52

原创 洛谷P2709 小B的询问(莫队)

const int N=5e4+5; int i,j,k; int n,m,t; int a[N]; int num,block,bel[N]; int ans[N],cnt[N],cur; struct Node { int id; int l,r; }q[N];bool cmp(Node a,Node b){ return bel[a.l]^bel[b.l] ? a.l<b.l ...

2020-11-22 08:34:30

原创 Educational Codeforces Round 98 (Rated for Div. 2) D. Radio Towers(数学)

有 n+2 个发射站,编号为 0 和 n+1 的发射站不能被接收信号,编号为 1~n 的发射站都可以发射信号,信号强度为 c 时,可以传送至编号为 [i-c,i+c] 的发射站上,但是每个发射站只能有一个信号,每个发射站无论信号强度是多少其有信号的概率是 1/2,求 1~n 都有信号的概率是多少自己可以数一下当信号塔的个数为 [1,6] 时的概率,发现分子是斐波那契数列,分母是 2^n 题目很明显要用费马小定理求解逆元,所以算法复杂度 O( logn(mod-2) )c...

2020-11-20 11:37:33 94

原创 2020 ICPC Data Structure Problem(前缀和+线段树)

给出 2n 个数分别代表 a b 两个数组,题目要求维护数 c,c 是由 a,b 递推过来的题目的难点在于如何将单点修改转化到区间上来,我们可以枚举一下 ci 来寻找规律c1=max( a1,b1 ) c2=max( a2,max(b1+b2,a1+b2) ) c3=max( a3,max(a2+b3,max(b1+b2+b3,a1+b2+b3) ) ) 由此可以得出#define inf (1e18+1ll)const int N=2e5+5;...

2020-11-19 22:29:51 13

原创 2020 ICPC Knapsack(超大 01 背包)

如果按照正常解法求解 01 背包问题,一定会超时,先按照性价比选择,减少背包的容量,这样再用一次 01 背包解决问题即可const int N=2e5+5; int i,j,k; int n,m,t; ll dp[100+5]; struct Node { ll w,v; }a[N];bool cmp(Node a,Node b){ return a.v*b.w>a.w*b.v; }in...

2020-11-19 14:41:41 16

原创 2020 ICPC 2020(二分)

给出一个长度为 n 的字符串,统计 {si,sj,su,sv}=2020 的数量,并且 i<j<u<v ,如果一个字符被统计过,那么它不能再次被统计知道题目考察二分之后其实并没有那么难,二分枚举答案 ans,但是要考虑如何构成 2020 才能 ans 个,我们可以按位考虑,必须有第一个2 后面的 0 才有效,有 ans 个 2 后,第二个 2 才开始计数const int N=1e5+5; int i,j,k; int n,m,t; i...

2020-11-19 13:56:11 25

原创 Codeforces Round #682 (Div. 2) C. Engineer Artem(构造)

有 n*m 的方格,构造一个方格每个方格与其上下左右四个方格各不相同,但是构造的方格必须是由原来的方格 +1 或 不变得来的const int N=100+5; int i,j,k; int n,m,t; int a[N][N];int main(){ //IOS; rush(){ sdd(n,m); for(int i=1;i<=n;i++){ for(int j=1;...

2020-11-19 09:30:36 10

原创 HDU 3756 && UVALive 4986 Dome of Circus Dome of Circus(计算几何基础+三分)

Sample Input11.00 0.00 1.0021.00 0.00 1.000.00 1.50 0.5031.00 0.00 1.000.00 1.50 0.50-0.50 -0.50 1.00Sample Output3.000 1.5002.000 2.0002.000 2.000

2020-11-18 10:20:10 18

原创 HDU 4355 Party All the Time(三分)

const int N=5e4+5; int i,j,k; int n,m,t; double a[N],x[N];double calc(double pos){ double ans=0; for(int i=1;i<=n;i++) ans+=a[i]*pow(fabs(pos-x[i]),3); return ans;}int main(){ //IOS; int num=0; rush(){ ...

2020-11-18 09:57:16 13

原创 UVA12300 Smallest Regular Polygon(计算几何基础)

Sample Input0 0 1 1 41 2 3 4 52 3 4 5 60 0 0 0 0Sample Output1.0000005.2573115.196152给出两个点的坐标以及整数 n,求穿过这两个点的面积最小的正n边形要求面积最小,根据贪心这条边一定是最长的一条对角线将这个正 n 边形放到圆内,360 被分成了 n 分,每份记为 x°,我们只要知道这个圆的半径之后就可以求得这个 n 边形的面积n 为偶数的时候,就是这两点之间的距离的一半...

2020-11-18 08:09:04 49

原创 UVA11817 Tunnelling the Earth(计算几何基础)

Sample Input143.466667 -80.516667 30.058056 31.228889Sample Output802333输入两个点的经纬度,已知地球半径为 6 371 009 ,求这两点之间的弧长与直线距离的差不难想到要将所给点的经纬度转化成球上的坐标,剩下的按照常规求解,将这两个点看做成一个向量向量的长度为直线距离 = 向量自身的点积 再开平方 弧长=两点与坐标原点所形成向量的夹角*地球半径 struct Point ...

2020-11-16 19:05:59 19

原创 UVA11800 Determine the Shape(计算几何基础)

Sample Input60 02 02 20 20 03 03 20 20 08 45 03 40 02 03 21 20 05 04 31 30 05 04 31 4Sample OutputCase 1: SquareCase 2: RectangleCase 3: RhombusCase 4: ParallelogramCase 5: TrapeziumCase 6: Ordinary Quadrilateral给...

2020-11-16 18:24:27 31

原创 训练周记

这周入门了一下计算几何,码量挺大的,由于都是基本运算,还没有涉及算法知识,就先不整理了之后打算在学习计算几何的同时,再回顾一下数据结构,总的 ACM 知识最后看看字符串还有没有能力学下去,打算就看这几个专题看的深一点,毕竟每块算法都入门一下和没学没什么不同。周六和 lxh 把小米 ICPC 第二场网络海选赛打了一下,跟他还是挺好交流,但是做的还是差强人意,数据结构的那道题不知道怎么进行区间更新,这也是我想要深入学习一个原因,今年的比赛不打算参加了,还没有找到合适的队友,没有打下去的必要。这.

2020-11-15 22:48:54 18

原创 LOJ #6282. 数列分块入门 6

这种题也可以用分块!用 vector 维护每个整块内的元素,利用内置 insert 函数可以很方便的插入,但不要忘记 vector 是从下标 0 处开始计数当 vector内的元素个数大于一定程度时,需要重新分块,因为 vector 插入的复杂度较高const int N=1e5+5; int i,j,k; int n,m,t; int a[N<<1],block,num; //不断插入元素,数组开大一点 vector<in...

2020-11-15 21:48:28 19

原创 UVA11646 Athletics Track(计算几何基础)

Sample Input3 : 25 : 4Sample OutputCase 1: 117.1858168913 78.1238779275Case 2: 107.2909560477 85.8327648381有一个长为 400 米的跑道,给出跑道矩形的长和宽的比值,已知两边的圆弧(silced circle)是以矩形中点为圆心的圆弧,求长与宽的值如上图所示,我们可以由比例求得 r 的大小和的大小,由于 r 并不是真正的 r 的值,跑道的一半长度为 200,...

2020-11-15 17:53:12 16

原创 UVA11524 InCircle(计算几何基础)

Sample Input2140.950053649715.3010457320 550.3704847907464.9681681852 65.973737823055.0132446384 10.7791711946208.2835101182145.7725891419 8.82641764527.6610997600 436.1911036207483.6031801012 140.2797089713Sample Output400156.40759088...

2020-11-15 12:55:02 16

原创 LOJ #6284. 数列分块入门 8

设置一个数组维护一个块内所有的数是否相等,若全部等于 x,则将数组标记为 x,这样在处理整块的数组时,只有 tag[]=-1 时需要操作,对于不是整块的暴力即可const int N=1e5+5; int i,j,k; int n,m,t; int a[N]; int bel[N],num,block; int L[N],R[N],tag[N];void build(){ block=sqrt(n); num=n/bloc...

2020-11-15 10:00:29 14

原创 UVA11437 Triangle Fun(计算几何基础)

23994.707 9251.677 4152.916 7157.810 5156.835 2551.9726903.233 3540.932 5171.382 3708.015 213.959 2519.85298099206144在三角形 ABC 中,D E F 分别是三边的三等分点,P Q R 三点构成了一个三角形,求这个三角形的面积 int i,j,k; int n,m,t; struct Point { dou...

2020-11-14 22:22:12 14

原创 UVA11186 Circum Triangle(计算几何基础)

现在有一个圆心坐标在 (0,0) 的圆,给出 n 个点的极角,再给出圆的半径 r可以证明任意在圆上的三个点是不共线的,所以求出任意三个点所围成的三角形的面积之和题目告诉了圆心的坐标和圆的半径,以及点的极角,所以很容易求得所有点的坐标,然后暴力枚举,利用向量的叉乘计算各个三角形的面积由于点的个数只有 500 ,所以 O(n^3) 的时间复杂度完全可以const double pi=acos(-1.0);const int N=500+5; int i,j,...

2020-11-14 16:44:50 28

原创 UVA10566 Crossed Ladders(计算几何+二分)

有两把梯子搭在墙上,给出这两把梯子的长度 x,y,以及他们的交点,交点的高度为 h,求这两个房屋之间的距离 double x,y,h;bool C(double aim){ double ans=1.0/sqrt(x*x-aim*aim)+1.0/sqrt(y*y-aim*aim); if(ans<1/h) return true; else return false;}int main(){ //IOS; while(~s...

2020-11-14 15:47:13 22

原创 2020 ICPC Determinant(计算行列式)

按照题目要求计算行列式 M对行列式进行消元,换成下三角行列式即可const int N=1e5+5; int i,j,k; int n,m,t; ll a[N]; ll b[N];void rep(ll &x){ x%=mod; x+=mod; x%=mod;}int main(){ //IOS; while(~sd(n)){ ll x=read(); ...

2020-11-14 15:03:28 21

原创 LOJ #6283. 数列分块入门 7

标记下传代码:const ll mod=10007;const int N=1e5+5; int i,j,k; int n,m,t; int a[N]; int bel[N],block,num,L[N],R[N]; int sum[N],tag[N]; //sum 表示块+,tag 表示块*void build(){ block=sqrt(n); num=n/block; if(n%block) num++; ...

2020-11-12 18:25:59 11

原创 UVa 11178 Morley‘s Theorem(计算几何基础)

//#pragma GCC optimize(2)//#include <bits/stdc++.h>#include <iostream>#include <cmath>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <vector>#include <utility>.

2020-11-12 15:01:37 13

原创 LOJ #6281. 数列分块入门 5

对于一个区间内开平方的复杂度是相当大的,但是只有当一个区间内有一个数 >=2 时才有资格开平方,所以添加一个数组来维护整个块是否需要开平方const int N=5e4+5; int i,j,k; int n,m,t; int a[N]; int L[N],R[N]; int bel[N],block,num,sum[N],all[N];void build(){ block=sqrt(n); num=n/bloc...

2020-11-12 09:00:11 20

原创 LOJ #6280. 数列分块入门 4

利用分块,对于整块的再加一个区间和的数组来维护然后一直 WA,看了看讨论的,要开 long long …… 可能是做法太暴力了吧const int N=5e4+5; int i,j,k; int n,m,t; int a[N]; int L[N],R[N]; ll bel[N],block,num,sum[N],all[N];void build(){ block=sqrt(n); num=n/block; if(n...

2020-11-12 08:23:08 23

原创 LOJ #6279. 数列分块入门 3

根据分块的思想,对于不整块的我们直接暴力统计,但是对于整块的,我们可以对每一块进行一个排序,利用二分查找找出最大的小于 c的数,然后重复此操作即可const int N=1e5+5; int i,j,k; int n,m,t; int a[N]; int L[N],R[N],bel[N],block,num; int tag[N],b[N];void build(){ block=sqrt(n); num=n/bloc...

2020-11-11 21:33:40 19

codeblocks17.12安装包.zip

适合新手使用的编译器,之后更新 百度网盘安装包: 链接:https://pan.baidu.com/s/1M1PGcirlC0He1WjOFrw8gQ 提取码:jfq5

2020-07-02

scanf运行完在缓存区留下回车,再用cin输入回车

发表于 2019-11-18 最后回复 2019-11-18

空空如也

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

TA关注的人 TA的粉丝

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