自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记:Splay

概念SplaySplaySplay,又叫伸展树,是一种平衡树,通过旋转来实现,可以实现多种一般的平衡树(如TreapTreapTreap)很难或无法在时限内做到的操作。SplaySplaySplay始终保证当前序列的值就是树的中序遍历。方法主要是由操作splaysplaysplay完成的。splaysplaysplay操作可以将点uuu转到点kkk的下面。注意该操作要保证uuu是kkk的孩子,所以将aaa挂到bbb下面需要先把bbb挂到根再把aaa挂到bbb下面。splaysplaysplay操作先

2021-07-25 02:04:16 257

原创 学习笔记:prufer编码

概念pruferpruferprufer编码是一种将树转换成序列的一种方式。nnn个节点的树(节点编号为1...n1...n1...n)可以唯一对应一个n−1n-1n−1位的pruferpruferprufer序列,n−1n-1n−1位的pruferpruferprufer序列也可以唯一对应一棵nnn个节点的树(节点编号为1...n1...n1...n)。方法...

2021-07-22 03:45:05 428

原创 学习笔记:朱刘算法

概念树形图:相当于有向树,一种没有环且除根以外的点入度为111的有向图。最小树形图:和最小生成树相像。是在一个有向图中能遍历到所有点且边权和最小的树形图。朱刘算法:一种求确定根的最小树形图的算法。方法给当前图GGG中每一个点找一条最小的前驱边(除根外),将前驱边构成一个新图G′G'G′。如果G′G'G′中没有环就加上所有边权并输出答案,否则就加上所有环内的边权并执行步骤333。将G′G'G′中的环对应到GGG上,所有指向G′G'G′中的环的边i,ji,ji,j的权值都减去jjj的最小前驱边的

2021-07-19 14:14:22 283

原创 学习笔记:2-sat

概念satsatsat问题是求满足一些形如a1 or a2 or a3...a_1\ or\ a_2\ or\ a_3...a1​ or a2​ or a3​...的表达式成立的一组解的问题。其中每一个命题aia_iai​可以是xj=0x_j=0xj​=0或xj=1x_j=1xj​=1。satsatsat问题通常是NPNPNP完全问题。2−sat2-sat2−sat,顾名思义,就是求满足一些形如a1 or&nbsp

2021-07-18 20:17:09 232

转载 转载关于时间复杂度各类符号的总结

