- 博客(172)
- 收藏
- 关注
原创 临别之谈
好好看待,好好珍惜一路走过的自己。遥不可及的未来旋即成为了永恒不变的过去。我有我的骄傲,在noip赛场上稳住了自己,也稳住了比赛。我有我的幸福,戒不掉的机房成了我的瘾,下雨的夜与算法和机友在一起。我有我的过去,zjoi看到了世界的广阔,自己的渺小和临别前人内心的脆弱。船上的摆渡人是坚强的,他不必念及无法割舍的过去,面对难以想象的未来。桨在手上,彼岸未及,所以,请继续。Jus...
2019-05-01 19:18:39 307
原创 矩阵学习笔记&讲稿整理
xaero最近创新出了新的学习方式,那就是拿着稿子上台去水一把吧,互相教学的高效方法。然而,我好像趁xaero不在水过了这简短的40分钟。(雾)所以决定再整理一下讲稿,重新登在博客上。第一章 矩阵乘法作为一个学OI的同学,在座的一定都听说过矩阵,也知道矩阵怎么运算(或许还有人不知道?雾)。但我们还是来总结一下。初识矩阵首先矩阵是一个n*m的“矩阵”,n行m列的每一个元素都是数字。大致就...
2018-12-23 21:40:17 3572 2
原创 Scc(强连通分量)的非递归式写法
强连通分量的递归写法不解释,如有问题请右转传送门: 强连通分量–Tarjan个人理解+详解优势:防止tarjan求强连通分量时爆栈从递归式出发,程序是从原来的递归程序运行一半,递归运行下一层。直至下一层的递归调用完毕后,再回溯至源程序。而手工栈需要模拟系统栈的调用方式,先定义一个类似于栈的数组或数据结构,再通过while循环调用进行模拟运算。但漏洞是很明显的,在系统栈的调...
2018-05-27 17:17:56 1420
原创 codeforces 554div.2
A.Neko Finds Grapes【题面】给你两个数列,求两个数列中相加,最多的奇数个数。【分析】一道sb题,整两个桶记录两个数列的奇偶数各有几个,取个min相加即可。然而。。。。我交了另一场比赛的代码,改了半天死活过不了。...
2019-04-25 11:27:22 258
原创 字符串(p)review学习笔记
目前会持续填充一些字符串的模板,后续会对有关题目进行进一步展开。【Hash】一个比较万能的算法,在Θ(n)\Theta(n)Θ(n)的预处理之后,就可以对两个字符串进行Θ(常数)\Theta(常数)Θ(常数)的比较了。其基本思想是将一串字符串映射成一个数字,通过比较数字来比较字符串。具体上是将每位字母映射成一个值,每加进来一个值,就把前面的值乘上一个位数。这些数用前缀和存起来,需要比较时移...
2019-04-06 11:10:45 388
原创 【算法进阶】 CIty Games
【题面】有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N∗MN*MN∗M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。但是rainbow和freda...
2019-04-03 22:03:27 215
原创 【算法进阶0x00】七夕祭
【题面】           \;\;\;\;\;\,TYVJ七夕祭和11区的夏祭的形式很像。矩形的祭典会场由N排M列共计N×M个摊点组成。虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋…...
2019-03-31 17:08:21 466
原创 最近的叶子
题目来源:CF1110F【简要题意】给一棵有边权的树,已知各点编号的等于该点的dfs序。求对于每个vi,li,ri,求li到ri中到vi距离最小的叶子结点到vi的距离。【分析】暴力树形dp有70分就果断写完去搞T2,结果T2愣是没有结果。。。。又是一道方便离线维护的题。和2月24日卡常数那道题颇为相似。考虑从u到v边权为c,显然有所有v的子树点距离-c,其余点距离+c,回溯也也是一个Θ(l...
2019-03-10 20:18:10 140 1
原创 魔法石
题目来源:CF1110E【简要题意】对于给定数列{a}能否通过对第2…n-1项进行ci=ci−1+ci+1−cic_i=c_{i-1}+c_{i+1}-c_ici=ci−1+ci+1−ci的变换得到数列{b}。数列长度小于等于1e5【分析】考场上就打了暴力判断头和尾是否相同,然后数据出锅,暴力就过了。。。。。正确解法是差分。暴力判断头尾之后,经过神奇的观察发现每次进行操作相当于...
2019-03-10 19:58:14 452
原创 麻将 hongmah
题目来源:CF1110D【简要题意】有n个数集合(多重集),每个数不超过m。可以分成{i,i,i}或{i-1,i,i+1}的三元组,求最多分成几份三元组。n、m<=1e6【分析】考虑动态规划,写出一个Θ(n3)\Theta(n^3)Θ(n3)的动归方程,放下转贪心。试了好几种贪心策略都被hack,并且对于贪心证明毫无头绪。回到dp,结果是一种对于状态定义的优化:定义f[i][j][k...
2019-03-10 19:49:21 163
原创 无意义运算符
题目来源:CF1110C【简要题意】给定a,求f(a)的最大值。f(a)=max0&lt;b&lt;a(gcd(a⊕b,a &amp; b))f(a)= \max\limits_{0&lt;b&lt;a}(gcd(a\oplus b,a\ \&amp;\ b))f(a)=0<b<amax(gcd(a⊕b,a&nb...
2019-03-10 19:12:22 410
原创 JYM的公司
【简要题意】求序列中任意两个数的差之和。n<=5e5【分析】排序扫一遍,over【code】#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;const int maxn=5e5+1000;int n;...
2019-02-24 15:10:16 1465
原创 图像分析
【简要题意】有n个点,求一条直线穿过至少n3\frac{n}{3}3n个点。n<=1e6,保证一定存在一条这样的直线。输出穿过任意两点的坐标。【分析】思前想后没有办法,结果随机化就a了。。。考虑最坏的情况:只存在一个n3\frac{n}{3}3n的点集当中任意两点满足。则每次两点均选中的概率为19\frac{1}{9}91。可以循环一百次,一百次后失败的概率为约为71e6\fra...
2019-02-24 15:06:51 174
原创 卡内存
【简要题意】给一个长度为n序列。进行m次如下操作:1.add x k:给a[x]加上k。2.ask x y:查询区间[x,y]内所有数的和。3.goto t:回到第t次操作之后的状态。n,m<=1e5。特别注意:空间限制为8MB【分析】由于题目背景中出现了可持久化线段树,又有回退到历史版本的操作,所以很多人试图如题目所说的那样卡可持久化的内存。事实证明是卡不过的。这里有一种神奇...
2019-02-24 14:55:42 10499
原创 密码
【简要题意】求Σi=1ni22i\Sigma^n_{i=1}i^22^iΣi=1ni22i mod 1e9+7mod \ 1e9+7mod 1e9+7的值,n&lt;=1e9n&lt;=1e9n<=1e9【分析】线性复杂度的算法显然是好想的。低于线性的算法有两种:1.数论2.推式子这道题是后者,证明过程如下:设Sn=1∗2+4∗22+9∗23...
2019-02-24 14:27:04 138
原创 聪明幽默的JYM
【简要题意】给定n个二元组。从中任选一些,使得两个元素之和均不小于0。求满足上述情况下的总和的最大值。【分析】直接暴力dp水过,注意一下边界。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;c...
2019-02-18 14:01:17 226
原创 区间最小
【简要题意】给一个长度为n序列,对每个位置i问[max(1,i-m),i]中最小的值。n<=1e6,m<=1e6。【分析】一道单调队列模板题。当然鉴于n没有非常大,所以也可以用st表水过。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algorit...
2019-02-18 13:57:46 342
原创 皮卡丘逃亡
【简要题意】跨越空地代价为1,跨越障碍代价为5,求从(x1,y1)到(x2,y2)的最小代价。网格图的长宽均小于500.【分析】spfa水过。。。。数据范围非常小所以用Θ(n∗m)\Theta(n*m)Θ(n∗m)卡掉也无所谓。【code】#include<queue>#include<cstdio>#include<cstring>#includ...
2019-02-18 13:53:21 171
原创 调换纸牌
【简要题意】将n个纸牌移动到任意位置后可以形成升序的序列。求最小的n。Len<=5e5。【分析】求最长不降子序列(LIS)。用f[i]记目前为止,长度为i的序列最小为多少再用二分查找。总复杂度为Θ(nlog2n)\Theta(nlog_2n)Θ(nlog2n)【code】#include<cstdio>#include<cstring>#include&...
2019-02-18 13:40:50 186
原创 家园重建
【简要题意】有n个点和m条边。选出其中的某些边构成一个新的图(不一定联通),要求新图中每个连通块中至多有一个环。求新图的边权最大和。【分析】贪心,依旧是一道kruskal类似的题,不同只是要记录当前集合中是否有环。【code】#include<cstdio>#include<cstring>#include<iostream>#include<...
2019-02-17 13:54:23 480
原创 弹药分配
【简要题意】原先有一个序列各有一定的值。有5e4个操作,分两种:1.在选取一个区间【a,b】,并给出一个值k,区间上如果编号i 满足(i- a) % k = 0 就加上c。(k<=10)2.询问序列中某个数的当前值。【分析】对于k较小,且序列长度<=5e4的情况,我们可以分模数和余数建K2个树状数组。询问时将这些修改相加。【code】#include<cstdio&g...
2019-02-17 13:39:03 250
原创 百万小小兵
【简要题意】求1-n中与n不互质的数的个数。 n<=1e8【分析】当然是求φ(n)\varphi(n)φ(n)然后相减啦。。。。利用公式φ(n)=n(1−1p1)(1−1p2)(1−1p3)⋅⋅⋅⋅⋅⋅\varphi(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})······φ(n)=n(1−p11)(1−p21)...
2019-02-17 13:27:54 177
原创 植物学家
【简要题意】一棵带点权的有根树,其中树根可以转换。每次询问当前根下x节点的子树权值和。节点数、操作数<=1e5【分析】对于任意一个点做根,相当于是在整棵树总的权值中减去根所在的那颗"子树"。可以先固定根,求dfs序确定root所在的位置,再通过lca确定哪棵子树。【code】#include<cstdio>#include<cstring>#includ...
2019-02-16 15:45:53 178
原创 题解
【简要题意】现在有n道题,每天有m元收入。完成这道题当天需要ai元钱,并在第二天支付bi元钱。当天的钱不能储存。所有问题必须顺序解决,但同一天内可以做多个问题。求做完所有题目并支付完所有款项的最少月数。注意第一天开始打工所以没有收入。n<=300,m<=1000.【分析】这道题非常简单,问题在于有的人会陷入贪心的怪圈。这里我们看一组hack数据100 3100 6010 70...
2019-02-16 15:33:03 161 1
原创 朋友
【简要题意】每个人手上写着4个互不相同的数。如果两个人至少有一个数字相同,则他们是一对朋友。现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边有多少个人是他的朋友。n<=1e5,所有数字均是不大于50的非负整数。【分析】发现数字的范围很小,所以我们可以考虑枚举数字求朋友数,但发现存在重复统计的情况。再次考虑这种算法,相当于求前面的数字关于这四个数的全集。所以用容斥原理加加减...
2019-02-16 15:20:57 196 1
原创 数列
【简要题意】有两个数列{x},{y},满足x0=y0=1x_0=y_0=1x0=y0=1数论递推式:xn=xn−12+xn−1,yn=yn−121+2yn−1,(n≥1)x_n=\frac{x_{n-1}}{2+x_{n-1}},y_n=\frac{y^2_{n-1}}{1+2y_{n-1}},(n≥1)xn=2+xn−1xn−1,yn=1+2yn−1yn−12,(n≥1)...
2019-02-16 15:09:37 180
原创 机智的csy
【简要题面】现在你在数轴上的坐标为x,你需要到坐标y。现在有两种操作:1.先前或向后一步2.坐标*2现在求最小的操作数。数轴长度<=1e5。【分析】数轴不长所以可以随便乱搞,dp,bfs或者像我乱spfa都可以。【code】#include<cstdio>#include<cstring>#include<iostream>#incl...
2019-02-15 14:24:15 206
原创 有趣的游戏
【简要题面】有四组数字a,b,c,da,b,c,da,b,c,d。a,b,ca,b,ca,b,c的个数小于1000,d的个数小于1e5。对于每个d求是否存在ai+bi+ci=da_i+b_i+c_i=dai+bi+ci=d(ai、bi、cia_i、b_i、c_iai、bi、ci均为a、b、ca、b、ca、b、c数组中的一个数)。【分析】由于a、b、ca、b、ca、b、c中数字的大小...
2019-02-15 13:53:50 309
原创 势利的小卖部
【简要题面】有n个商品,实际价格为ai,价值是ci,需要口袋中钱≥bi时才可以购买。现在你有m元,求可以购买到的最大价值。n&lt;=500,m&lt;=5000【分析】第一眼看上去像是背包,果然不是。。。。仔细分析发现应该需要dp,因为一样商品能否购买只与当前剩余的m值和bi值有关。问题在于哪些商品先买,哪些商品后买。简而言之,就是求拓扑序,直接证明一下就可以了。证明过程从简:1、假设两...
2019-02-15 13:38:28 256
原创 【CF791D】tree 柠檬树
【题目描述】Herobrine能掌控所有,除了他内心的那棵柠檬树。他每看到一件让自己心生羡慕的事,他内心的柠檬树上就会多长出一只多汁美味的柠檬。现在,Herobrine有一棵含有n只柠檬的柠檬树,编号从1到n。这n只柠檬由n-1条树枝相连。 柠檬之间很喜欢用脱落酸进行交流。脱落酸只能通过树枝传递。柠檬们为了尽量频繁的进行交流,就团结一心,调整了树枝的形态,使得任意两只不同的柠檬之间都有且仅有...
2019-02-14 15:48:22 238
原创 【CF976E】match 比赛
【简要题面】现在有n个形如(x,y)的二元组。支持如下两个操作:1、x值加倍2、y=x现在支持a个1操作,b个2操作。求最大的Σy\Sigma yΣy【分析】有一个结论需要事先证明:对于一个人执行a次1操作,比对多个人执行a次操作要优。大致证明如下:先假定有两个二元组分别进行过一次加倍后为(a,b)和(c,d)。(显然两个二元组都有a>b,c>d,不然就不需要证明了)不...
2019-02-14 15:32:09 240 1
原创 【CF977F】sequence 序列
【简要题面】给定一个含n个正整数的序列。选取任意个不重复的子序列,将其按顺序拼接起来,保证有a[i+1]=a[i]+1。求最长子序列,含有spj,n<=2e5【分析】一个结论,同样的一个数字:比如说是3,后面的3一定不比前面的3差。所以直接用map记录每个数字最后出现的位置,然后dp值从上一个位置转移过来就可以了。【code】#include<map>#include&...
2019-02-14 15:09:42 197
原创 奇洛金卡达 father.cpp
(我还能怎样,能怎样,最后还不是像父亲一样把你原谅 ——鲁迅)【简化题意】给一个长度小于k的字符串和n个操作。保证操作后字符串长度大于k,求最后的字符串中前k个字符。操作规则如下:给定一个(伪)区间[l,r],将区间中编号为奇数的字符形成一个新字符串,编号为偶数的字符形成一个字符串,将两个字符串拼接起来并放在编号为r字符的后边。n<=5000,k<=3e6【分析】传统...
2019-01-26 15:40:30 454
原创 救援 help.cpp
【简化题意】给定n个点。求一条y值为整数的直线使得各个点到直线的距离和最小,求最小距离和。【分析】显然垂线段最短,不太明白题目为什么要给x值。显然中位数时各个数之差最小,(这是邮局的前置知识)。【code】#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;iostream&gt;#include&lt;algori
2019-01-26 15:18:51 186
原创 统计练习 count.cpp
【简化题意】给出一些字符串。求所有字符串中出现最多的字符串和出现次数。时限3s【分析】map+string就可以水过这道题了,但貌似不是正解?据说如果出一堆很长的字符串就可以把string卡掉(string按位比较速度较慢)。所以我们还有如下两种办法。法一Hash代替直接的string比较,离线排序或者在线map皆可。法二Trie树统计。一种非常正常的解法。【code】还是...
2019-01-26 15:11:18 444
原创 搬桌子 move.cpp
【简化题意】n个搬桌子的路径在一条[1,200]坐标轴上,路径不重合的搬运可以同时进行,求最小搬运时间。n<=1e7【分析】相信各位大佬们都看出来了,这是一道显然的差分题。求区间重叠的状况,数据范围又奇大无比,还不要求强制在线,实在是一道练差分的模板题。(如果n<=1e6,没准还有可能会想用树状数组,逃)【code】#include<cstdio>#incl...
2019-01-26 14:59:38 482
原创 FFT学习笔记摘要
目的是多项式乘法,用一个n+m-2次多项式表示n-1次多项式乘上一个m-1次多项式。(以下把默认n=m,因为我懒,逃)暴力的暴力朴素的式子是C(x)=A(x)×B(x)=∑k=02n−2(∑k=i+jaibj)xkC(x)=A(x)×B(x)=\sum^{2n-2}_{k=0}(\sum_{k=i+j}a_ib_j)x^kC(x)=A(x)×B(x)=∑k=02n−2(∑k=i...
2018-12-26 21:40:25 254
原创 noi2008 假面舞会
【题目描述】有n个点和m条关系。只有集合i的点才会和集合i+1的点连边,特别的集合k的点可以和集合1连边(构成一个蛇咬尾的环形)。给定的关系和点之后,问k的最小值最大值是多少。(约定k≥3)【分析】只有环会对集合产生约束性,(链可以困成一卷一卷的)。所有环的最小公因数(最小周期,小环转1圈,大环转n圈)就是k的最大值。最小值就是k≥3的最小约数。如果最小公因数(周期)小于3,那么信息有误,输出“...
2018-12-09 21:29:36 294
原创 序列 sequence.cpp【搜索】【剪枝】
【一句话题意】给定一个1~n 的排列x,每次你可以将x1~xi 翻转。你需要求出将序列变为升序的最小操作次数。有多组数据。n<=25【分析】为什么我会,看到题会一头雾水?这就对了,因为这是一道搜索题。在baidu上浏览各个大佬的题解,核心都是估价函数+迭代加深。迭代加深可以理解,基于估价函数,我们可知从当前状态到目标状态(有序)的最少翻转次数。显然如果当前翻转次数+估价值大于迭代限制...
2018-11-07 16:25:36 290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人