自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xyc1719的博客

光荣时代是什么时候?我只有现在。

原创 临别之谈

好好看待,好好珍惜一路走过的自己。遥不可及的未来旋即成为了永恒不变的过去。我有我的骄傲,在noip赛场上稳住了自己,也稳住了比赛。我有我的幸福,戒不掉的机房成了我的瘾,下雨的夜与算法和机友在一起。我有我的过去,zjoi看到了世界的广阔,自己的渺小和临别前人内心的脆弱。船上的摆渡人是坚强的,他不必念及无法割舍的过去,面对难以想象的未来。桨在手上,彼岸未及,所以,请继续。Jus...

2019-05-01 19:18:39 115

原创 矩阵学习笔记&讲稿整理

xaero最近创新出了新的学习方式,那就是拿着稿子上台去水一把吧,互相教学的高效方法。然而,我好像趁xaero不在水过了这简短的40分钟。(雾)所以决定再整理一下讲稿,重新登在博客上。第一章 矩阵乘法作为一个学OI的同学,在座的一定都听说过矩阵,也知道矩阵怎么运算(或许还有人不知道?雾)。但我们还是来总结一下。初识矩阵首先矩阵是一个n*m的“矩阵”,n行m列的每一个元素都是数字。大致就...

2018-12-23 21:40:17 1344 2

原创 Scc(强连通分量)的非递归式写法

强连通分量的递归写法不解释,如有问题请右转传送门: 强连通分量–Tarjan个人理解+详解优势:防止tarjan求强连通分量时爆栈从递归式出发,程序是从原来的递归程序运行一半,递归运行下一层。直至下一层的递归调用完毕后,再回溯至源程序。而手工栈需要模拟系统栈的调用方式,先定义一个类似于栈的数组或数据结构,再通过while循环调用进行模拟运算。但漏洞是很明显的,在系统栈的调...

2018-05-27 17:17:56 953

原创 codeforces 554div.2

A.Neko Finds Grapes【题面】给你两个数列,求两个数列中相加,最多的奇数个数。【分析】一道sb题,整两个桶记录两个数列的奇偶数各有几个,取个min相加即可。然而。。。。我交了另一场比赛的代码,改了半天死活过不了。...

2019-04-25 11:27:22 63

原创 ZJOI2019游记

又是一阵咕咕声,实在是不想写什么东西。昨天颓到两点,就打了一把cf,zjoi rp++。若有以后,再谈以后。

2019-04-25 11:18:56 117

原创 字符串(p)review学习笔记

目前会持续填充一些字符串的模板,后续会对有关题目进行进一步展开。【Hash】一个比较万能的算法,在Θ(n)\Theta(n)Θ(n)的预处理之后,就可以对两个字符串进行Θ(常数)\Theta(常数)Θ(常数)的比较了。其基本思想是将一串字符串映射成一个数字,通过比较数字来比较字符串。具体上是将每位字母映射成一个值,每加进来一个值,就把前面的值乘上一个位数。这些数用前缀和存起来,需要比较时移...

2019-04-06 11:10:45 193

原创 【算法进阶】 CIty Games

【题面】有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N∗MN*MN∗M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。但是rainbow和freda...

2019-04-03 22:03:27 59

原创 【算法进阶0x00】七夕祭

【题面】           \;\;\;\;\;\,TYVJ七夕祭和11区的夏祭的形式很像。矩形的祭典会场由N排M列共计N×M个摊点组成。虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋…...

2019-03-31 17:08:21 208

原创 最近的叶子

题目来源: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 54 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 201

原创 麻将 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 74

原创 无意义运算符

