自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (3)
  • 收藏
  • 关注

原创 模拟退火学习记录

模拟退火学习记录没错,这篇博客连笔记都算不上,因为我还没有确切地理解这个算法的奥妙,但是略有所感,就想写下来。争取用最简单的语言描述下来,让小白能容易地入门。下面省略无数个“个人认为”……一、简介模拟退火是一种随机化算法。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解——摘自OI WIKI这个算法是将一个物理过程的模拟转化成一个数学模型,然后应用到一些不易解决的问题。由于是随机化算法,所以需要多次执行退火过程来确保最优解的质量更高。二、前置知识(1

2022-04-11 16:36:44 140 1

原创 【比赛题目】甲虫

先想dp[l]{r][0/1]表示:摄取[l,r]范围内的露水,停留在左/右端点最多能获得多大收益。发现已经走过的距离(也即露水损耗,下面统一用pre表示)不过我们发现,由于不知道已经经过了多长时间,而又不能把露水的损耗情况放在状态里,所以我们不得不换个思路来解决"已经走过的距离“产生的后效性。这就到了一个需要积累的trick:枚举总共获得[L,R]范围内的露水,dp(l,r,0/1)表示将[l,r]范围内的露水全部喝完产生的最小损耗量,进而得到答案。对于”每次选取露水所需要走过的距离“(下面统一..

2022-04-03 22:16:48 256

原创 【比赛题目】匹配最大异或

【比赛题目】匹配最大异或感觉非常妙我第一眼看到题,没什么思路,直接奔着部分分去了……正解的思路就是分治。考虑将[0,2m -1]分成[0,2m-1-1]和[2m-1 ,2m -1]两部分,发现这两组数字中如果不看最高位,就是两个一模一样的序列。也就是说,0与2m-1对应,1与2m-1 +1对应,以此类推,每一个数字都有与之对应的、仅有最高位不同的数字,称这样的两个数字为 一对数字。那么我们考虑对最高位分情况讨论:如果X序列所有数字最高位均相同,那么由于 一对数字除了最高位都一样,而最高位并不能

2022-04-01 22:46:31 348

原创 莫队算法(普通,带修,回滚,树上)

这是用来复习的博客,不太建议想要初学普通莫队的人看这篇博客,不过要是想快速复习一遍,这个博客可能比较适合你。莫队算法(普通,带修,回滚)莫队算法是一种通过对询问多关键字排序来降低时间复杂度的算法,当一些可离线题目满足 一个询问[l,r]的答案可以由[l-1,r]/[l+1,r]/[l,r-1]/[l,r+1]更新得到 时,可以考虑莫队算法。普通莫队不支持修改,不过如果是简单的修改可以用带修莫队/回滚莫队解决,至于树上问题则需要引入树上莫队,这里不做介绍(因为我也不会……)。实现简洁,应用面大,非常值得一

2022-03-22 13:34:00 1016

原创 整体二分算法

整体二分整体二分,就是通过二分答案值域将问题转化成判定,并不断地将每组询问的答案取值区间二分地分成两部分,并在递归至底部后获得一批询问的答案。一、大致思路整体二分可以用于解决满足以下条件的问题:可离线答案可二分修改对判定答案的贡献相对独立,修改之间不互相影响修改操作对其影响的询问的贡献情况不随判定标准的改变而改变整体二分需要先将所有问题离线,统一处理所有询问。枚举出一个值,判断每个操作与该值的大小关系,从而将询问分成了两个规模减半的子问题。由上述性质,如果我们已经计算过某一些修改对询问

2022-03-21 14:05:21 1823

原创 CDQ分治

CDQ分治CDQ分治,又称基于时间的分治算法,常用于解决多维偏序问题。该算法可以通过增加log(n)的代价将偏序问题降掉一维,从而转化成更易解决的多维偏序问题。事实上,CDQ分治能解决的题目很多都可以用支持动态查询的高级数据结构完成,但是CDQ分治的思维难度和代码实现难度较于高级数据结构减小了很多,并且空间更小。有些题目要求诸如:只有修改操作的属性值小于(或大于)某一询问操作的答案,该修改操作才能对询问产生影响。这里,我们视操作顺序为第一维,属性值为第二维,修改/询问的值为第三维,发现这就是三维偏序问题

2022-03-21 09:23:46 6317

原创 洛谷P7518 [省选联考 2021 A/B 卷] 宝石

P7518 [省选联考 2021 A/B 卷] 宝石题目来源乍一看没有任何思路,于是当年我打了一个模拟程序混了点分就跑路了……然后现在还是得看题解……还得努力啊这里用主席树+倍增+二分,复杂度O(nlog2 (n)),理解起来较为简单,但是对我来说太难想了。一、题目初步转化1.其实这道题也不是一点线索都没有,我们看到询问之间没有修改,要么离线要么大力预处理,然后就可以往倍增上想(联想倍增求LCA和ST表)。不过只有当某一个2k 长度的区间可以由两个长度为2k-1 的区间合并才能用倍增,这就对我们倍

2022-03-20 23:52:38 460

原创 洛谷P4211 [LNOI2014]LCA

P4211 [LNOI2014]LCA完整题面这道题的提议也是够简洁的了,不过是真的挺难想的一、.想正解先想想暴力怎么做:对每次询问,依次枚举每一个[l,r]范围内的点,求LCA(i,z),将深度加到一起然后要想优化这个过程,一种思路是加快求lca的速度,但是这样做最多能优化到单次O(1)查询,总体是O(m*n)级别的;另一种思路是从lca下手,枚举每个点作为lca的贡献,目标复杂度是O(n *log2 (n))(这道题n,m同阶。就都用n表示了)。注意到可以离线,有没有用再说二、第一步的问题

2022-03-16 23:20:55 158

原创 拓展BSGS

拓展BSGSBSGS解决像这样的问题:对于a,p,b,求解形如ax ≡b(mod p)的问题,其中a,p要求互质对于a,p不互质的情况,我们引入拓展BSGS算法一、BSGS算法(Baby Step,Giant Step)1.前置性质ax 对p的模随着x周期性变化,并且周期不大于p。根据鸽笼原理,由于 ax %p∈[0,p-1]值域大小为p,故x取1~p+1时必有两个ax 的余数是一样的,于是这两个x的差值绝对值就是周期。若ax ≡b(mod p)有解 等价于 ax ≡b(mod p)在x∈

2022-03-03 21:34:11 358

原创 二分图问题

二分图问题一个图G=(V,E)中的V若可以分为两个集合(V1,V2)使得在V1内部和V2内部任意两点不可达,则称这个图为二分图。下面出现的V1,V2即分别表示内部任意两点不可达的两个集合。开门见山,直接开始介绍二分图中几个关系:最大匹配=最小点覆盖=|V|-最大独立集=|V|-最小边覆盖有不详细的地方请参看其余资料,这里只是提供一个简要纲领性质的讲解,更适合用于复习而不是用于学习新算法。一、最大匹配1.定义:当一些边不存在公共点,则将这些边及其端点构成的子图M称为一个匹配,其中的点、边称为匹配

2022-02-21 13:49:57 329

原创 高斯消元法

高斯消元这里只是概述,更详细的内容看一本通金牌导航吧,蒟蒻能力有限qwq高斯消元,用于求解n元一次方程组这里介绍高斯约旦消元法(反正我看的题解是这么叫的)该方法的思路是:通过一系列消元操作,使得每一变量仅出现在一个方程中简要流程如下:(1)对于每一个n元一次方程,将形如∑a[i]x[i]=b的方程转化成行列式形式(2)枚举每一行,假设我们枚举到第i行,我们希望x[i]最终仅在第i个方程中出现,称x[i]为该行的主元。如果第i行的主元系数不是第i~n个方程中最大的,则找到那个系数最大的方程,将行

2022-02-16 15:52:28 555

原创 ybtoj 金牌指南 manacher 字符串连接

ybtoj 金牌指南 manacher 字符串连接贪心O(n)做法先预处理出来nxt数组,nxt[i]表示以i为左端点能拓展到的最远右端点,然后贪心地使得每一次连接所能拓展到的右端点最大化,即可获得最优解注意询问的是连接次数,不要直接将统计结果当成答案输出`#include<bits/stdc++.h>using namespace std;#define il inline#define re registertypedef long long LL; il int read

2022-02-06 15:04:18 542

原创 bzoj2201/ybtoj 彩色圆环

bzoj2201/ybtoj 彩色圆环题面ybtoj这个图片来自@wind_whisper环上问题,先把环转化成链设f[i][0/1]表示:长度为i的、首尾颜色相同/不相同的链 的美观度期望因为环上问题每一种上的样本点 与 链上问题中的n个样本点 可以互相转化,所以两种情况占据的样本点的比例是一致的,所以两个问题可以如是做等效替换转移:枚举末尾连续相同颜色块的数量即可初值:f[1][1]=1方程:见代码统计答案:枚举末尾连续同色的长度code(ybtoj上AC)#include&

2022-02-05 14:35:15 363

原创 博弈论之SG函数

博弈论之SG函数一、NIM博弈&公平组合游戏ICG1.Nim游戏定义: 给定n堆物品,第i堆有A[i]个,两名玩家轮流行动,每次可以任选一堆取走任意多个物品。可以将一堆取光,但不允许不取。取走最后一个物品的人获胜。两人都采取最优策略,问先手能否获胜。通常研究博弈论时仅考虑理想情况,即两人均无失误。NIM游戏不存在平局,即仅有先手必胜和先手必败 两种局面。定理:NIM博弈先手必胜,当且仅当{A}的异或和不为0证明:记x为{A}的异或和1.显然,所有物品都被取光是一个必败局面,此时{

2021-11-03 19:14:01 344

原创 P6822 [PA2012]Tax

P6822 [PA2012]Tax给出一个 n个点 m 条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点 1到点 n的最小代价。起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权。解决方法:新建一个初始节点和一个结尾节点,将边转化成点建立新图,将边与边之间的关系转化成新图中的边,从而将原问题转化成熟悉的最短路问题定义原图中两点及其连边用(u,v,w(u,v))表示,新图中则用u–>v[w]表示 ,其中u,v表示两端点,w(u,v)和[w]分

2021-11-03 19:05:30 122

原创 NOIP2020 字符串匹配

NOIP2020 字符串匹配这里只讲满分做法首先,这道题肯定要枚举字符串的长度。考虑到枚举C的长度还需要再枚举AB来验证,而仅仅枚举A就不可避免地还要枚举B的长度。所以我们考虑枚举AB的长度,然后再通过C计算此时对答案的贡献接下来就考虑两件事情:1.AB能延伸到多远2.如何计算合法的A、C的数量先看第一个问题,AB能延伸到多远,就是说往后有多少个重复的AB。这个可以通过倍增+hash计算,单次最高复杂度为log级,但实际上由于AB长度不断增大,该部分复杂度均摊差不多logln,非常小。再看

2021-11-02 22:54:20 494

原创 网络流初步——最大流&费用流

网络流初步——最大流一、基础定义网络 :一个网络G=(V,E)是一张有向图;容量 :图中每条边(u,v)∈E都有一个给定的权值c(u,v)被称为容量源/汇点:两个指定的特殊节点,分别设为S/T流函数/流量/剩余容量 :设f(x,y)中x、y均为图上节点,且满足:f(x,y)<=c(x,y)f(x,y)=-f(y,x)对于除源/汇点外的任意节点,∑f(u,x)=∑f(x,v)( (u,x),(x,v)∈E )则称f(x,y)为网络的 流函数 。对于(x,y)∈E,f(x,y)被称为

2021-10-31 13:27:08 745

原创 set与multiset

set与multisetset和multiset分别为“有序集合”和“有序多重集”,即前者元素不能重复,后者可以包含若干个相等的元素。这两个容器的内部原理都是红黑树,支持的函数相同,下面以set为例。声明:set<int> s1;struct node{ int a,b; };set<node> s2;multiset<double>s3;其中存储结构体的set必须重载小于号运算符:il bool operator < (const node &a

2021-10-28 12:28:51 222

原创 单调队列 学习笔记

单调队列 学习笔记单调队列算法,即维护一个具有单调性的队列。它的思想是在决策集合(队列)中及时排除一定不是最优解的选择(摘自《算法竞赛进阶指南》)。由于每个元素仅进队一次,出队一次,所以复杂度O(n)。它也是动态规划优化的一个重要方式。通常用于解决询问区间大小固定并且区间移动方向固定的最值问题。其中,单调性通常为数值随下标单调变化模板:int a[N];//一个数列,不一定是数组形式 int l=1,r=1;//队头&队尾 指针 int M;//区间大小 int q[N];//q[ ]

2021-10-28 09:51:25 84

原创 《算法竞赛进阶指南》七夕祭

《算法竞赛进阶指南》七夕祭对我来说是一道难题,因为这道题涉及到的模型我都不是很熟悉,而且思维链比较长(一定是我太蒟了)。1.题意一个 n*m 矩阵中有 T 个点,判断通过移动相邻位置后,是否能使每行(每列)拥有的点数都相等,并输出最小移动步数。在此题中,第1和n也看作是相邻的。2.初步分析若交换的两个位置中均有点,那么这次交换是没有任何意义的。所以,此题中的“交换位置”就是“移动点”。既然如此,那么“点数整除n,m"与”存在一种方案使得每一列/每一行之间点数相同“互为充要条件。下面仅讨论“点数整

2021-10-27 17:08:03 122

原创 拓展域并查集

拓展域并查集拓展域并查集。就是通过“拓展域”的方式,将一个点的多个情况拆解成多个仅有单一状态的点,从而将问题转化为可用并查集维护的形式。例题:P5937 [CEOI1999]Parity Game将条件通过前缀和(设为sum[x])转化为以下形式:[l,r]之间1的个数为奇数/偶数 --> sum[l-1]与sum[r]的奇偶性不同/相同这样做转化后,这个问题就转化为“团伙问题”模型。但是由于要介绍拓展域并查集,故暂且将“设立敌人集合”的做法放置,讲解拓展域并查集将"sum[x]为奇数或偶

2021-10-25 23:34:30 431

原创 边带权并查集

边带权并查集简单来说,”边带权“并查集就是在原始并查集的基础上增加“维护每个点到根节点之间的信息”这一功能。并查集的特点就是可以很方便地维护这种带有传递性的信息,而并查集实际上就是由若干棵树构成的集合。当遇到仅与每个点到根节点的信息相关的问题时,边带权并查集是一个不错的思路。模板题:P1196 [NOI2002] 银河英雄传说下面代码以该题为例路径压缩:il int getfa(int x){//边带权并查集的路径压缩 if(fa[x]==x) return x;//找到父节点之后返回

2021-10-25 21:49:24 358

原创 树链剖分(轻重链剖分)

树链剖分(轻重链剖分)简介树链剖分,简称”树剖“,顾名思义,就是将树“解剖”,将其转化成可用线段树维护的形式。由于线段树仅能进行区间上的操作,故需要通过一种划分方式,使得树链转化成区间,再用线段树维护。而“轻重儿子”的划分方式,不仅将树链转化成区间,还保证了该算法的复杂度。该算法可以用小常数n*log2 (n)的时间复杂度,维护一颗形态固定的树的树上路径信息,如对一段路径上的点进行修改,询问一段路径上所有点的权值和等等。值得一提的是,该算法还顺便可以用于求出两点之间的LCA.复杂度也为log,并且求L

2021-10-25 20:55:10 627 1

原创 拉格朗日插值法

拉格朗日差值以下内容并完全原创,很多地方引用了 @attack 的博客拉格朗日插值法就是构造一个多项式,使得恰好在每一个x处取到对应的y首先,n+1个点(xi,yi)若xi不同,则可以确定唯一的最高位n次的多项式。而如果题目直接或是间接给出了n+1个点,让我们求由这些点构成的多项式在某一个位置的取值,而拉格朗日插值可以在O(n2 )的时间内解决这一问题基本内容:思路如下:对于这个函数,要想在k=x[i]的时候取到y[i],并且y[i]仅在这一情况对答案有影响,就要构造出一项K[i]y[i],

2021-10-19 14:32:45 3362

原创 切比雪夫距离

洛谷P3964[TJOI2013]松鼠聚会主要就是看@Rbu_nas 的题解写的(那篇题解真的挺明白的了)题意简述:在 n 个点中找到一个点 x,使其他 n-1 个点到 x 的 切比雪夫距离 之和最小。求距离和的最小值。什么是切比雪夫距离?题干中说的那种距离就是切比雪夫距离更数学一点的描述是:设两点坐标为:(x1,y1),(x2,y2),则这两点的切比雪夫距离就是max{|x1-x2| , |y1-y2|}然后题解又说了一个**”曼哈顿距离“**这又是啥呢?就是|x1-x2|+|y1-

2021-10-06 20:37:18 482

原创 拓展欧几里得解线性同余方程(exgcd)

拓展欧几里得解线性同余方程裴蜀定理:ax+by=gcd(a,b)必有解下面用g表示gcd(a,b)证明:两侧同除g,令a’=a/g,b’=b/g;则有:ax+by=gcd(a,b) <=> a’x+b’y=1;证明:(1)根据欧几里得算法,bx+(a%b)y=gcd(a,b)成立与 ax+by=gcd(a,b)成立 互为充要条件(2)当欧几里得算法进行到最后一步时,a=1,b=0,此时令x=1,y=0即构造出一个特解,使得a’x+b’y=1成立,(3)对递归过程应用应用数

2021-10-03 23:49:03 250

原创 2021-09-22

20210922 题解crf的noip模拟赛day1T1:题解:dp设dp[i][j]表示右下角为(i,j)时最大正方形初值:就是输入的那个矩阵。转移:if(dp[i][j]==0) continue;//什么也不干dp[i][j]=min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1])+1;下面这个东西什么意思?min(dp[i][j-1],dp[i-1][j-1]表示从这个右下角向左拓展的最长距离min(dp[i-1][j],dp[i-1][j-1]

2021-09-22 23:31:50 104 1

原创 2021-09-21

洛谷P1966 [NOIP2013 提高组] 火柴排队 题解题面下面是题解:1.转化问题:首先,先将题干对“距离”的要求进行转化:思考什么情况下两个相邻的火柴互换可以令"距离“缩短。我当时感性思考加上理性验证(其实就是直觉+碰上了),得出这样一个结论:距离最小的方案就是让a[i]与b[i] 在各自序列的大小次序(就是第几大)相同。说白了,就是a[i]第几大,b[i]就第几大下面给出我的推导(不一定对啊):(a[i]-b[i])2 +(a[i+1]-b[i+1])2 >(a[

2021-09-21 13:03:00 45

原创 2021-09-11

##20210911/*如果我们能知道以任意节点为根 每颗子树中颜色个数,那么就枚举题干中的"LCA",看哪一个“LCA”能使得答案最大即可,一遍dfs搞定难点就在统计颜色上-------------------part1-------------------先假设整棵树的根是以1为根的,找到每一棵子树是否包含所有颜色对于两个点x,y,可以在他们两个的节点上+1,在lca(x,y)上-1然后搞一个dfs序线段树就行 ,运用差分思想就很容易理解那对于3个点呢?我们看这样一组样例1—2

2021-09-11 22:00:27 41

problem_day1.pdf

20210911

2021-09-11

solution_day1.pdf

20210911

2021-09-11

lizhan_2.zip

20210911代码

2021-09-11

空空如也

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

TA关注的人

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