Θ,读音:theta、西塔;既是上界也是下界(tight),等于的意思。Ο,读音:big-oh、欧米可荣(大写);表示上界(tightness unknown),小于等于的意思。ο,读音:small-oh、欧米可荣(小写);表示上界(not tight),小于的意思。Ω,读音:big omega、欧米伽(大写);表示下界(tightness unknown),大于等于的意思。ω,读音:small omega、欧米伽(小写);表示下界(not tight),大于的意思。大O符号(英语:Big O n

2021-07-17 13:24:51 531 3

原创 洛谷P4778 计数交换 Counting swaps

文章目录原题链接题目分析尝试在图中操作性质的证明初步的dp超时的处理最后的问题:寻找环题目代码原题链接洛谷 P4778AcWing 212题目分析虽然要求的是方案数,但是最好还是先把至少需要几步弄好了再说。题目中每一个点都要到另一个点,不妨给这两个点连一条边。现在我给出一下样例:6:2 1 3 5 6 46:2 1 3 5 6 46:2 1 3 5 6 4我们会得到如下图:请注意,其中结点333是自环。不难发现,每一个连通块都一定是一个简单环,因为每个点都只有一个出度、一个入度。我们的目标就是通

2020-11-29 18:34:27 241

原创 AcWing 206 石头游戏

文章目录原题链接题目分析如何套倍增如何套矩阵乘法回到倍增题目代码原题链接AcWing 206题目分析我们发现,如果暴力来做这个题就必须一个一个时间来枚举。所以本题的时间瓶颈在于1≤t≤1081\le t\le 10^81≤t≤108。因为这个数字太大了,所以只能Θ(n)\Theta(\sqrt n)Θ(n​)或Θ(log⁡n)\Theta(\log n)Θ(logn)解决,很容易想到倍增。如何套倍增我们可以把整个问题想成一个图,则操作二就是把某个点全部的权流到另一个点去。那么操作一呢?我们可以设

2020-11-28 22:42:39 183

原创 AcWing 202 最幸运的数字

文章目录原题链接题目分析式子的化简无解的判断寻找第一个解寻找最优解解题代码原题链接AcWing 202题目分析看到题目,一点思路都没有。但是至少可以肯定的是,这只能是数学了。数学题怎么办?先把题目的文字描述改成数字的描述:L∣888...88L\mid888...88L∣888...88还是没有思路?再把888...88888...88888...88表示出来:L∣8×999...999L\mid8\times\cfrac{999...99}{9}L∣8×9999...99​啊,又有一个999...

2020-11-28 14:00:14 960

原创 专辑:主席树(洛谷P3834)

文章目录一个问题前言与可持久化线段树的区别线段树上第kkk小深度的思考回到原题原题代码一个问题点我前言我惊呆了!这竟然只算一个“模板”QwQQwQQwQ(我太弱了?)。正常的主席树模板应该是求序列前缀的第kkk大(小)数,而不是区间的。所以我们进入这个题之前先看看主席树正常怎么做。与可持久化线段树的区别请千万不要把这两个概念搞混了!虽然主席树的名字是乱起的,但是它是“基于权值线段树的可持久化线段树”,而并不是纯粹的可持久化线段树。主席树可以解决的问题都是关于求可持久化的排名(和平衡树有些相似),

2020-11-21 19:26:21 147

原创 专辑:Catalan number 卡特兰数(卡塔兰数)

概念卡特兰数序列:1,1,2,5,14,42,132,429,1430,4862,16796...1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796...1,1,2,5,14,42,132,429,1430,4862,16796...卡特兰数递推公式:C(n+1)=C(0)C(n)+C(1)C(n−1)+C(2)C(n−2)+...+C(n)C(0)C(n+1)=C(0)C(n)+C(1)C(n-1)+C(2)C(n-2)+...+C(n)C(0)C(n+1)=

2020-11-04 15:28:36 423

原创 CodeForces1108F MST Unification

原题链接洛谷的CF的VJ的题目描述QwQ又是被洛谷翻译按在地上摩擦的一天。。。直接引用给定一个有n个点,m条边的无向连通图,每条边有边权。 定义一次操作为:选择一条图中的边,并将其权值+1。试求最小的操作次数,使得操作后的图的最小生成树是唯一的。解题思路法一这种和最小生成树有关的题,无非就是上来先求一下最小生成树,然后再仔细钻研最小生成树的性质怎么套上来。我们得到了一个最小生成树,考虑加上一条非树边之后会如何。加上一条边后会组成一个环,根据最小生成树的性质(在这里就不详细证明了),我们

2020-10-30 17:40:48 116

原创 吐槽各大竞赛题库的优劣

No.1:洛谷洛谷是一个很不错的网站,洛谷原创的题有的出的还是很好的。题很多,还支持各大题库的提交,就是有的洛谷原创的题太毒瘤。同样,也是一个不错的社交平台。就是洛谷管理员封号太疯狂了。数据部分公开,每月都有月赛。No.2:CodeForces比赛很多,题目质量也非常好,但是外国网站需要强大的英语功底或者是阅读理解能力(毕竟机翻的语病太多了)。而且CodeForcesCodeForcesCodeForces也有许多娱乐性的比赛,十分有乐趣。数据公开,但是有的大数据给不全,要一些技巧。No.3:POJ

2020-10-24 21:54:08 13081 14

原创 NOI Online #3 提高组 T3 优秀子序列

原题链接简洁题意要求从AAA选出子集BBB使得BBB中没有两个数按位与等于000。每个子集BBB的价值是集合内所有数的和加一的ϕ\phiϕ值。求所有子集BBB的价值之和。分析可以思考,因为要知道所有的集合BBB不容易,所以考虑计算价值相同的BBB的个数。设fif_ifi​表示所有值为iii的子集BBB的数量,我们算出fif_ifi​后乘上phii+1phi_{i+1}phii+1​就是这个方案的价值和,把每个价值和加在一起就是答案。考虑怎么计算这个fff,我们可以把fff拆成两部分,然后一部分直接用

2020-10-19 18:38:29 190 2

原创 CodeForces1325E Ehab‘s REAL Number Theory Problem

原题链接洛谷的CF的VJ的题目描述我没办法写出更短的意思了QwQ,洛谷太强了Orz。在此只能引用:给一些数,每个的因数个数不超过777,求最少选出多少个,使得乘积为完全平方。无解输出−1-1−1。解题思路有两个突破点,否则你推死也退不出来。先把每个数分解质因数。如果某个质因数的次数是偶数那么就忽略,因为平方数每个质因数的次数就是偶数,反之就要去寻找哪个其他的数的质因数的次数也是奇数,两个一乘就变成偶数了。但是数的个数太多了,如果枚举肯定TLETLETLE。那么我们就上第一个突破点:最

2020-10-18 17:57:21 142

原创 专辑:动态规划的推算方法

前言在这里向大家分享以下我的动态规划的思考方法,希望大家能够用上。第一步第一步就是先算好状态里面存的是什么,即max、min、summax、min、summax、min、sum等等。这一步只要把题目读懂了就一定能做出来。第二步第二部就是考虑如何存储状态,就是fi,j,k,...f_{i,j,k,...}fi,j,k,...​中的i,j,k...i,j,k...i,j,k...。如果你确定了dpdpdp一定是正解,那么你就可以把它暴力地设计出来。即不爆内存,而且能退出状态转移方程,且这样转移不超时,

2020-10-17 20:24:03 141

原创 Codeforces1322D Reality Show

原题链接洛谷的CF的VJ的题目描述有一堆选手,从左到右枚举每个人,当枚举到iii时可以让他上场表演获得clic_{l_i}cli​​的表演费,花费sis_isi​。此时,如果场上有两个人iii和jjj,使得li==ljl_i==l_jli​==lj​,那么他俩会打一架,一个人被打死,另一个人晋一级并再表演一次,收益自然也是cli+1c_{l_i+1}cli​+1​,没有花费。要求选出来的选手lil_ili​不上升。好像又啰嗦了解题思路先康康数据范围:The first line cont

2020-10-17 20:07:01 135

原创 Codefoces1202E You Are Given Some Strings...

原题连接洛谷的CF的VJ的问题描述给定出一大堆字符串,要求任意两个字符串拼在一起在ttt串中出现的个数之和。有多任意呢?只要满足这两个字符串都是这一大堆的字符串中的就行(拼起来一样的两组算两个,同一个字符串也可以拼起来)。说实话,我这概括的描述比洛谷的描述还多解决问题看到一大堆字符串要匹配,二话不说,先看漏要两个字符串拼在一起的条件,跑一遍ACACAC自动机。那么两个字符串拼到一起呢?反着跑一遍再接上不就行了嘛。怎么接上呢?记录正着匹配和反着匹配在iii结束匹配的数量,那就是小学数学——乘法

2020-10-15 16:28:00 128

原创 学习笔记:差分约束

上讲习题AcWing 1165从一个字符串的前两个字符向最后两个字符连一条权为这个字符串长度的边,表示用这个字符串对平均值的贡献,一个路径就是一个接龙,一个环就是题目要求的。接下来思考解决这个题,本题又是ab\cfrac{a}{b}ba​的形式,可以010101分数规划。设VVV为用的字符串的集合,∣X∣|X|∣X∣表示集合XXX的大小,lenXlen_XlenX​表示集合XXX内所有元素的长度之和,则原式为lenV∣V∣\cfrac{len_V}{|V|}∣V∣lenV​​。思考如何二分,设ggg表示

2020-10-13 17:45:17 128

原创 学习笔记:负环

上讲习题AcWing 1144有强制连边,先连上。因为本题是稀疏图,所以用KruskalKruskalKruskal更优。本题只有两种边权:1、纵向边的边权;2、横向边的边权。所以我们不需要排序,顺序已经出来了:先试纵向边,再试横向边。#include<bits/stdc++.h>using namespace std;int n,m,fa[1000004];int num(int x,int y){ return (x-1)*m+y;}int find(int u)

2020-10-13 14:50:34 421

原创 学习笔记:最小生成树

上讲习题AcWing 1126本题不难发现,想要用的钱尽量少,那么就要转账的过程交的手续费尽量少。因为我们是到达最后要得到100100100元,那么要从ttt向sss求最短路。注意,每一条边的权是转完账后剩余的钱是转账之前的钱的几分之几,则w=1−z÷100w=1-z\div 100w=1−z÷100。因为是反着走,所以如果要求原来的钱就是除以www。#include<bits/stdc++.h>using namespace std;const int NN=2004;vector

2020-10-13 11:45:42 200

原创 学习笔记:最短路

上讲习题AcWing 303首先,可以知道想要接到第iii只小猫需要什么时候出发,排序后,那么就变成了最多分成ppp部分,每部分内的费用为最后一个任务的时间分别减去前面每个任务的时间之和,求最小费用。于是设fj,if_{j,i}fj,i​表示前iii只猫分成jjj部分的最小代价,则fj,i=min⁡(fj−1,k+ai×(i−k)−(si−sk),0≤k<i)f_{j,i}=\min(f_{j-1,k}+a_i\times (i-k)-(s_i-s_k),0\le k<i)fj,i​=min

2020-10-12 12:47:09 183

原创 学习笔记:斜率优化dp

上讲习题AcWing 1087本题可以想到,设fif_ifi​为前iii头牛合法选择的最大效益。首先可以不选,fi=fi−1f_i=f_{i-1}fi​=fi−1​。考虑选择第iii头牛,可以枚举一个jjj表示iii开始往前连续的牛的数量,保证1≤j≤k1\le j\le k1≤j≤k即可。则这一段牛就是∑x=i−j+1i\displaystyle\sum_{x=i-j+1}^ix=i−j+1∑i​,为了保证不选第i−ji-ji−j头牛,那么就是用fi−j−1f_{i-j-1}fi−j−1​。于是有状态

2020-10-07 13:27:17 249

原创 学习笔记:单调队列优化dp

上讲习题AcWing 1082同样的方法,如果填的不是边界,那么后面的就可以随便填,填的是边界就要继续枚举后面填的情况。考虑随便填的方案数,设fi,jf_{i,j}fi,j​为有iii位且最高位为jjj的数的个数。要想满足题目要求,则枚举次高位的数,要求次高位比最高位大即可,即fi,j+=fi−1,k,k>=jf_{i,j}+=f_{i-1,k},k>=jfi,j​+=fi−1,k​,k>=j。枚举当前填的数时,要求当前填的数比上一位填的数大或等于即可。最后,还有一种每一位都填边界的方

2020-10-06 20:14:38 219

原创 学习笔记:数位dp

上讲习题AcWing 1075本题每个数都可以变成下一个点,很像某个点向下一个点连边。一个数只有一个因子和,但是有可能多个数的因子和等于某个数,就像是一个点只有一个爹,但是会有多个儿子,所以这样建图是一棵树,每个点的爹就是自己的因子和。任意一个序列都对应树的一条路径,要求最长的序列就是求树的直径。求树的直径参考上讲的AcWing 1072。#include<bits/stdc++.h>using namespace std;const int NN=50004;int sum[NN]

2020-10-06 12:18:58 142

原创 学习笔记:树形dp

上讲习题AcWing 320这个题是环形的,首先处理环就是再接一段。然后考虑本题的操作,发现这个题就是把一些东西合并到一起,每次都有一个代价,求代价的最大值,而且必须是连续的。这样刚好满足区间dpdpdp的要求,则本题可以用区间dpdpdp解。设fi,jf_{i,j}fi,j​为iii到jjj的区间内合并成一个的最大代价,因为ri=li+1r_i=l_{i+1}ri​=li+1​,则有状态转移方程fi,j=max⁡(fi,k+fk+1,j+ai×ak+1×aj+1)f_{i,j}=\max(f_{i,k

2020-10-04 12:30:19 147

原创 学习笔记:区间dp

上讲习题AcWing 292这个题目是互相攻击类的题目,很容易想到每一排的状态然后判断两排是否能放在一起。但是不难发现,本题行与行之间的限制有两排,则在fff数组中要存下最两排选择的是什么状态才可以确定是否可以新加某一行。设fi,j,kf_{i,j,k}fi,j,k​表示确定完了前iii行,倒数两行的状态分别是j,kj,kj,k的最大放置个数。设cntucnt_ucntu​为选择状态uuu能够多放的炮车数量,则有状态转移方程fi,k,u=max⁡(fi,k,u,fi−1,j,k+cntu)f_{i,k,

2020-10-02 17:31:37 137

原创 学习笔记:状态压缩dp

上讲习题AcWing 1058这个题目可以把上讲的AcWing 1057的思路中卖出的情况拆成两种:刚卖出、出了冷冻期。则设fi,0,fi,1,fi,2f_{i,0},f_{i,1},f_{i,2}fi,0​,fi,1​,fi,2​分别表示手中持有股票、今天卖出和过了冷冻期的方案。首先考虑买入,买入必须过了冷冻期,所以不能用刚卖出的方案更新买入,fi,0=max⁡(fi−1,0,fi−1,2−wi)f_{i,0}=\max(f_{i-1,0},f_{i-1,2}-w_i)fi,0​=max(fi−1,0

2020-09-29 20:27:48 130

原创 学习笔记:状态机模型

上讲习题AcWing 1024要求剩余的空间尽量少,那么就是使用的空间尽量多。所以就变成了每个物品有重量,求最多装多少的问题。发现这个题目就是一个背包问题,但是没有价值,因为是求最多装多少,很像背包问题求最大价值,则可以把体积同时当成价值,这样就是求的最多装多少了。每个物品只有一个,这个题就是一个010101背包。最后用总的减去最多装的就是最少剩余的。#include<bits/stdc++.h>using namespace std;int a[34],f[20004];int m

2020-09-29 17:24:13 254

原创 学习笔记:背包模型

上讲习题AcWing 482这个题和上一讲的AcWing 1014没有任何区别。出队的越少留下的就越多,用nnn减去最长的一个子序列即可。#include<bits/stdc++.h>using namespace std;const int NN=1004;int a[NN],f1[NN],f2[NN];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i

2020-09-28 20:15:19 954

原创 学习笔记:子序列模型

上讲习题:AcWing 275法一:和上一题法一基本一模一样。本题不让走到同一点,那么就判断是否是同一点,是同一点就不计算。如果是从同一点过来的,那么那个点之前就没有更新,所以是零,最大值绝对不是它,所以也不会用它更新。因为两条路都会到最后一个点,所以最后一个点不会更新,直接输出差一步到达终点的两条路径即可。注意,这样的两条路径只有一个:从左边和上边来的两条路径。#include<bits/stdc++.h>using namespace std;const int NN=54;i

2020-09-28 11:43:47 208

原创 学习笔记:数字三角形模型

概念:动态规划,解决问题的一种方法。将很多问题转换成多个子问题求解,先计算子问题,到达边界直接返回问题的值,最后得到最终答案的一种方法。动态规划分为两大类:记忆化搜索和递推。记忆化搜索更好写,但常数更高;递推不太好写,但是常数低。二者时间复杂度无特殊情况基本相同。状态转移方程:将一个问题转换成子问题计算得到结果的方程。dpdpdp:动态规划的简称。数字三角形模型:概念:数字三角形,就是一个三角形,每一个点都有一个数字,找一条路径满足题目要求。形如:1112 32 32 34 5 64 5 64 

2020-09-27 17:43:57 393

原创 NOI Online #2 提高组 T2 子序列问题

原题链接简洁题意求一个序列的任意一个子序列组成的集合大小之和(集合过滤重复元素)。分析:这个题可以思考,要想某一个数有贡献,当且仅当它是该集合第一个出现的数。所以,可以统计一下上一个出现的位置,iii到这个位置后面都能有贡献。用ddd数组存每个aia_iai​上一次出现的位置。因为aaa有点大,数组存不下,可以考虑mapmapmap或者离散化。现在,设g(r)=∑l=1rf(l,r)2g(r)=\displaystyle\sum_{l=1}^r f(l,r)^2g(r)=l=1∑r​f(l,r)2

2020-09-26 19:54:34 134

原创 NOI Online #2 入门组 T3 建设城市

原题链接简洁题意:给定一个nnn,构造一个每个数都不大于mmm,nnn左边不下降,右边不上升,nnn最大且ax=aya_x=a_yax​=ay​的序列。分析:这个题可以发现,如果没有ax=aya_x=a_yax​=ay​的要求就是分成左右两边,mmm种高度看成盒子,要把nnn个楼放进去。可以给每个盒子手动放一个球,就变成了插板法:Cn+m−1m−1C_{n+m-1}^{m-1}Cn+m−1m−1​...

2020-09-26 18:15:00 120 2

原创 NOI Online #2 入门组 T2 荆轲刺秦王

原题链接简洁题意:从SSS到TTT,单位时间可以走格子周围的八个格子,有些格子不能走,这些格子周围距离小于等于a(i,j)a(i,j)a(i,j)的格子只能用一次技能一才能走。每个时刻可以用技能二,单位时间向上下左右走ddd格。问最快多久,若多种方案则希望技能用得少,技能用的一样多则希望少用技能一,无解输出−1-1−1,反之输出时间和各个技能用的数量。分析:数据范围不大,可以用bfsbfsbfs,直到答案大于当前答案或者不能走就停止,到达TTT后对比答案并更新,周围能观察到的点就搜索覆盖。但是这样仍

2020-09-26 14:24:54 117

原创 NOI Online #1 入门组 T3 魔法

原题链接简洁题意求一个最短路,可以把中间至多kkk条道路的权改成负的。分析:可以发现,本题nnn的范围很小,可以用floydfloydfloyd来做。floydfloydfloyd求一边最短路,d(i,j)=min⁡(d(i,k)+d(k,j))d(i,j)=\min(d(i,k)+d(k,j))d(i,j)=min(d(i,k)+d(k,j)),我们求出最短路后,考虑加上魔法。设f(i,j,p)f(i,j,p)f(i,j,p)为iii到jjj使用ppp次魔法的最短路。可以把一条道路改成负的,那么就

2020-09-26 14:04:55 113

原创 NOI Online #1 入门组 T2 跑步

PS:我真的想喷一下,这NOI Online提高组全是蓝题,入门组还有两个都是紫题QwQ原题链接简洁题意:构造一个非严格单调递减的序列使得和等于nnn,要求方案数。两个序列不一样就是不同的方案。分析:因为要求单调递减,则可以设一个当前分的数iii,从111到nnn。于是我们可以给每一种结束时间分配一个最后一次是这个时间的方案。设djd_jdj​为jjj结束的方案,dj=dj+dj−id_j=d_j+d_{j-i}dj​=dj​+dj−i​,这样就808080分了。说实话,考试的时候这样就够了,虽

2020-09-26 11:41:07 206

原创 NOI Online #1 提高组 T3 最小环

原题链接简洁题意:一个环上有数字,给定一个距离kkk,构造一个序列使∑i=1n(ai×ai+k)\sum^{n}_{i=1}(a_i\times a_{i+k})∑i=1n​(ai​×ai+k​)最大。这里指的是环上加减。分析:这个题很容易想到一个策略,把两个大的相乘很明显更划算。于是能想到由111开始bfsbfsbfs,扩展出来左右两边的数,从大到小放数字。但这样很容易出现一个问题:有些永远不可能搜到!比如题目中的样例,k=3k=3k=3的情况就有一半会搜不到。有一种解决方法:标记每一位,像tar

2020-09-26 10:45:51 105

原创 NOI Online #1 提高组 T1 序列

原题连接简洁描述:一个数列有两种操作,一是两个数同时加或减一个数,二是两个数一个加一个减,求能不能从序列aaa变成序列bbb分析:这个题目可以发现如果两个数被赋予了操作二,则两个数可以互帮互助,可以组成和为au+ava_u+a_vau​+av​的任意一个组合。这时候只要bu+bvb_u+b_vbu​+bv​等于au+ava_u+a_vau​+av​即可。那么如果是操作一呢?我们可以发现,如果有两个操作一(u,v)(u,v)(u,v)和(v,k)(v,k)(v,k),则把第一个进行操作,第二个做第一

2020-09-25 20:18:13 276

原创 NOI Online #1 提高组 T2 冒泡排序

原题链接简洁描述:对一个序列给定两种操作,交换两个相邻的数,求经过kkk轮冒泡排序后逆序对个数。一轮冒泡排序指的是冒泡排序内层循环执行一遍。20pts:直接每次暴力交换即可。如果遇到查询就执行kkk轮冒泡排序最后暴力求逆序对即可。40pts:每次求逆序对用合并排序即可。60pts:不知道怎么做QAQ100pts:可以发现,一个数能进行交换,当且仅当前面没有比它大的数。而且每轮前面比它大的数都会少111,因为前面有且仅有一个最大的数到它的后面,因为其他较大且能交换的数一定遇到这个最大的数停

2020-09-25 18:23:03 129

原创 学习笔记:费用流

上讲习题AcWing 2279这个题看着很懵,这根本不是最小割啊!然而我们可以思考一下,这种ab\cfrac{a}{b}ba​的模型,且求的最小或最大值,那么不就是分数规划吗?于是,我们可以设平均值位ggg,则:h(g)=∑e∈Cwe−∣C∣×gh(g)=\displaystyle\sum_{e\in C}w_e-|C|\times gh(g)=e∈C∑​we​−∣C∣×g=∑e∈Cwe−∑e∈Cg=\displaystyle\sum_{e\in C}w_e-\displaystyle\sum_{e\i

2020-09-24 13:13:36 3141

空空如也

空空如也

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

TA关注的人

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