
算法与数据结构
文章平均质量分 67
fsl123fsl
这个作者很懒,什么都没留下…
展开
-
LuoguP1389
简单区间dp观察合法序列定义等价于以下条件对于一个序列,有且仅有一个kkk使得ai=ai−1+1,i<=ka_i=a_{i-1}+1,i<=kai=ai−1+1,i<=k且ai=ai−1−1,i>ka_i=a_{i-1}-1,i>kai=ai−1−1,i>k考虑算出删除某段区间的最大价值fi,jf_{i,j}fi,j在序列自动机上遍历即可转移注意:直接转移难以通过,考虑如下优化Vi=max(Vi,Vj+Vi−j)V_i=max(V_i,V_j+V_原创 2020-06-05 16:39:19 · 207 阅读 · 0 评论 -
USACO 2010 ice题解
一道比较水(恶心)的bfs题 【题面自行度娘】 在当前位置时,找出上下左右的石头,拓展状态即可。 为了优化时间可以使用二分找石头。 (自行脑补代码复杂度)需要这么多的二分,那怎么办呢? C++的STL又不是白开放的 (P党就只能写一堆二分了)(由于代码蜜汁不能A,只发不大可能错的代码段)首先,可以使用两个map让每块石头的坐标互相关联for (int i = 1; ...原创 2018-06-24 13:07:57 · 265 阅读 · 0 评论 -
Dirichlet卷积和Mobius反演的一些基础知识整理
Mobius函数如果d = 1,μ(d)=1μ(d)=1\mu(d) = 1 如果d为k个互异质数乘积 则μ(d)=(−1)kμ(d)=(−1)k\mu(d) = (-1)^k 否则μ(d)=0μ(d)=0\mu(d) = 0Dirichlet卷积两个函数f,g的Dirichlet卷积为(f∗g)(n)=∑d|nf(d)g(n/d)(f∗g)(n)=∑d|nf(d)g(n/d)(f...原创 2018-06-02 15:01:05 · 346 阅读 · 0 评论 -
CQOI2007 余数求和
给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。例如G(10, 5)=5 mod 1 + 5 mod 2 + 5 mod 3 + 5 mod 4 + 5 mod 5 …… + 5 mod 10=0+1+2+1+0+5+5+5+5+5=29设G(n,k) =∑ni=1kmodi∑i...原创 2018-06-02 14:10:21 · 292 阅读 · 0 评论 -
左偏树的简单实现
左偏树,顾名思义,就是向左倾斜的树这棵破树就是用来实现可并堆的,也就是说,是比堆多出了一个合并的操作左偏树的定义是:左边的节点个数大于右边的节点个数这就使其可以资瓷合并的操作比二叉堆的O(size1 + size2)快多了 这是O(logsize1 + size2)三个性质(代码中要维护的三个性质)【还是从1开始吧】当前节点的键值小于等于或大于等于它的左右儿子的键值(堆性质)当前节点的左儿子的深度...原创 2018-06-01 16:06:01 · 448 阅读 · 0 评论 -
矩阵切割 【二维DP】
这是一道二维DP的水题设置状态:dp[i][j]表示i*j的矩形最少能切割的正方形预处理:1*1的矩形必定只能切割成1个正方形,所以预处理可以这么做 for (int i = 1 ; i <= min(n, m) ; i++ ) dp[i][i] = 1;DP:可以设置dp[i][k] + dp[i][j - k]表示第一种切矩形方法的最少正方形 dp[k][j...原创 2018-06-01 12:33:26 · 1915 阅读 · 0 评论 -
基础贪心题选讲
#171. 智力大冲浪题目描述小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元。先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则:首先,比赛时间分为n个时段(n≤500),它又给出了很多小游戏,每个小游戏都必须在规定期限ti时时间段之前完成(1≤ti≤n)。如果一个游戏没能在规定期限前完成,则要从奖励费m元中扣...原创 2018-05-31 18:05:57 · 432 阅读 · 0 评论 -
网络流-最大流
网络流在有向图G(V,E)中 有一源点S,入度为0 有一汇点T,出度为0 任一弧(u,v)有一非负流量c(u,v)最大流可行流:在容量网络G中满足以下条件的网络流f,称为可行流. 0&lt;=f(u,v)&lt;=c(u,v)(弧流量记为f(u,v),弧容量记为c(u,v)) 流入一个点的流量等于流出这个点的流量(除源点和汇点)最大流:在容量网络中,具有最大流量的可行流,...原创 2018-05-24 16:02:14 · 1048 阅读 · 0 评论 -
网络流-费用流
这个好像不考没事可以骗分费用流,顾名思义,就是有费用的流,也就是说,给一个网络流图中的每条弧增加一个单位流量费用。一般来说求解的费用流都是最大流最小费用。好像没什么好BB的这里推荐使用zkw算法求解最小费用流,看着代码理解就行,应该还是很好理解的。(zkw算法在稠密图上跑得飞快,在稀疏图上还不如直接SPFA)#include <bits/stdc++.h>using namespac...原创 2018-05-28 19:52:01 · 709 阅读 · 0 评论 -
分治的一些基础应用
分治,通常是有分和治,对于“分”来“治”,再合并,就是分治的思想。二分查找这是一种O(logn)的查找方法。在单调的序列中,查找一个数,有个猜数字的游戏是酱紫的:给出一个范围1-1000 让你猜一个数,会告诉你这个数是大于答案还是小于答案通过二分查找的思想,这个游戏可以在10次内猜出答案。转化为二分的模型是酱紫的:一个数列{1,2,3,4,5,……,1000},找到...原创 2018-05-22 17:08:35 · 438 阅读 · 0 评论 -
状态压缩DP
状态压缩,就是用二进制来作DP的状态,用位运算来转移状态二进制操作左移x<<y表示将二进制x的每一位向左移y位,在末位补0例:001011<<2=010110<<1=101100x<<y=x*2^y右移x>>y表示将二进制x的每一位向右移y位,末位为1时舍去例:01010>>2=00101>>1=00010由于会舍原创 2018-05-26 20:14:47 · 467 阅读 · 0 评论 -
网络流-最小割
割割是一种对网络流点的划分方式 对于一个网络流图G(V,E),划分为S和T两部分,其中T=V-S,源点s∈S,汇点t∈T 净流f(S,T)表示穿过割(S,T)的流量之和 f(S,T)=Σf(u,v) | u∈S,v∈T 割的容量C(S,T)为所有从S到T的边容量之和 C(S,T)=Σc(u,v) | u∈S,v∈T f(S,T)算穿过割(S,T)的正反向边,而C(S,T)只算正向边...原创 2018-05-26 17:51:49 · 545 阅读 · 0 评论 -
莫队算法 无修
无修莫队无修的莫队算法,是用来处理没有修改操作的序列的询问操作的离线算法 莫队算法的本质是什么? 大概就是分块加上一个大家可能都想到过的东西 也就是一个区间1l-r,其左边的区间2 (l - 1) - (r - 1)的和转化到区间1的和只需要O(1)的时间复杂度 也就是sum1=sum2+a[r]−a[l−1]sum1=sum2+a[r]−a[l−1]sum1 = sum2 + a[r...原创 2018-06-02 20:55:19 · 434 阅读 · 0 评论 -
栈与队列三题
作弊的发牌者:贝茜正在与她的N-1(2 <= N <= 100)个朋友打牌。她们玩的牌一副为K(N <= K <= 100,000,K为N的倍数)张。所有牌中,一共有M(M = K / N)张“好牌”,其余的K - M张为“差牌”。贝茜是游戏的发牌者,很自然地,她想把所有好牌都留给自己。她热衷于获胜,即使为此必须采取一些不正当的手段。在若干局游戏后,贝茜的朋友们开始怀疑贝茜...原创 2018-05-15 14:55:19 · 640 阅读 · 0 评论 -
基础图论梳理
图的存储:目前主要的方式有三种:邻接矩阵定义:bool b[max_l][max_l];插入:b[x][y]=true;查询:if (b[x][y]);邻接表定义:struct hazaking{ int y; int next;}e[max_l];int linkk[max_l];插入:e[++t].y=Y;e[t].next=linkk[X];linkk[X]=t;遍...原创 2018-05-14 15:53:16 · 369 阅读 · 1 评论 -
并查集
说得简单点,并查集就是一个原创 2018-05-13 19:15:16 · 238 阅读 · 0 评论 -
经典区间DP
区间DP,就是在区间上做DP(谁都知道)要搞一个区间,就需要一个双重循环:(写法一大堆,这是其中一种)for (int len=2;len<=n;len++)//枚举区间长度len for (int i=1;i<=n;i++)//枚举区间左端点 int j=i+len-1;//计算区间右端点 然后balabalaDP就好了石子合并:在操场上沿一直线排列着n堆石子。现要将石子有次序...原创 2018-05-13 18:31:47 · 327 阅读 · 0 评论 -
四道树状数组模版题
概念与实现就(lande)不写了,反正一大堆#532. 数星星(严格来说其实不是模版题,但由于实际编码接近模版题,当作模版题来说)题目描述天文学家经常要检查星星的地图,每个星星用平面上的一个点来表示,每个星星都有坐标。我们定义一个星星的“级别”为给定的星星中不高于它并且不在它右边的星星的数目。天文学家想知道每个星星的“级别”。 5 ...原创 2018-04-17 15:52:41 · 404 阅读 · 0 评论