自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二维凸包

二维凸包二维凸包是计算几何的基础算法。这里是Graham算法我们首先找到一个一定在凸包上的点,即纵坐标最小的点中,横坐标也最小的点。然后将其他的点按照与这个点的极角排序用栈维护,依次扫描这些排序的点然后如果当前点和栈顶的两个点形成了凸包,就将栈顶弹出。加入当前点对于三点共线的情况,我们将距离远的点排在距离近的点的后面,这样在弹的时候就会将近的点弹掉,只留下远的点。没什么细节,注意e...

2019-12-27 21:34:17 247

原创 射线法

射线法这是一个大佬看了都说简单的算法。。。。(甚至觉得没有掌握的必要)QAQ这个算法是用来判断一个点是否在一个多边形以内。很简单 将这个点沿着x轴的正方向作射线。如果穿过的边数为基数,那么这个点在多边形内;反之不在。由于有可能出现经过两条边的相邻的点,而被重复计算的情况。我们只需要采用上加下不加策略,即如果射线经过了这条边的上顶点,则cnt++,如果经过下顶点,则不变。经过这条边上除了上顶...

2019-12-27 21:33:44 1444

原创 线性求乘法逆元

线性求乘法逆元,保证模数为质数#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#define int long long using namespace std;const int maxn=3e6+10;int read(){ in...

2019-11-15 09:26:01 112

原创 非严格次小生成树+严格次小生成树

非严格次小生成树+严格次小生成树非严格次小生成树:首先使用最小生成树算法将最小生成树求出来,将生成树建图,然后用倍增维护树上的最大值。 考虑将所有的非树边一次加入最小生成树,并将新边与最小生成树形成的环上最大的边给删了,记录答案,然后答案最小值即为非严格次小生成树。这个代码并没有求非严格次小生成树,但是除了没有记录答案以外,其他都一样#include <cstdio>#incl...

2019-11-15 08:40:49 558

原创 2019-11-14

T1看到图的数据的时候,觉得有点凉凉。然而后面突然发现k<=10k<=10k<=10 ,而题目又是让你计算选[lx,rx][lx,rx][lx,rx] 个宝藏得分最多。 惊奇的发现可以用状态压缩或者全排列 来枚举哪些宝藏该选。而宝藏与宝藏之间如何走呢?显然对于每一个宝藏都跑一次最短路。然后这道题就没了。注意数组,因为图是500∗500500*500500∗500的,因此dis...

2019-11-14 22:01:09 75

原创 2019-11-12

T1一道知道了结论就很简单的题。。 显然~~(?)~~ ,按照字典序输出的字符串满足条件。。然后用stl自带的sort排一下序就可以了。#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;const ...

2019-11-12 20:07:48 92 1

原创 2019-11-11

T1一道。。。很水的题。。感觉是个人都会做吧QAQ 随便upper_bound 一下就好了#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int maxn=300000;const ...

2019-11-12 07:32:44 97

原创 2019-11-9

T1显然,对于一个城堡,要么就不放兵,要么就放到2∗ai+12*a_i+12∗ai​+1然后对于一个城堡,我们首先将对手放兵从小到大排序,然后就是一个分组背包(每一组只能选1个)的问题了QAQ 复杂度O(nms)O(nms)O(nms) 因为跑不满上界,所以过得了。#include <cstdio>#include <iostream>#include <a...

2019-11-09 17:05:29 98

原创 2019-11-8

T1真的太巧妙了O(1)做法 其实我不会o(n)做法首先考虑到 x=−1,x=0,x=−1x=-1,x=0,x=-1x=−1,x=0,x=−1 是三个互不关联的事件 显然P(x=−1)+P(x=0)+P(x=1)=1P(x=-1)+P(x=0)+P(x=1)=1P(x=−1)+P(x=0)+P(x=1)=1 我们令a=P(x=−1),b=P(x=0),c=P(x=1)a=P(x=-1),b=P...

2019-11-08 20:16:19 120 1

原创 点分治

点分治可能有一些点分治的模板是O(n2)O(n^2)O(n2)的,但是如果在每次计算时都重新计算一下当前枚举子树的重心,就可以使得复杂度为O(nlogn)O(nlogn)O(nlogn)点分治能处理的问题:在树上对具有某些限定条件路径进行静态统计的算法。 当然如果要待修之类的话紫荆花之恋是一道不错的题,不刻意压行大概只需要写250行QAQ首先我们定一个顶点(怎么定等会儿说) 显然树上的路径分...

2019-11-07 17:21:28 81

原创 CDQ分治

CDQ分治CDQ分治是一种分治类算法,可以解决三维以及多维偏序 ( CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ套CDQ ) 问题。其思想类似于归并排序,在子问题对当前问题有贡献时可以使用QAQ 例如...

