12 2018 档案

摘要:"传送门" 这道题的做法……我学的是最经典的线段树套平衡树。 因为发现其实这题的题目描述和普通平衡树非常的相似……只是这次是在给定的区间中。所以我们能想象到用线段树维护区间,然后每个线段树的节点都是一颗平衡树,用于维护区间内信息。 具体操作的实现办法: 1.查询k在区间内的排名:在给定的区间的每一个 阅读全文
posted @ 2018-12-29 00:10 CaptainLi 阅读(258) 评论(0) 推荐(1) 编辑
摘要:"传送门" 题目大意:给定一个长为n的序列。求序列中所有长在L R内的价值前K大的连续子序列价值之和。每个子序列的价值是其所有元素之和。 首先我们肯定是要用前缀和相减的方式来计算的。每次取最大的区间,之后只要我们把这个区间删除,继续计算就可以了。 我们有一个很朴素的想法就是枚举左端点,然后用st 阅读全文
posted @ 2018-12-28 17:53 CaptainLi 阅读(179) 评论(0) 推荐(0) 编辑
摘要:"传送门" 首先,如果这道题只有一次询问的话,那么他就是一个树形DP,只要我们分个情况,用把它的子树中所有节点全部割断的价值和割断它的价值的最小值更新答案就可以了,如果这个点是关键点一定是要割断的。不过这样每次是O(n)的,会超时。 不过因为这道题总的关键点数非常少,如果我们每次能只保留关键信息 阅读全文
posted @ 2018-12-23 10:43 CaptainLi 阅读(201) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题好好玩啊……我也想自♂由的游走…… 首先我们肯定是把期望越大的边权值设置的越小。边的期望显然是由点的期望决定的,就是两个点的期望除以其点度的和。 所以我们转化为求点的期望。点的期望是可以由周围的点更新的。我们设x1,x2xk都是与当前点x相连的点,那么就有: $$an 阅读全文
posted @ 2018-12-22 15:17 CaptainLi 阅读(108) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目要求解线性方程组,不过这次是要在模2的意义下做。也就是相当于把变量互相异或。 本题用O(n3)的高斯消元过不了,不过在互相异或的情况下,消元其实就是两个方程组直接互相异或,用bitset优化一下即可。 至于如何求最少使用的方程,因为每次都是找一个最小的,使得当前位为1的方程,所 阅读全文
posted @ 2018-12-22 11:41 CaptainLi 阅读(202) 评论(0) 推荐(0) 编辑
摘要:"传送门" 我们把球心坐标看做方程的一组解,之后我们设这个高维球体的半径是r。 这样我们可以同时列出n+1个方程:i=1n(aibi)2=r2 把方程拆开得到$$\sum_{i=1}^n( 2a_ib_i) + \sum_{i=1}^nb_i^2 r^2 = \ 阅读全文
posted @ 2018-12-22 11:31 CaptainLi 阅读(164) 评论(0) 推荐(0) 编辑
摘要:"传送门" 用dp[i]表示到第i个士兵的最大战斗值,则有: dp[i]=maxj=1i1{dp[j]+f(sum[i]sum[j])},其中f(x)=ax2+bx+c 把式子拆开以后用斜率优化即可。因为作为标准的常量是sum[i],保持单调 阅读全文
posted @ 2018-12-21 15:22 CaptainLi 阅读(118) 评论(0) 推荐(0) 编辑
摘要:"传送门" 考虑用dp[i]表示把前i个地点的物品全部安置好的最小花费。因为物品只能往下运,所以当前这个位置必须建仓库,dp方程很好想: dp[i]=minj=1i1{dp[j]+k=j+1i1p[k](x[i]x[k])}+c[i] 阅读全文
posted @ 2018-12-21 00:07 CaptainLi 阅读(239) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题直接上斜率优化吧…… 因为对答案有贡献的是长或者宽最大的那个。所以我们首先按一维排序,这样我们就只需要考虑另一维了。 考虑用dp[i]表示购买前i块土地的最小费用,那么我们可以很容易的得到dp方程: $$dp[i] = min_{j=1}^{i 1}dp[j] + x[j+1] y 阅读全文
posted @ 2018-12-20 23:56 CaptainLi 阅读(165) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题……多么希望他是可以O(n)做的呀……~~取模练习题~~ 考虑一下用f[i]表示到第i个数的结果,很容易得到:f[i]=f[i1]10k+i。其中k是当前数的位数。 这个显然可以用矩乘优化……不过因为k是变量,所以麻烦一点……不过不要紧,对于不同位数的数我 阅读全文
posted @ 2018-12-20 00:00 CaptainLi 阅读(114) 评论(0) 推荐(0) 编辑
摘要:"传送门" 首先有一个结论:一个只有0,1的邻接矩阵,f[i][j]表示第i点到第j点走1步的路径条数。那么这个矩阵的k次幂的f[i][j]就表示第i点到第j点走k步的路径条数。 这个可以用矩阵快速幂优化,不过图有边权怎么办? 我们可以拆点。因为边权很小,所以可以把每个点都拆 阅读全文
posted @ 2018-12-19 23:55 CaptainLi 阅读(265) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这题也是真恶心…… 题目大意是俩公司要运货,每条路有容量上限。然后B公司手里有p个……(技能点?)如果在一条路上放了x个技能点,这条路经过了y个货物,那么B公司就会收x y的钱。现在要求的是,B公司最大获利和A公司在付费最大时的最小值,和这个问题完全倒过来。 首先有一个结论是B公司一定会 阅读全文
posted @ 2018-12-18 00:40 CaptainLi 阅读(192) 评论(0) 推荐(0) 编辑
摘要:"传送门" 有源汇的上下界网络流求最小流。 这个其实和上道题差不多……题目描述我没怎么看明白……好像就是让你按照他说的把图建出来就行了,注意这个题的字符处理,可能有长度大于1的字符串,要注意一下。求最小流的话还是先求可行流,之后因为可行流可能流多,而从汇点向原点跑相当于退流。所以我们再从原点向汇点跑 阅读全文
posted @ 2018-12-18 00:30 CaptainLi 阅读(126) 评论(0) 推荐(0) 编辑
摘要:"传送门" 有源汇的上下界网络流求最大流……(悄悄嘀咕一句,我也想给小姐姐拍照……) 题目大意:Aya要给一群小姐姐拍照。她在n天(n include include include include include include include include define rep(i,a,n) 阅读全文
posted @ 2018-12-18 00:26 CaptainLi 阅读(104) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这题是真的恶心…… 有源汇的上下界网络流求可行流…… 首先矩阵的建图基本比较清晰,就是行列之间连边,其上下界由给定的条件决定。这题其实有两种改造法都能过。第一种是最正统的套路,就是首先建立原点和汇点,然后把行向原点连边,容量全都是0(因为上下界的差值是0),不过要更改这些点的流入和流出下 阅读全文
posted @ 2018-12-18 00:16 CaptainLi 阅读(149) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目大意:给定N(N include include include include include include include include define rep(i,a,n) for(int i = a;i = a;i ) define enter putchar('\n') 阅读全文
posted @ 2018-12-18 00:03 CaptainLi 阅读(99) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题……主要问题在于d(ij)应该怎么变形……容易想到改变成gcd的形式,不过不知道怎么改…… 后来听大佬说有这么一个性质: d(ij)=x|iy|j[gcd(x,y)=1] 这个不知道怎么严格证明……不过可以感性理解一下,就是首先肯定是 阅读全文
posted @ 2018-12-15 09:42 CaptainLi 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目要求,求: i=1nj=1mlcm(i,j) 先转化为gcd的形式,然后枚举gcd。 i=1nj=1md=1nijd[gcd(i,j)=d] 把d除进去,套用莫比乌斯 阅读全文
posted @ 2018-12-15 08:36 CaptainLi 阅读(122) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目描述很清楚,还是先老套路枚举gcd,不过这次你枚举的只能是质数。 i=1nj=1md=1,d is primen[gcd(i,j)=d] 这个式子我们很熟悉。直接d除进去然后套莫比乌斯函数的性质: $$\sum_{d=1,d 阅读全文
posted @ 2018-12-15 01:15 CaptainLi 阅读(129) 评论(0) 推荐(0) 编辑
摘要:"传送门" 做过上一道题之后,这个题就没啥难度了。就是加了个枚举的下界。 就像维护二维前缀和一样,直接把结果加加减减即可,具体方法和上一题一样。直接看代码。 cpp include include include include include include include include inc 阅读全文
posted @ 2018-12-15 00:42 CaptainLi 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目要求:求出 i=1nj=1m[gcd(i,j)=d] 我们先假设m include include include include include include include include define rep(i,a,n) for( 阅读全文
posted @ 2018-12-15 00:37 CaptainLi 阅读(120) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题观察一下之后发现,答案就是求 i=1nj=1mgcd(i,j)21 那我们的目标就是求i=1nj=1mgcd(i,j),先老套路转化成枚举gcd: $$\sum_{i=1}^n\sum_{j=1}^m\ 阅读全文
posted @ 2018-12-15 00:24 CaptainLi 阅读(177) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目要求求: i=1nlcm(i,n) 先转化成gcd处理: ni=1nigcd(i,j) 之后老套路 枚举gcd,并且先把d除进去之后用i代替id $$n \sum_{d|n}i\sum_{i= 阅读全文
posted @ 2018-12-14 23:28 CaptainLi 阅读(102) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目描述很简洁,求i=1ngcd(i,n) 由于我们难以直接求出gcd,所以我们换一种比较套路的做法:枚举gcd,转化为数论函数计算。 根据欧拉函数的性质:n=d|nφ(d),那么我们就能把式子改写一下,得到 $$\sum_{ 阅读全文
posted @ 2018-12-13 14:09 CaptainLi 阅读(130) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这题……我觉得像我这样的菜鸡选手难以想出来…… 题目要求求出一些子序列,使得其关于某个位置是对称的,而且不能是连续一段,求这样的子序列的个数。这个直接求很困难,但是我们可以先求出所有关于某个位置对称的子序列,最后减去子串的个数。 子串个数可以用manacher求,至于子序列的话,我们 阅读全文
posted @ 2018-12-13 08:40 CaptainLi 阅读(169) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题我一开始做的时候啥也不会……心想这和FFT有啥关系啊…… 旁边的mrclr告诉我说要勇于把式子分解。然后我就把式子分解了一下。我们要求的是i=0n(xiyic)2,拆开之后就是$\sum_{i=0}^n(x_i^2 + y_i^2 2x_iy_i 阅读全文
posted @ 2018-12-12 21:34 CaptainLi 阅读(159) 评论(0) 推荐(0) 编辑
摘要:"传送门" 一道FFT的标准练习题。 把qi除进去,就可以得到E(j)=ijqj(ij)2. 把这个式子前后两部分分别拆开,设f(i)=qi,g(i)=1i2,那么前一部分就是$\sum_{i=0}^j f( 阅读全文
posted @ 2018-12-12 21:12 CaptainLi 阅读(88) 评论(0) 推荐(0) 编辑
摘要:"传送门" 做这道题的时候超级有画面感…… 这道题其实不是很难……只要掌握了结论就不是什么问题,不过我因为推错了还是做了好长时间…… 题目其实就是要求你重复多次求 i=1nim+1 以前有大神写论文告诉我们,这个式子是一个以n为自变量的k+1k是指数)次 阅读全文
posted @ 2018-12-12 10:52 CaptainLi 阅读(321) 评论(0) 推荐(0) 编辑
摘要:"传送门" 我们遇到的问题是,给定一个多项式的点值表示和一个数,求出这个数带入多项式后的值。 这个问题如果用待定系数法,可以使用高斯消元,但是复杂度是O(n3)的,无法通过本题。 所以我们来引入拉格朗日插值法。 它的关键在于,有一个拉格朗日基本公式: $$f(k) = \sum_{i=0}^n 阅读全文
posted @ 2018-12-12 10:37 CaptainLi 阅读(404) 评论(0) 推荐(0) 编辑
摘要:(不加传送门啦……)现在vjudge也不支持评测…… 这题是不带修改的树上莫队。做完糖果公园再做这道题就会觉得非常简单。然后我想吐槽一下这道题……为什么色盲看颜色还能把一种颜色认为是与之相同的颜色啊…… 所以要注意判断一下两种给定颜色相同的情况就可以了。还有这题我不知道vjudge不能提交, 阅读全文
posted @ 2018-12-12 07:41 CaptainLi 阅读(102) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题是标准的树上带修改莫队。兔哥称之为“莫队的集大成者”。 先说一下树上莫队吧。树上莫队就是把莫队搬到了树上,它的算法仍然是通过对树进行分块,使得各个元素属于一个块,之后像普通的莫队一样,按照左右端点所属的块排序。至于树上分块的做法,直接看这篇博客的 "上一篇" 就好了。 然后我们说一 阅读全文
posted @ 2018-12-11 21:58 CaptainLi 阅读(118) 评论(0) 推荐(0) 编辑
摘要:"传送门" 基础的树上分块题。如何保证一个块内的元素在[B,3B]之间呢?这里有一个很简单的方法是直接dfs。在每次进入一棵子树之前,我们记录一下现在栈顶编号,之后在返回的时候,如果当前编号减去所记录的编号的差值要大于等于B,那就直接把它们加到一个块内。最后可能会剩余一些元素,直接压到最后一个块内即 阅读全文
posted @ 2018-12-11 21:40 CaptainLi 阅读(177) 评论(0) 推荐(0) 编辑
摘要:"传送门" 主席树大好题……这道题让主席树不仅停留在了区间第k大上,而是让它能执行像线段树一样的操作。 首先我们先说点套路的事。求中位数有一个二分法,就是每次二分答案,把大于等于当前二分的数设为1,小于的设为 1,之后我们只要看和是否大于0就能判断限制二分的值是大是小。然后虽然区间是不确定的,但是我 阅读全文
posted @ 2018-12-11 16:11 CaptainLi 阅读(206) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这次主席树要维护的是树上信息啦。 其实主席树基本的思想还是用前缀和,那么我们就仿照一下,在树上做前缀和就好啦。我们令第i个节点所在的主席树维护该点到根节点路径上的所有数(值域是数的值),之后在计算的时候,以$v[p] + v[q] v[lca(p,q)] v[fa[lca(p,q)] 阅读全文
posted @ 2018-12-11 15:54 CaptainLi 阅读(256) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题是主席树好题啊…… 题目大意:给定一个序列,每次给定一段区间,区间内所有不同的数第一次出现的位置排成一个序列,求这个序列的中位数。 其实求中位数并不是很难,只要我们能把这个序列中不同的数出现的位置都求出,就能很直接的转化为用主席树求静态第k小的问题。首先我们考虑一下如何计算区间内有 阅读全文
posted @ 2018-12-11 15:28 CaptainLi 阅读(100) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题是带修主席树的板子题。我们先来考虑一下主席树带修改最暴力的做法,就是暴力修改与之有关的所有权值线段树,这样的话单次操作的复杂度就是O(nlogn)的,总体的操作就是O(n2logn)的,显然吃不消。 因为主席树其实应用的是前缀和的思想,我们考虑一下在最开始的时候,我们是怎 阅读全文
posted @ 2018-12-10 23:04 CaptainLi 阅读(210) 评论(0) 推荐(0) 编辑
摘要:"传送门" 又是一句经常见到的话……做完这题对主席树的理解会更好一些…… 这道题把普通的主席树单点修改区间查询改成了区间修改单点查询。这个的话我们可以改成差分解决……把一个操作改成两个,然后把所有操作按照时间进行排序。注意这里修改细节很多,因为可能在一个时间上有很多操作,所以我们要先继承上一个时间点 阅读全文
posted @ 2018-12-10 20:39 CaptainLi 阅读(170) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题和主席树板子基本上一样,不过还是有些不同的。 因为这次要求的是是否存在一个数出现次数大于一半(mid),我们还是正常用主席树维护,之后在查询的时候,先看左子树内的权值是否大于mid,如果是就向左查找,否则再找右子树权值是否大于mid,如果是就向右。否则说明没有符合的,返回0即可。 阅读全文
posted @ 2018-12-10 17:36 CaptainLi 阅读(129) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题的话……首先得知道怎么求LCP。我们的方法首先二分一个长度,之后判断一下该区间内两段字符串的hash值是否相等,这样就可以啦。 然后本题还要求支持插入和修改字母,所以我们需要使用一棵splay来维护hash值。具体做法是动态维护每一个节点的子树的hash值,在合 阅读全文
posted @ 2018-12-10 15:00 CaptainLi 阅读(170) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题与普通的splay不大相同,别的都是以权值来排序,但这道题是以位置进行排序的,也就是对于一个节点,它的左子树中的节点都在它的上面,右子树中的节点都在他的下面。 这个比较独特的一点在于建树,这次不能再二分查找要插入的位置了,而是每一次直接把当前插入的点作为上一次插入的点的右儿子( 阅读全文
posted @ 2018-12-10 09:27 CaptainLi 阅读(135) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题……如bin哥所说,算法不难想,但是很难写,而且还有些卡常…… 其实这题我做的很奇怪……就是大致的算法都是对的但是我和别人的实现方法一点都不一样……(我怎么总是这么奇怪的做题) 因为要求平均值,所以就可以想到01分数规划,二分答案,然后要求的是树上的一条路径,那就是点分治咯。想到这 阅读全文
posted @ 2018-12-09 18:43 CaptainLi 阅读(169) 评论(0) 推荐(0) 编辑
摘要:"传送门" 题目大意就是先给定n个点,然后m个操作,每次添加一个点或者查询离一个点最近的一个点是哪个点。 因为要求的是曼哈顿距离,所以我们先把式子转化一下,就是(xi+yi)(xj+yj),也就是对于查询的点,求出时间早于它,且x,y都小于它的点中xi+yi最大的一 阅读全文
posted @ 2018-12-09 09:10 CaptainLi 阅读(123) 评论(0) 推荐(0) 编辑
摘要:又是一年NOIP,可能是梦结束的地方? 之所以咕了这么久是得先确定自己不会退役,因为分太低了。 和去年一样在学校门前照了相,然后上车走了。高三回来考的只剩下p2oileen学姐了。新一届的学弟学妹倒是有不少,而且比我们去年强多了。到大连大学试机,只给了几分钟,高精还没写完就走了…… 回去晚上 阅读全文
posted @ 2018-12-08 21:24 CaptainLi 阅读(619) 评论(0) 推荐(1) 编辑
摘要:"传送门" 这个题其实和板子题差不多……不过这次修改和询问是分离开的,然后一个询问要被拆分成4个,就是维护二维前缀和的方式。 我的做法比较奇怪……(怎么我CDQ分治的题做法都很奇怪),别人都是按时间排序然后归并x,树状数组统计y,用x作为限制,因为这样时间天然有序。我是按x排序然后归并时间……其 阅读全文
posted @ 2018-12-08 20:46 CaptainLi 阅读(111) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题其实我一开始直接的反应是分块……不过听说这是CDQ分治练习题。 看到这种删除的题……一般就会想到先全删光之后整回去。对于每次添加,我们要统计的就是添加在它之前的,位置在它之前的,比他大的,和添加在它之前的,位置在它之后的,比他小的。 形象地说,对于每一个操作i,给定三个值tim 阅读全文
posted @ 2018-12-08 20:34 CaptainLi 阅读(125) 评论(1) 推荐(0) 编辑
摘要:传送门 CDQ分治是一个神奇的东西……说实话我觉得看它的讲义我是真的看不懂。感觉好像分治类的算法都这样,就是讲义讲不明白,得多做题才能慢慢理解。 毕竟因为分治的题主要是不知道怎么实现……得具体题目具体分析。 CDQ分治的精华我觉得是在于,他能通过“修改独立,允许离线”,转化为将序列分为两份,其中保证 阅读全文
posted @ 2018-12-08 20:22 CaptainLi 阅读(275) 评论(0) 推荐(0) 编辑
摘要:传送门 题目翻译的很清楚……似乎点分治的题题目描述都非常简洁。 还是那个操作,一条路径要么全部在一棵子树中,要么经过当前的重心,所以考虑点分治。 首先dfs求出重心的每一棵子树中,有i个黑点的最长路径长度(这个没什么难度),之后我们只要考虑一下怎么在子树之内合并信息即可。 首先我们肯定是枚举所有的子 阅读全文
posted @ 2018-12-08 19:52 CaptainLi 阅读(237) 评论(0) 推荐(0) 编辑
摘要:传送门 题目描述很清楚……虽然说要求的三角形不一定是三角形…… 这个题和平面最近点对看起来很像。考虑分治,对于当前处在中央的一个点,能更新答案的只有两种,第一种是用两个同在一侧的点与之更新,另一种是用两个异侧的点与之更新。同侧的我们递归下去分治就好了,而对于不同侧的,我们首先得到这时已经计算出来的最 阅读全文
posted @ 2018-12-08 09:42 CaptainLi 阅读(231) 评论(0) 推荐(0) 编辑
摘要:传送门 题目翻译给的很清楚w 这题官方给的算法是分治,但是说实话我真的不知道它和分治有什么关系…… 有一个很正常的思路是先把所有修改都加上,之后先计算出来最小的情况(这个很简单,dp一下即可),之后再逐步考虑修改有什么影响。 首先如果一次修改对答案有影响的话,那么更优的矩形一定是跨过这个障碍所在的一 阅读全文
posted @ 2018-12-08 08:57 CaptainLi 阅读(252) 评论(0) 推荐(0) 编辑
摘要:传送门 题目翻译都有……注意要求限制所有的点数不超过200000个。 这题的做法其实非常的暴力……一开始想得乱七八糟的,想到把互相离的比较近的那些点都添加上一些点,形成一个垂直的形状,不过这样好像没什么思路orzzzz 考虑分治,只要每次找到坐标在中间的那个点,之后把其他所有的点向这条线做正投影就行 阅读全文
posted @ 2018-12-08 08:48 CaptainLi 阅读(215) 评论(0) 推荐(0) 编辑
摘要:传送门 一道比较基础的分治题……但是我似乎不会分治…… 首先,区间的价值肯定与最小值有关,所以对于当前处理的区间,我们首先暴力的求出区间的最小值,其位置记为pos。之后……对于一个横跨过pos的区间,它的价值必定可以由pos左右两边区间的价值更新而来,所以说我们只需要暴力的在左右两边O(n)的扫一遍 阅读全文
posted @ 2018-12-08 08:41 CaptainLi 阅读(161) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意:给定一个含有n个元素的集合,求出其中一个子集,使得在子集内所有元素的和的绝对值最小的情况下,子集元素个数最小。输出最小值和最少元素个数。n <= 35. 这个题是很显然的折半搜索,我们先搜前一半,再搜后一半,搜到后一半的时候,我们在前一半元素之中二分去找最接近0的那一个值来更新答案 阅读全文
posted @ 2018-12-05 22:01 CaptainLi 阅读(237) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示