自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷 P2672 推销员(线段树+贪心)

假设走过了 {pi,pj,pk} 家住户,那么疲劳时最大是 max{pi,pj,pk}(最远距离)+sum{pi,pj,pk}(每户人口积累的疲劳值)所以我们只要维护区间最大值与区间和即可,但是现在有一个问题,不知道维护哪一段区间,如果下一步能够想到贪心,这个题应该可以解决了按照 A 的大小降序排序,如果 A 大 S 大,那么毫无疑问 如果 A 小 S 大,如果 S 足够的话,也会被选择 如果 A 大S 小,只有可能被 2 这种情况取代const int N=1e...

2020-11-30 11:51:38 77

原创 洛谷 P2205 [USACO13JAN]Painting the Fence S(差分+思维)

可以利用差分的思想,在区间 [l,r] 的起点 l 处 col+1,在 r+1 处 col-1,这样再根据当前 col 的值与 k 值比较,可以发现当 col 刚刚被加至 =k 时,之后的区间才会对答案有贡献 当 col 刚刚被减至 <k 时,之前的区间会产生贡献 所有区间遍历完毕,col=0,即不会产生遍历完所有区间还有区间又贡献的情况最后要注意,题目中要求的涂块,而不是涂点const int N=1e5+5; int i,j,k; int n,m;...

2020-11-30 10:43:13 112

原创 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 32

原创 训练周记

这周终于开始学计算几何的相关的算法了,但是不知道用什么相关的书籍,有些地方不知道怎么推过来的,看起模板来有种学数学的感觉,从周四开始在洛谷上赶着线段树的题目开始刷,刚刚把普及的部分做完。线段树的码量太大了,过去认为会了线段树就不用再学树状数组了,但是有些题目用树状数组写起来比较方便,中间补了一下树状数组的一系列操作。普及组涉及到的一些小的知识点的,像离散化,差分,正是我现在需要的,但是有的时候按照专题来刷会出现题目与考点不匹配的情况,这也是我之前不想刷洛谷的原因,但是其中的题目就硬往线段树上用,有些

2020-11-29 22:33:00 107

原创 洛谷 P3611 [USACO17JAN]Cow Dance Show S(线段树+二分)

//#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-29 17:03:05 57

原创 洛谷 P3353 在你窗外闪耀的星星(树状数组)

利用数组在 x 处做个映射,为 x 点处的亮度之和,这样利用树状数组在区间查询的时候要注意一下端点的情况从位置 1 开始,一直到 1e5,寻找最大的区间和,复杂度为 O(1e5logn),不开 o2 过不去,但是修改一下循环条件即可const int N=1e5+5; int i,j,k; int n,m; int a[N]; int c[N];void add(int x,int w){ for(;x<=n;x+=lowbit...

2020-11-29 11:29:51 54

原创 洛谷 P2184 贪婪大陆(树状数组+差分)

题意不太明确,炸弹并不会覆盖区间根据差分的思维,在 [l,r] 区间内添加一枚炸弹,diff[l]++,diff[r+1]-- 查询区间内有多少颗炸弹时,需要遍历区间 [l,r] ,如果利用树状数组维护的话,复杂度会小很多const int N=1e5+5; int i,j,k; int n,m; int a[N]; int c[N][2];void add(int x,int k){ for(;x<=n;x+=lowbit...

2020-11-29 10:48:45 106

原创 洛谷 P1083 借教室(差分+二分)

一眼差分,被差分虐的太惨了题目知道用差分求解后比那的简单许多,区间大小为 1e6 ,利用二分枚举可以最多到第几天满足教室数目,所以答案就是 ans+1const int N=1e6+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r,d; void read(){ sddd(d,l,r); } }seg[N]; int diff...

2020-11-29 09:49:18 107

原创 洛谷 P2574 XOR的艺术(线段树)

const int N=2e5+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r; int lazy; int sum; void update() { lazy^=1; sum=(r-l+1)-sum; } }t[N<<2];...

2020-11-28 11:16:50 49

原创 洛谷 P2357 守墓人(树状数组)

树状数组区间更新,区间查询的入门好题const int N=2e5+5; int i,j,k; int n,m,t; ll a[N]; ll c[N][2]; ll sum[N]; void add(int x,int y,int k){ for(;x<=n;x+=lowbit(x)) c[x][k]+=y;}ll ask(int x,int k){ ll ans=0; for(;x;x-...

2020-11-28 10:53:29 103

原创 洛谷 P1637 三元上升子序列(权值线段树+离散化)

和求逆序对的题目差不多,还是按照桶排的思想,将线段树上的每一个点映射到对应位置,然后动态加点,统计每个数 a[j] 之前有多少个 a[i] 满足题目要求,将线段树清空后,再从后遍历一遍数组,寻找 满足 a[k] 的个数,根据乘法原理,两边求得的数相乘即可得到答案,当然对数据需要离散化才可以,用树状数组的话码量会小一点const int N=3e4+5; int i,j,k; int n,m,t; ll a[N]; vector <ll> v...

2020-11-27 19:31:46 57

原创 HDU 4638 Group(莫队)

给出一个长度为 n 的序列,每次查询给一个区间,问区间可被分成多少个连续的段其实思路并不是很难,考虑任意一个值 x ,被删除后 ,判断 x+1,x-1 是否存在,这样推出答案以后长记性了,一定要先扩充区间。const int N=1e5+5; int i,j,k; int n,m,t; int a[N]; struct Node { int l,r; int bel,id; bool op...

2020-11-26 15:23:17 32

原创 洛谷 P1774 最接近神的人(权值线段树+离散化)

根据贪心,每次都要交换两个逆序对,所以这个题目就是求逆序对的个数利用权值线段树来动态加点,每次询问找区间内 [id+1,n] 的所有数的个数,由于取值线段树本身具有顺序,所以可以将区间查询变为单点查询最后注意输出一定要 printf("%lld\n") ( 用 I64 错都不知道怎么错的)const int N=5e5+5; int i,j,k; int n,m,t; ll a[N]; struct Node { int l...

2020-11-26 13:18:07 42

原创 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 35

原创 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 32

原创 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 26

原创 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 23

原创 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 25

原创 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 28

原创 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 36

原创 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 15

原创 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 30

原创 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 20

原创 训练周记

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

2020-11-22 21:41:27 31

原创 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 37

原创 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 27

原创 洛谷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 64

原创 洛谷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 23

原创 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 165

原创 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 30

原创 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 28

原创 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 102

原创 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 25

原创 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 32

原创 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 25

原创 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 57

原创 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 39

原创 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 36

原创 训练周记

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

2020-11-15 22:48:54 38

原创 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 27

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的粉丝

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