题目来源:CF1110C【简要题意】给定a,求f(a)的最大值。f(a)=max⁡0<b<a(gcd(a⊕b,a & b))f(a)= \max\limits_{0<b<a}(gcd(a\oplus b,a\ \&\ b))f(a)=0<b<amax​(gcd(a⊕b,a&nb...

2019-03-10 19:12:22 82

原创 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 164

原创 图像分析

【简要题意】有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 68

原创 卡内存

【简要题意】给一个长度为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 444

原创 密码

【简要题意】求Σi=1ni22i\Sigma^n_{i=1}i^22^iΣi=1n​i22i mod 1e9+7mod \ 1e9+7mod 1e9+7的值,n<=1e9n<=1e9n<=1e9【分析】线性复杂度的算法显然是好想的。低于线性的算法有两种:1.数论2.推式子这道题是后者,证明过程如下:设Sn=1∗2+4∗22+9∗23...

2019-02-24 14:27:04 45

原创 聪明幽默的JYM

【简要题意】给定n个二元组。从中任选一些,使得两个元素之和均不小于0。求满足上述情况下的总和的最大值。【分析】直接暴力dp水过,注意一下边界。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;c...

2019-02-18 14:01:17 89

原创 区间最小

【简要题意】给一个长度为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 150

原创 皮卡丘逃亡

【简要题意】跨越空地代价为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 73

原创 调换纸牌

【简要题意】将n个纸牌移动到任意位置后可以形成升序的序列。求最小的n。Len<=5e5。【分析】求最长不降子序列(LIS)。用f[i]记目前为止,长度为i的序列最小为多少再用二分查找。总复杂度为Θ(nlog2n)\Theta(nlog_2n)Θ(nlog2​n)【code】#include<cstdio>#include<cstring>#include&...

2019-02-18 13:40:50 86

原创 家园重建

【简要题意】有n个点和m条边。选出其中的某些边构成一个新的图(不一定联通),要求新图中每个连通块中至多有一个环。求新图的边权最大和。【分析】贪心,依旧是一道kruskal类似的题,不同只是要记录当前集合中是否有环。【code】#include<cstdio>#include<cstring>#include<iostream>#include<...

2019-02-17 13:54:23 242

原创 弹药分配

【简要题意】原先有一个序列各有一定的值。有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 89

原创 百万小小兵

【简要题意】求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−p1​1​)(1−p2​1​)...

2019-02-17 13:27:54 92

原创 植物学家

【简要题意】一棵带点权的有根树,其中树根可以转换。每次询问当前根下x节点的子树权值和。节点数、操作数<=1e5【分析】对于任意一个点做根,相当于是在整棵树总的权值中减去根所在的那颗"子树"。可以先固定根,求dfs序确定root所在的位置,再通过lca确定哪棵子树。【code】#include<cstdio>#include<cstring>#includ...

2019-02-16 15:45:53 71

原创 题解

【简要题意】现在有n道题,每天有m元收入。完成这道题当天需要ai元钱,并在第二天支付bi元钱。当天的钱不能储存。所有问题必须顺序解决,但同一天内可以做多个问题。求做完所有题目并支付完所有款项的最少月数。注意第一天开始打工所以没有收入。n<=300,m<=1000.【分析】这道题非常简单,问题在于有的人会陷入贪心的怪圈。这里我们看一组hack数据100 3100 6010 70...

2019-02-16 15:33:03 78 1

原创 朋友

【简要题意】每个人手上写着4个互不相同的数。如果两个人至少有一个数字相同,则他们是一对朋友。现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边有多少个人是他的朋友。n<=1e5,所有数字均是不大于50的非负整数。【分析】发现数字的范围很小,所以我们可以考虑枚举数字求朋友数,但发现存在重复统计的情况。再次考虑这种算法,相当于求前面的数字关于这四个数的全集。所以用容斥原理加加减...

2019-02-16 15:20:57 57 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−1​xn−1​​,yn​=1+2yn−1​yn−12​​,(n≥1)...

2019-02-16 15:09:37 64

原创 机智的csy

【简要题面】现在你在数轴上的坐标为x,你需要到坐标y。现在有两种操作:1.先前或向后一步2.坐标*2现在求最小的操作数。数轴长度<=1e5。【分析】数轴不长所以可以随便乱搞,dp,bfs或者像我乱spfa都可以。【code】#include<cstdio>#include<cstring>#include<iostream>#incl...

2019-02-15 14:24:15 106

原创 有趣的游戏

【简要题面】有四组数字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 119

原创 势利的小卖部

【简要题面】有n个商品,实际价格为ai,价值是ci,需要口袋中钱≥bi时才可以购买。现在你有m元,求可以购买到的最大价值。n<=500,m<=5000【分析】第一眼看上去像是背包,果然不是。。。。仔细分析发现应该需要dp,因为一样商品能否购买只与当前剩余的m值和bi值有关。问题在于哪些商品先买,哪些商品后买。简而言之,就是求拓扑序,直接证明一下就可以了。证明过程从简:1、假设两...

2019-02-15 13:38:28 113

原创 【CF791D】tree 柠檬树

【题目描述】Herobrine能掌控所有,除了他内心的那棵柠檬树。他每看到一件让自己心生羡慕的事,他内心的柠檬树上就会多长出一只多汁美味的柠檬。现在,Herobrine有一棵含有n只柠檬的柠檬树,编号从1到n。这n只柠檬由n-1条树枝相连。 柠檬之间很喜欢用脱落酸进行交流。脱落酸只能通过树枝传递。柠檬们为了尽量频繁的进行交流,就团结一心,调整了树枝的形态,使得任意两只不同的柠檬之间都有且仅有...

2019-02-14 15:48:22 103

原创 【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 64 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 61

原创 奇洛金卡达 father.cpp

(我还能怎样,能怎样,最后还不是像父亲一样把你原谅 ——鲁迅)【简化题意】给一个长度小于k的字符串和n个操作。保证操作后字符串长度大于k,求最后的字符串中前k个字符。操作规则如下:给定一个(伪)区间[l,r],将区间中编号为奇数的字符形成一个新字符串,编号为偶数的字符形成一个字符串,将两个字符串拼接起来并放在编号为r字符的后边。n<=5000,k<=3e6【分析】传统...

2019-01-26 15:40:30 145

原创 救援 help.cpp

【简化题意】给定n个点。求一条y值为整数的直线使得各个点到直线的距离和最小,求最小距离和。【分析】显然垂线段最短,不太明白题目为什么要给x值。显然中位数时各个数之差最小,(这是邮局的前置知识)。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algori

2019-01-26 15:18:51 95

原创 统计练习 count.cpp

【简化题意】给出一些字符串。求所有字符串中出现最多的字符串和出现次数。时限3s【分析】map+string就可以水过这道题了,但貌似不是正解?据说如果出一堆很长的字符串就可以把string卡掉(string按位比较速度较慢)。所以我们还有如下两种办法。法一Hash代替直接的string比较,离线排序或者在线map皆可。法二Trie树统计。一种非常正常的解法。【code】还是...

2019-01-26 15:11:18 241

原创 搬桌子 move.cpp

【简化题意】n个搬桌子的路径在一条[1,200]坐标轴上,路径不重合的搬运可以同时进行,求最小搬运时间。n<=1e7【分析】相信各位大佬们都看出来了,这是一道显然的差分题。求区间重叠的状况,数据范围又奇大无比,还不要求强制在线,实在是一道练差分的模板题。(如果n<=1e6,没准还有可能会想用树状数组,逃)【code】#include<cstdio>#incl...

2019-01-26 14:59:38 160

原创 FFT学习笔记摘要

目的是多项式乘法,用一个n+m-2次多项式表示n-1次多项式乘上一个m-1次多项式。(以下把默认n=m,因为我懒,逃)暴力的暴力朴素的式子是C(x)=A(x)×B(x)=​∑k=02n−2(∑k=i+jaibj)​xk​C(x)=A(x)×B(x)=​\sum^{2n-2}_{k=0}(\sum_{k=i+j}a_ib_j)​x^k​C(x)=A(x)×B(x)=​∑k=02n−2​(∑k=i...

2018-12-26 21:40:25 137

原创 noi2008 假面舞会

【题目描述】有n个点和m条关系。只有集合i的点才会和集合i+1的点连边,特别的集合k的点可以和集合1连边(构成一个蛇咬尾的环形)。给定的关系和点之后,问k的最小值最大值是多少。(约定k≥3)【分析】只有环会对集合产生约束性,(链可以困成一卷一卷的)。所有环的最小公因数(最小周期,小环转1圈,大环转n圈)就是k的最大值。最小值就是k≥3的最小约数。如果最小公因数(周期)小于3,那么信息有误,输出“...

2018-12-09 21:29:36 84

原创 序列 sequence.cpp【搜索】【剪枝】

【一句话题意】给定一个1~n 的排列x,每次你可以将x1~xi 翻转。你需要求出将序列变为升序的最小操作次数。有多组数据。n<=25【分析】为什么我会,看到题会一头雾水?这就对了,因为这是一道搜索题。在baidu上浏览各个大佬的题解,核心都是估价函数+迭代加深。迭代加深可以理解,基于估价函数,我们可知从当前状态到目标状态(有序)的最少翻转次数。显然如果当前翻转次数+估价值大于迭代限制...

2018-11-07 16:25:36 90

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