学习笔记
文章平均质量分 57
ModestCoder_
一个modest的coder
展开
-
王安石改革新论
王安石改革新论陈思王不契于时代的改变终会被淘汰,不论是落后于时代,抑或是超前于时代。任何高贵的原则终会沦为世俗的玩具。王安石乃千古哲人,不管是在文学上为“唐宋八大家”之一,还是政治上开展了历史上引人瞩目的“熙宁变法”,今人都能从其身上体察到他绝伦的智慧与超凡的才能,纵然变法最后走向虚无,成果湮灭无存,今人从其身上,从王安石身处的那个时代上头,还能把握、总结出社会的运行规则与时间无形的大道。王安石在宋神宗熙宁元年以宋神宗的大力支持走向台前推行新法,其政策的中心思想是“理财”。早在宋仁宗的嘉祐五年,王原创 2021-07-25 19:09:37 · 396 阅读 · 2 评论 -
【学习笔记】一类比较问题
本文介绍3类比较问题1、逆序对问题:一列数7 3 2 1 6 8 4 5,每次操作可以任选两个相邻的数交换,问最少几次操作使得数列升序?答案等于数列逆序对数定义逆序对:一列数{a}中对于i<j,ai>aji<j,a_i>a_ji<j,ai>aj,称(ai,aj)(a_i,a_j)(ai,aj)为一个逆序对简要证明:假如我现在是一个人工智能,我的目标使得操作数最小。每次操作肯定是做收益最高的。每次操作我都可以令数列的逆序对数-1因为一列数不是有原创 2021-02-23 22:12:03 · 303 阅读 · 3 评论 -
【学习笔记】课题研究:并查集的维护
这个是我以前的一个总结并查集是用来维护连通性的,维护连通性的同时,我们还可以维护连通块里面其他的信息最普遍的用法是kruskal求最小生成树。这个是按照边长度排序,然后维护连通性然后是这道题求∑所有路径中边长max−min\sum 所有路径中边长max-min∑所有路径中边长max−min就先按照边长排序,然后边长满足递增或递减性,另外维护连通块元素的个数用来求方案数再来一道题题目转化成了序列,我就化归成上一道题目的链的形式水箱我们需要在连通块内维护高度,dp值这道题目把维护连通块信原创 2020-12-04 12:08:35 · 276 阅读 · 0 评论 -
【学习笔记】差分
差分思想,一言以概之,就是delta[i]=a[i]−a[i−1]delta[i]=a[i]-a[i-1]delta[i]=a[i]−a[i−1]a[i]=∑j=1idelta[j]a[i]=\sum_{j=1}^{i}delta[j]a[i]=∑j=1idelta[j]然后可以做很多题目原创 2020-12-03 20:55:37 · 212 阅读 · 1 评论 -
【学习笔记】n个数里求kth
目标用O(n)O(n)O(n)时间找到kthkthkth原题是NOIp2008NOIp2008NOIp2008提高组的完形用类似快排的思想,对于一段区间的数,每次选择一个点tmptmptmp为枢轴点需要保证排好以后,tmptmptmp左边的数都比它小,右边的数都比它大然后看看目标kkk在左区间还是右区间,继续具体排序对于tmptmptmp的选择可以用随机数,也可以用l+r>>1l+r>>1l+r>>1,实测后者其实更快理论上复杂度是O(n)O(n)O(n)的,原创 2020-10-10 19:02:35 · 152 阅读 · 0 评论 -
【学习笔记】反悔贪心
最近做到了两道题,有同一种思想方法,我称之为“反悔贪心”先放我的两只题解LuoGu3620: [APIO/CTSC 2007]数据备份LuoGu4597:序列sequence到底什么是反悔贪心呢,首先是贪心,然而贪心并不是最优的,我们这是需要增添一个反悔机制来进行优化这个贪心比如我放的第一题,贪心策略就是每次取最小的,但是可能不是最优的,所以引入反悔贪心,把某个值AAA取出后,加入B−A...原创 2019-12-17 20:26:59 · 2211 阅读 · 0 评论 -
NOIp历年真题整理解答
有时间的话再写几道吧,个人准备联赛的方式就是刷历年题目,主要是熟悉一下思维模式,算法方面NOIp2012摆花:普通DP,DP水平到一个层次就不用烦恼的题目文化之旅:抛去数据水的槽点,n<=100\text{n<=100}n<=100一个O(n3)floydO(n^3)floydO(n3)floyd国王游戏:贪心套路,简便的数学推导解出最优策略,无耻的高精。。。开车旅行...原创 2019-11-13 20:15:42 · 2182 阅读 · 0 评论 -
【学习笔记】离线询问题型总结
纯口胡一篇博客离线询问有一些题型碰到的大致可以分为两类所有询问一起处理,比如CDQCDQCDQ、整体二分、tarjantarjantarjan求lcalcalca等有时候,这个也会当成一个小技巧用到题目里,倒序处理想法lrlrlr型,重点,这类题目通常披有裸数据结构的外套。用一种类似莫队的想法把lrlrlr询问按照l/rl/rl/r排序用树状数组/线段树维护一些东西,这类题的数据结构通...原创 2019-11-03 20:54:51 · 343 阅读 · 0 评论 -
【学习笔记】卢卡斯定理
模板题令Lucasnm=CnmLucas_{n}^{m}=C_{n}^{m}Lucasnm=CnmLucasnmMODp=Lucasnpmp∗CnMODpmMODpLucas_{n}^{m}MODp=Lucas_{\frac{n}{p}}^{\frac{m}{p}} *C_{nMODp}^{mMODp}LucasnmMODp=Lucaspnpm∗CnMODpmMODpLucas...原创 2019-09-22 19:45:50 · 167 阅读 · 0 评论 -
【学习笔记】DFS与BFS
这是OI竞赛中两个基础算法,在此做一个简略的总结DFS全名深度优先搜索,顾名思义,是深度优先,一条路走到黑的做法树、图论相关的问题中常用到DFSDFSDFS遍历处理信息算法用处:暴力,一般题目总会在最低档的部分分设置用最无脑的dfs解决遍历,用处比较大BFS全名宽度优先搜索一般的套路是设置状态,既然是宽度优先,那么同一个状态越早到达越优所以时空复杂度都是状态总数,常数不论...原创 2019-08-26 12:32:50 · 241 阅读 · 0 评论 -
【学习笔记】决策单调性+【题解】LuoGu3515:[POI2011]Lightning Conductor
原题传送门决策单调性优化qwq决策单调性就是当前状态iii,两个决策j,k(j<k)j,k(j<k)j,k(j<k),如果k更优,那么在i增大时,j永远不会逆袭这个时候满足决策单调性那么得到每个决策都对应一个区间使得这个决策对于区间里的状态是最优解好讲一下这道题目有点迷fi=max(aj+∣j−i∣)f_i=max(a_j+\sqrt{|j-i|})...原创 2019-08-10 20:03:55 · 223 阅读 · 0 评论 -
【学习笔记】exGCD
一、GCD辗转相除法gcd(a,b)=gcd(b,agcd(a,b)=gcd(b,agcd(a,b)=gcd(b,a modmodmod b)b)b)二、裴蜀定理裴蜀定理:方程ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b)一定存在整数解三、exGCD作用:求形似ax+by=c的方程的整数解由裴蜀定理,gcd(a,b)∣cgcd(a,b) | c...原创 2019-07-17 13:56:44 · 180 阅读 · 0 评论 -
【学习笔记】Tarjan之割点
一、割点在无向图中,如果删去一个点后整张图不连通,那么这个点就是割点(割顶)。二、Tarjan求割点模板与求强连通分量类似对于一个点uuu是割点,满足下两个条件之一存在uuu的儿子sonusonusonu,使得low[sonu]>=dfn[u]low[sonu]>=dfn[u]low[sonu]>=dfn[u],即有儿子不通过自己走不到自己的祖先,那...原创 2019-07-16 16:05:00 · 300 阅读 · 0 评论 -
【学习笔记】Tarjan之缩点
一、有向图强联通分量在有向图中,如果同时存在从x到y和从y到x的有向路径,则称x和y强连通。如果一张有向图中任意点对都强连通,那么称这张图是一个强连通图。有向图的极大强连通子图为强连通分量。图中的每个点只会属于一个强联通分量二、Tarjan算法求强联通分量原理是求出图的任意生成树,利用返祖边找环。对一个点维护dfn[x]表示该点的dfs序,low[x]表示x不经过x的祖先...原创 2019-07-16 15:02:27 · 1275 阅读 · 0 评论 -
【学习笔记】凸包
原题传送门因为做到一道题学了Andrew算法和Graham算法Andrew算法莫名咕脑子有点混,所以具体部分先鸽着(我竟然也会鸽了)主要是先按照极角排序,然后搞一搞……Code:#include <bits/stdc++.h>#define maxn 10010using namespace std;int n;struct Point{ double x, y...原创 2019-07-08 15:43:38 · 338 阅读 · 0 评论 -
[学习笔记]fhq Treap
1、引入前置知识:堆(不需要会Treap,或者说根本不用会Treap)我发现目前用Splay的题目都可以用fhq(不排除我见识短浅的可能)主要两个特点:整棵树满足二叉搜索树性质:左儿子小于自己,右儿子大于自己整棵树满足堆的性质:每个点附带一个值keykeykey,值为随机,以key满足堆(可以默认大根堆)2、操作新开一个节点int addnode(int x){ ++s...原创 2019-06-11 21:32:34 · 397 阅读 · 1 评论 -
【学习笔记】Splay
模板题链接1、引入一种二叉树,这棵树满足任意一个节点,它的左儿子的权值<自己的权值<右儿子的权值这种树叫做二叉查找树,这个概念应该在初赛中见过了吧Splay就是利用这个结构来实现的2、变量模板题的7大变量sz:表示当前节点个数rt:表示当前根节点的编号f[x]:表示编号x节点的父亲的编号key[x]:表示编号为...原创 2019-05-12 20:22:42 · 8236 阅读 · 2 评论 -
【学习笔记】线段树
线段树用于解决区间问题,此博文只贴模版,题目假设为区间加和区间查询 推荐1、更新void pushup(int root){ tree[root]=tree[root&lt;&lt;1]+tree[root&lt;&lt;1|1];}2、建树void build(int root,int l,int r){ if (l==r){ tree...原创 2018-08-07 19:59:57 · 252 阅读 · 0 评论 -
【学习笔记】树状数组
有一种数组叫树状数组 树状数组,对于每一个点,它有一个管辖区域 具体是这样的: (摘自BaiDu)然后发现对于x,它所包含了x-lowbit(x)+1~x 这个lowbit(x)表示2^k(k为x二进制末尾连续0的个数) 这个lowbit怎么求呢?lowbit(x)=x&-x讲解一下树状数组各部分的作用: change(x,y):表示把x~n这个区间的信息与y综...原创 2018-08-07 20:28:58 · 252 阅读 · 0 评论 -
【学习笔记】浅谈线段树与树状数组
这是两种类似的算法 这是两种O(n^2)->O(nlogn)的算法这两种算法有区别树状数组支持:单点修改(+-*/,维护最值)区间修改(+-,维护最值) 注意:树状数组覆盖的区间不灵活,只能前缀或后缀,值的变化还好说,维护区间最值的话就很伤了,但这篇题解宽了我的思路,说明要做到树状数组维护区间最值可以浪费点时间线段树支持:单点修改(+-*/,维护最值)区间修...原创 2018-08-07 21:35:33 · 752 阅读 · 0 评论 -
【学习笔记】最长不下降子序列
题目 给定一个长为n(1≤n≤100000)的正整数(最大为2^31-1)序列,求最长不下降子序列的长度.Sample inupt 7 1 3 3 6 8 3 6Sample output 5博主自己随便弄的一道题目 这里我讲四种方法1、普通DP时间复杂度O(n^2),用在此题会Tle,普通DP在本博文视为暴力~~ dp[i]表示以第i个数结尾的...原创 2018-08-08 21:59:29 · 968 阅读 · 0 评论 -
【学习笔记】dijkstra堆优化
LuoGu例题 我参考了这篇博文 首先介绍普通的dijkstra算法 dijkstra用于求单源最短路,但不支持负权 dijkstra算法的过程中把点分成两类,定义蓝点为已确定最短路的点,白点为未确定最短路的点 操作为下:确定起点s,s为蓝点,初始化dis[s]=0,其他的dis=maxlongint在白点中找dis值最小的,它已确定最短路,标记为蓝点进行松弛操作,把跟当前拿出...原创 2018-08-21 17:05:39 · 923 阅读 · 0 评论 -
【学习笔记】快速幂+矩阵+矩阵乘法+矩阵快速幂
今天晚上我学习了矩阵1、快速幂通常,我们要算bpmodkbpmodkb^p mod k是这么算的:ans := 1;for i := 1 to p do ans := ans * b mod k;显然,时间复杂度是O(p) 但是万一p很大,比如p≤109p≤109p≤10^9呢,暴力显然是Tle了 那么快速幂可以将O(p)优化成O(logp)级别 同样是算bpmod...原创 2018-08-25 21:21:23 · 643 阅读 · 0 评论 -
【学习笔记】莫队初步
HSY Dark佬让我学了莫队,然后……我就学了莫队。。。首先放出一道自己搞的例题: 给出一个长度为n(1≤n≤105)(1≤n≤105)(1≤n≤10^5)的正整数序列,以及m(1≤m≤105)(1≤m≤105)(1≤m≤10^5)个询问l,r 对于给个询问要求输出[l,r]区间内出现次数为k的数的个数 1≤li,ri≤n1≤li,ri≤n1≤l_i,r_i≤n 输...原创 2018-09-07 22:25:45 · 343 阅读 · 1 评论 -
[学习笔记]莫队->树状数组
ps:本博纯属博主自己瞎搞例:给定长为n的一列数,以及q个询问(l,r),要求输出al…ar中有多少个不同的数不要求在线洛谷原题离线算法,显然莫队,然而,本题卡莫队先上一发莫队的TLE代码:#include <bits/stdc++.h>#define maxn 500010using namespace std;struct node{ int a, b, i...原创 2019-03-31 18:09:36 · 1121 阅读 · 1 评论 -
[学习笔记]树链剖分
树链剖分真的不难,基础够了,简直秒懂1、前置知识线段树、树状数组等,dfs序,lca2、引入首先先放树剖模板题四个操作:1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z2 x y 表示求树从x到y结点最短路径上所有节点的值之和3 x z 表示将以x为根节点的子树内所有节点值都加上z4 x 表示求以x为根节点的子树内所有节点值之和先倒退一下难度,如果只有询问...原创 2019-04-11 20:33:28 · 527 阅读 · 4 评论 -
[学习笔记]NOIp2017小凯的疑惑及其推广
小凯的疑惑题面两个数a,b,求最大的不能被a、b表示的数2017年我没参加提高组,所以没有体会到此题毒瘤程度,据说一堆大佬死在了这题上面首先,结论题,猜结论十分简单:a∗b−a−ba*b-a-ba∗b−a−b那么怎么推出来呢以样例3、7为例建立一个n*7的矩阵红色部分都是能表示的,显然,答案是11(最大的白色的数)我们可以发现矩阵中的某些性质上下相邻的两个数相差7每一列中第...原创 2019-04-17 20:10:07 · 775 阅读 · 0 评论 -
[学习笔记]莫队->主席树
前身在这里,建议先看看这个题1主席树可以用来在线求区间不同的数的个数记录last数组,last[i]表示上一个与第i位置上的数相同的数的位置把主席树建出来,每次把last的位置加上-1,自己加上1保证每个不同的数只出现1次然后在线询问,每次只要询问l~r值之和就行了,因为每个数只出现过一次这种方法,对比之前的树状数组做法,时间一样,空间多个log不过主席树有个非常优的优点:在线树...原创 2019-05-11 11:24:39 · 745 阅读 · 0 评论 -
【学习笔记】主席树
1、前置知识线段树、权值线段树、前缀和思想等2、引入主席树模板题约定:后面将第k小/大说成kthkthkth解决什么问题:给定一段区间,静态求区间kthkthkth想想方法:暴力:对于每一个询问,排个序,就行了,时间复杂度O(nmlogn)O(nmlogn)O(nmlogn)莫队+树状数组:树状数组可以求给定区间kthkthkth,使用二分+树状数组,具体不展开,但是多个区间...原创 2019-05-11 14:12:27 · 18503 阅读 · 23 评论 -
【学习笔记】LCA
LCA,最近公共祖先 博主今天回顾了倍增和Tarjan,总共用了40min码了两个模板(至少有20min再找Tarjan模板的错误,下面会讲到)LuoGu模版题传送门还是先说一下lca的暴力算法:两个节点一步一步往上跳,跳到同一个地方为止。。 1、倍增 在暴力算法上优化 发现暴力的缺陷:一步一步往上跳太慢。所以我们想到最好能一次跳一大步先来看一个问题:给出一个数n,要求把n拆分...原创 2018-08-06 20:40:54 · 3434 阅读 · 0 评论