2019-11-07 17:20:42 219

原创 2019-11-5

T1难过,以为这道题要卡快读,用的freadfreadfread,然而没有读负数调了一下午这道题的思路很简单。考虑是否打御符,如果要打御符就打完,不然不如不打。然后就分两种情况:是否打御符。如果不打御符 很简单,一直将自己手上牌的最大值和兵符的最小值进行做差,如果差值小于零,breakbreakbreak就可以了。如果打御符,打完了我们可以选择直接攻击对面的玩家。但是!如果兵符有小于0的...

2019-11-05 23:10:07 117

原创 天天爱跑步

天天爱跑步一道:树上差分+LCA+桶的题说实话,这道题放在D1T2就是非常不合理的。然而CCF就是放了,并且还是能依靠CSP捞钱,你也必须交钱参加比赛。这个社会是多么的不公啊!闲扯结束显然如果对每条路径都进行一次处理,复杂度不对。考虑对路径进行一次预处理,然后进行统一的计算答案。我们发现当一条路径对某一个点P产生贡献时满足这个条件:1.当PPP在该路径的SSS与LCALCALCA之间时 d...

2019-11-04 21:45:26 117

原创 矩阵乘法

矩阵乘法定义C是由A,B两个矩阵相乘得到 若A是n行k列,B是k行m列 所以C是n行m列Ci,j=∑k=1mAi,k∗bk,jC_{i,j}=\sum_{k=1}^mA_{i,k}*b_{k,j}Ci,j​=∑k=1m​Ai,k​∗bk,j​ 用我自己的话来说就是C的i行j列是由 A的i行*B的j列矩阵乘法满足结合律,分配律,但不满足交换律(显然,如果交换后C的形态都可能发生变换)如果A是...

2019-11-04 14:21:56 344

原创 2019-11-1

T1这道题,挺明显的,就是有一些细节。对于要求1:要求gcd⁡\gcdgcd % a==0a==0a==0 gcd⁡\gcdgcd是所有数共同的gcd⁡\gcdgcd对于要求2:要求a∗a<min(c)a*a<min(c)a∗a<min(c),ccc是每一组的马匹数然后就可以o(n)o(n)o(n)做了#include <cstdio>#include &...

2019-11-01 20:40:38 94

原创 2019-10-30

T1这道题真的很简单 考试的时候线段树打挂了想杀人我们可以分别求a序列的前缀和sumasumasuma和b序列的前缀和sumbsumbsumb 现在问题就转化为suma[i]−suma[j]>0,sumb[i]−sumb[j]>0suma[i]-suma[j]>0, sumb[i]-sumb[j]>0suma[i]−suma[j]>0,sumb[i]−sumb[j...

2019-10-30 21:03:28 99

原创 四边形不等式的运用

四边形不等式的运用四边形不等式的定义:对于定义域上的任意整数a,b,c,d,其中a≤b≤c≤da\le b \le c \le da≤b≤c≤d都有w(a,d)+w(b,c)≥w(a,c)+w(b,d)w(a,d)+w(b,c)\ge w(a,c)+w(b,d)w(a,d)+w(b,c)≥w(a,c)+w(b,d)成立,则称函数w满足四边形不等式(另一种定义)对于定义域上的任意整数a,b...

2019-10-30 21:02:34 243

原创 2019-10-29

T1T1可能(一定)在某些大佬的眼中就是一道送分题(然而我只有10分)明眼人都看得出来这是一道拓展欧几里得的题目,我们知道系数a,ba,ba,b,要求解方程ax+by=cax+by=cax+by=c 并且使得∣x∣+∣y∣|x|+|y|∣x∣+∣y∣取得最小值我们知道拓展欧几里得可以求解ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b),并且如果有某一正数...

2019-10-29 19:37:48 182 1

原创 差分与前缀和

差分与前缀和差分与前缀和两个互补?的概念前缀和的差分值 为原序列 差分的前缀和 也为原序列这个是非常基础的 相信大家都会。首先来讲前缀和 前缀和这个东西 大家肯定都会用 这里只提一下二维前缀和应该怎么用令val[i][j]val[i][j]val[i][j]为当前节点的值(一般来说是1∗11*11∗1的格子),sum[i][j]sum[i][j]sum[i][j]表示当前点的前缀和...

2019-10-28 22:03:19 96

原创 平衡树SPLAY

平衡树SPLAY平衡树这个东西一点用没有,非常有用,而且锻炼码力,是个非常好的模板题!那么SPLAY这个东西 十分的毒瘤 我只调了一上午就调出来了!(我真棒)首先 我们要知道平衡树是一棵二叉查找树 他可以处理:加点,删点,前驱,后继,num的排名,某排名的num,合并两棵平衡树,分离两棵平衡树关于其原理 网上有很多 而且比较简单对于splay来说 原理并不是最难的 码代码才是最难的!...

2019-10-28 21:44:05 163

原创 可爱的树链剖分(染色)

可爱的树链剖分(染色)这道题 就是 一道 普通的! 树链剖分+线段树覆盖注意一下两个线段树合并的时候 如果 lval(node<<1∣1)==rval(node<<1)lval(node<<1|1)==rval(node<<1)lval(node<<1∣1)==rval(node<<1) 相当于这两个线段树的相邻的数字数相...

2019-10-28 21:13:42 157

原创 Cabel tv network

题目要求 任意两个点不连通 这句话怎么有点熟悉?然后联想到最小割的定义:一个边集被删除以后S,T不再联通,则称该边集为网络的割。边的容量之和最小的割成为网络的最小割。emmm S,T 不再联通 确实有点像于是这道题就可以用网络流最大流来做!将一个点xxx 拆成 xxx和x+nx+nx+n 在这之间连有向边流量为1对于原图中的无向边(x,y)(x,y)(x,y),在网络中连接有向边(x′,...

2019-10-25 21:58:16 136

原创 [LNOI2014]LCA

[LNOI2014]LCA这道题难道不是数据结构水题吗 逃)首先想到一个i点的depdepdep相当于根节点走到i 进过的点之和,所以这个点对答案的贡献就是从这个点走到根节点。因此我们可以转换为当前节点iii到根节点所经过的所有节点权值++。显然可以用线段树+树链剖分的数据结构进行优化 对于每一个询问 建一颗权值线段树 存储当前区间sumsumsum,sumsumsum存储的就是sumsum...

2019-10-25 16:47:37 110

原创 2019-10-24

被暴打的一天 居然爆出了15这种优秀的分数。T1在某些大佬嘴里 这是一道送分题。。然而蒟蒻爆零了。这是大佬们显然出来的结论: a,ba,ba,b分别形成了两个连通块 两个连通块的交界处是+a,−b+a,-b+a,−b 那么接下来就只需要找到一条边,将这棵树分成两个大小分别为a,ba,ba,b的部分 找到这一条边之后就可用dfs,bfsdfs,bfsdfs,bfs随随便便由这条边向外扩展找到...

2019-10-25 15:42:34 161

原创 Island

通过题面 以及样例我们可以分析出 这道题的数据是一个基环树森林 而对于本题来说,在相同的基环树中走路,在不同的基环树间划船因此这道题可以简化为:在基环树森林中 找到所有基环树直径之和的最大值那么如何找基环树的直径呢?预备工作:找到基环树中的环,用stastasta来储存首先规定maxx为储存当前的最大值 我们可以将其分为两种情况:1.1.1.没有经过环这个时候相当于找将环删除后的每一棵...

2019-10-23 22:03:31 147

原创 跳房子

这道题是一道普及组的题 但是好像也没有那么简单首先这道题用到的东西有:二分答案,单调队列优化dp我们将最后的答案二分 然后用单调队列优化dp进行检验因为我们发现 对于fif_ifi​来说 他的更新一定是从前面他能取到区间的最大值进行更新 这就符合了单调队列的性质,考虑用单调队列维护一个单减序列代码如下:#include <cstdio>#include <iostre...

2019-10-23 21:43:46 136

原创 2019-10-22

T1一道很水的题 其实对于本蒟蒻来说也没有那么水 只需要知道最小值总是会在零点的时候取到 因此将零点排序之后枚举当x=x=x=每个零点时 整个式子的值 然后用ans来存最小值。需要注意的地方:1.因为我用的方法是用前缀和,后缀和优化,所以一定要将零点排序2.当a=0a=0a=0的时候 零点算不出来。。我是将零点赋为极大值3.当a<0a<0a<0的时候 将a,ba,ba,b...

2019-10-22 21:49:46 89

原创 雨中的尾巴(线段树合并+树上差分)

哇这道题 恶心死我首先要知道,树上差分一般解决的问题是关于树上的覆盖问题 然后遇到覆盖问题尽量不要打树剖(会慢很多)关于此题 因为这道题覆盖的是 从xxx到yyy的点 所以我们在 x,yx,yx,y上打kindkindkind 111的标记 然后在lca(x,y),fa(lca(x,y))lca(x,y),fa(lca(x,y))lca(x,y),fa(lca(x,y))上打kindkindk...

2019-10-21 21:13:13 110

原创 数字计数

这是一道数位dp用dp[pos][sum]dp[pos][sum]dp[pos][sum]表示当前位位pos 之前当前字符已经出现sum次 记忆化存储的情况然后就没有什么好说的了注意一下 每一次dp都需要清0 还有就是进行逻辑运算的时候能打括号就打括号,以免出现运算顺序的错误还有就是一个小技巧 在dp数组memset−1memset -1memset−1 的时候用~dp[pos][sum...

2019-10-17 22:00:17 335

原创 2019-10-17

T1一道前缀和就可以暴打的题目。。没有什么可说的就是注意因为开了longlonglong longlonglong输出的时候 是输出lldlldlld我好难受啊 开了longlonglong longlonglong 输出错了 草#include <cstdio>#include <iostream>#include <cstring>#defi...

2019-10-17 20:24:41 67

原创 小凯的疑惑

找规律#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#define int long long using namespace std;int a,b,ans=0;signed main...

2019-10-16 21:14:00 68

原创 奶酪

emmmm 一道并查集的题计算每个球是否相切或者相交 如果是的话归为一个并查集然后单独记录一下与上表面相切或者相交的球以及与下表面相切或者相交的球#include <cstdio>#include <iostream>#include <cstring>#define int long long using namespace std;cons...

2019-10-16 20:00:00 116

原创 2019-10-9

T1一道0,1背包的题。。看这个数是否放入背包。。。这个是标程/*选出来的每个整数相当于重量w[i];每个整数的因数和相当于价值c[i]背包最大容量为s; f[i][x]表示考虑了前i个数,当前得到的和为x时(背包已装容量),得到的因数和(价值)最大值 */ #include <bits/stdc++.h> using namespace std;int m,s...

2019-10-16 18:58:57 164

原创 2019-10-15

T1这道题就是一个小模拟,甚至一个细节都没有(一定要打感叹号!!!!!)#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;char ch[30];int sd[110][15][15],t,cnt;...

2019-10-15 18:01:23 75

原创 tarjan好题

CF652E 洛谷上的这道题 草从早上调到晚上,最后由帅气的gigo_64同学 调出了我那个无比蒟蒻的垃圾渣渣nmsl草我无语了fuck idiot的问题首先来分析这道题的做法当我们看到这种类型的题 我们首先是不会想到边双连通分量的所以只能多做 然后就熟练了(说了和没说一样)但是可以记住的是 边双联通分量可以解决的是缩点之快速求必经边,必经点之类的问题在这道题中我们可以用边双连通...

2019-10-14 21:45:26 121

原创 2019-10-12

T1T1是一道树上差分的题。首先看到题目要求环,我们就应该想到树是没有环的,但是!树加上一条边就有环了 所以我们在这道题中首先 dfs出一棵树 然后再将非树边一条一条的进行树上差分关于树上差分 翻一翻别人的博客吧这道题中 calc函数相当于把属于环中的点++,出现几次加几次的那种,至于为什么这样做是可行的 建议手动样例一下这是一开始的亚子这是calc之后的亚子注意这里3,4号节点的...

2019-10-12 17:28:51 90

原创 关于二分的边界

在单调递增序列a中查询x的后继while(l<r){ int mid=(l+r)>>1; if(a[mid]>=x) r=mid; else l=mid+1;}return a[l];在单调递增序列a中查询x的前驱while(l<r){ int mid=(l+r+1)>>1; if(a[mid]<=x) l=mid;...

2019-10-12 07:53:40 102

原创 2019-10-11

今天的题主要是考思维(这只是我考的差的借口罢了)T1这道题其实很简单,只要分析出了一个数它的得分是它的好素数数量之和减去坏素数数量之和就好了。然后我们计算出[1,i][1,i][1,i]区间总的gcdgcdgcd,判断当前gcd的价值,若gcd价值小于0 就用当前的ans−val(tgcd[i])∗ians-val(tgcd[i])*ians−val(tgcd[i])∗i 就行了, tgcd[...

2019-10-11 23:59:19 117

原创 1D1D动态规划

1D1D动态规划的转移式是长这样的:对于形如f(x)=min(f(i)+w(i,x),1<=i<=n−1f(x)=min(f(i)+w(i,x) ,1<=i<=n-1f(x)=min(f(i)+w(i,x),1<=i<=n−1的状态转移方程,记p[i]p[i]p[i]为令f[i]f[i]f[i]取到最小值的jjj的值,即p[i]p[i]p[i]是f[i]f[i...

2019-10-10 23:34:57 678

原创 斜率优化dp

斜率优化dp斜率优化dp的思想是数形结合,将各种决策点反映在平面直角坐标系中,然后通过斜率进行优化做法首先将这道题的n2n^2n2的dp 算法写出来然后将其暴力展开如:f(i)=min(f(j)+(s[i]−s[j]+i−j−1−l)2)f(i)=min(f(j)+(s[i]-s[j]+i-j-1-l)^2)f(i)=min(f(j)+(s[i]−s[j]+i−j−1−l)2)令s[i...

2019-10-10 21:25:59 195

空空如也

空空如也

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

TA关注的人

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