
洛谷
Chester_King
虽千万人,吾往矣。
展开
-
【洛谷】3381 【模板】最小费用最大流
题目传送门划水啊,就是最小费用最大流的模板,只是标记一下自己会了这种算法。正解就是SPFA+EK,在SPFA扩展的过程中加入EK的判断——这条边的流量是否还有剩余。然后在所有节点都扩展完毕后进行EK的流量修改,最后统计答案。附上AC代码:#include #include #include #include using namespace std;struct no原创 2017-04-16 18:31:10 · 488 阅读 · 0 评论 -
【洛谷】2831 [Noip2016]愤怒的小鸟 状压DP
题目传送门突然感觉NOIP好难啊,要是这题放在考试中我肯定又是不会做的……观察数据范围,n≤18n \leq 18,我们想到了什么?没错,就是状压DP。首先我们已经知道了抛物线的形式y=ax2+bxy=ax^2+bx,那么我们可以O(n2)O(n^2)枚举点对算出抛物线的各项的系数,然后在判断一下哪些点在这条抛物线上。之后枚举状压的状态,选择从小到大的第一个不在状态里的点,然后枚举抛物线,直接进行状原创 2017-10-20 20:43:45 · 303 阅读 · 0 评论 -
【洛谷】1466 集合 Subset Sums 折半搜索
题目传送门这题的直观感受就是折半搜索,但是无从下手……有点小尴尬……设等差数列求和之后的和为sumsum,如果sumsum为奇数显然无法分成两半,直接输出00;否则必定可以分成两个子集。考虑折半搜索,对所有出现过的值记录次数,然后直接利用乘法原理统计答案即可。p.s.这题的答案可能爆int,注意答案用long long来存。附上AC代码:#include <cstdio>using namespa原创 2017-10-23 14:34:30 · 465 阅读 · 0 评论 -
【洛谷】1593 因子和 组合数学
题目传送门好像这题并不是组合数学啊……只是一个套公式的题目罢了。一个正整数nn有素因子分解=pa11∗pa22∗…∗pamm=p_1^{a_1}*p_2^{a_2}*…*p_m^{a_m},则有以下两个定理:1.n的因子和=pa1+11−1p1−1∗pa2+12−1p2−1∗…∗pam+1m−1pm−1=∏i=1mpai+1i−1pi−11.n的因子和=\frac{p_1^{a_1+1}-1}{p原创 2017-10-25 19:38:46 · 345 阅读 · 0 评论 -
【洛谷】1637 三元上升子序列 树状数组
题目传送门赶紧去补一发树状数组,好像这个数据结构在NOIP里考察的频率挺高啊……(一口奶)考虑题目中三元组里的中间项jj,发现需要求出位置和权值都小于jj的个数ll与位置和权值都大于jj的个数rr,根据乘法原理,jj对答案的贡献即为l∗rl*r。于是我们用两个树状数组来维护上述的ll和rr即可。p.s.因为这题的三元组要求严格上升,我定义权值从小到大排序,对于权值相同的节点,把位置从大到小排序,这样原创 2017-10-25 19:39:07 · 340 阅读 · 0 评论 -
【洛谷】2345 奶牛集会 树状数组
题目传送门题目描述:……摸牛仔的屁股……。话说这不是LYF最喜欢的游戏吗?考虑题目给出的公式,max(Vi,Vj)∗|Xi−Xj|max(V_i,V_j)*|X_i-X_j|,我们可以VV作为关键字排序,消除VV对统计答案的影响。这里我把VV从小到大排序。然后考虑绝对值,如果Xi>XjX_i>X_j,那么去掉绝对值就是Xi−XjX_i-X_j;否则就是Xi−XjX_i-X_j。(这TMD不是废话吗?原创 2017-10-25 19:39:33 · 427 阅读 · 0 评论 -
【洛谷】3807 【模板】卢卡斯定理
题目传送门这题嘛,就是模板题,来水一发博客的。(偷笑.jpg)根据卢卡斯定理的定义,递归的计算方法让我们想到了什么?没错,转进制数。那么卢卡斯定理是否可以理解为把n、m两个数转成p进制数后对应位的组合数之积呢?这个性质看上去没什么卵用,但是在一些数位DP题中好像有挺大的用处的。不过这个好像和这题没有太大的关联吧……反正这题我嫌烦直接打递归形式的附上AC代码:#include <cstdio>usi原创 2017-12-07 20:58:07 · 292 阅读 · 0 评论 -
【洛谷】2717 寒假作业 树状数组
题目传送门观察数据范围,n≤1e5n\le1e5,时间复杂度不是O(n)O(n)就是O(nlogn)O(n\log n),最多不过O(nlog2n)O(n\log^2n)。但这题显然O(n)O(n)没法搞,只能从O(nlogn)O(n\log n)来考虑了。直接把题意转化成一个等式:ai+ai+1+…+ajj−i+1≥k\frac{a_i+a_{i+1}+…+a_j}{j-i+1}\ge k,其中i原创 2017-10-29 21:12:32 · 337 阅读 · 0 评论 -
【洛谷】2034 选择数字 DP+单调队列
题目传送门有位大佬叫JZ,他在一次讲课里提到了“正难则反”的原则,虽然他讲的是数位DP,但是这个原则用在这题上也是有非常显著的效果的。题目要求不能有超过kk个连续的数字被选择,求最大权值。那么我们考虑在每kk个数中都要去掉一个数,求去掉的数的最小值。这样的话状态转移方程非常好写:定义f[i]f[i]表示前ii个数去掉一些数的最小值,f[i]=f[j]+a[i],j∈[i−k,i−1]f[i]=f[j原创 2017-10-29 21:12:05 · 454 阅读 · 0 评论 -
【洛谷】3389 【模板】高斯消元法
题目传送门我当高斯消元是什么神奇的算法啊,原来就是小学数学的解方程组……高斯消元的核心思想就是消元……对于第ii个方程,把第ii项的系数变成11,然后对第i+1⇒ni+1\Rightarrow n个方程,通过等式的减法把第ii项的系数变成00。这样一直到第nn行,显然这是的等式就是an=ba_n=b,然后向上回代即可。附上AC代码:#include <cstdio>#include <cmath>原创 2017-12-17 16:09:10 · 233 阅读 · 0 评论 -
【洛谷】2344 奶牛抗议 DP+树状数组
题目传送门这是一道普及组的题目……不要拦着我,我要跳楼……首先我们可以轻松写出状态转移方程:f[i]=Σf[j] (j这个DP的时间复杂度是O(n^2)的,显然过不了这题。然后我们就考虑有没有一种数据结构可以统计一个限度内的前缀和,显然树状数组满足了我们的要求。于是这题就A掉啦……p.s.这题的权值可能较大,记得在对权值离散化一下。再次p.s.记得考虑1~i这些元素分成原创 2017-09-20 21:36:00 · 279 阅读 · 0 评论 -
【洛谷】2759 奇怪的函数 公式变形
题目传送门好神的一题,纯数学题啊(话说以前那个纯物理题才是真的恶心)首先我们知道,一个数num的位数=log10(num)+1。然后我们根据对数函数的性质又知道,log10(x^x)+1=x*log10(x)+1。(这里的‘^’表示的是幂运算的意思,不是异或)我们还知道,对数函数在R上是增函数。因此我们可以二分这个x的值,时间复杂度就变成了O(log1e9)然后这题就AC原创 2017-09-24 16:20:14 · 409 阅读 · 0 评论 -
【洛谷】3377【模板】左偏树(可并堆)
题目传送门作为一个合格的蒟蒻,我们当然在学每一种算法后都要去做一些和这种算法有关的模板题。毫无疑问,这是一道左偏树的模板题。伏地膜大佬,这位大佬对左偏树的解释十分到位。左偏树就是在堆的基础上加上了距离的概念。距离指的是每一个节点到离他最近的不满节点的距离。若一个节点的左儿子或右儿子为空,则该节点是一个不满节点。左偏树有两个特殊的性质:1.一个节点的左儿子的距原创 2017-05-03 18:55:36 · 1182 阅读 · 0 评论 -
【洛谷】1821 [USACO07FEB]银牛派对Silver Cow Party 最短路径
题目传送门日常水一波,就是对正向图跑一遍SPFA,然后建一张反向图,也就是求其他所有的节点到源点的距离,然后再跑一遍SPFA。最后输出两次距离和的最大值就行了。附上AC代码:#include #include #include #include #define M 100010#define N 1010using namespace std;struct note原创 2017-05-15 19:31:14 · 399 阅读 · 0 评论 -
【洛谷】3379 【模板】最近公共祖先(LCA)
题目传送门诶,自己真的是越来越菜了,自己寒假里学会的LCA到现在已经忘得差不多了。今天就当是复习一下吧。其实这个倍增的思想还是挺神奇的,每次询问时先把深度较大的节点倍增到和深度较小的节点同一深度。然后再把这两个节点同时倍增到离它们最远的不相同的祖先出,赋值并循环,最后返回当前任意一个节点的父亲节点就是这两个节点的LCA了。附上AC代码:#include #include原创 2017-06-07 13:00:23 · 887 阅读 · 0 评论 -
【洛谷】1967 [noip2013]货车运输 最小生成树+LCA
题目传送门这题和上一题的解题思路是一模一样的,也是先对给出的边做一遍最小生成树,哦不对,这题是最大生成树。然后还是把无根树转化成有根树,求每个点的倍增祖先。然后,这题的判断有点特殊,其实也挺简单的,可能是我为了中考失了智吧……就是判断给出的两个节点的祖先是否相同,若不同,则输出-1;若相同,则输出这两个节点到它们LCA的路径上的最小边权。其他只要想进去就挺简单的,总之细心一点吧原创 2017-06-13 16:55:07 · 374 阅读 · 0 评论 -
【洛谷】1351 [Noip2014] 联合权值 枚举
题目传送门日常水一水,挑一道Noip的水题来练练手。这题的题意是求一棵树上所有的由两条边相连的点对的点权积的和,还有点权积的最大值。我们可以单独挑出一个点i,假设有4个点v1,v2,v3,v4和它直接相连,那么第i号节点对点权积和的贡献S可以表示成:S=W(v1)*W(v2)+W(v1)*W(v3)+W(v1)*W(v4)+W(v2)*W(v3)+W(v2)*W(v4)+W(v3)原创 2017-07-11 10:04:29 · 305 阅读 · 0 评论 -
【洛谷】3808 【模板】AC自动机(简单版)
题目传送门终于看懂啦!终于学会了AC自动机啦!(Flag立起)写篇博客梳理一下自己的思路吧。在文章的开头,必须先放上一些大佬的博客来压压场面:我选的当然是ZZK大佬,神犇传送门然而AC自动机的原理其实是比较好理解的,就是把Trie树和KMP的思想结合起来。这么说起来KMP就是单个字符串的AC自动机啊。(雾)给出许多模式串,把这些字符串都加入到Trie树中,在每个字符串结尾的叶子节点原创 2017-08-01 13:57:39 · 644 阅读 · 0 评论 -
【洛谷】3796 【模板】AC自动机(加强版)
题目传送门这题嘛,就是一个AC自动机的模板。主要是巩固一下今天学的AC自动机。在构造Trie树的时候在每一个字符串结尾的叶节点上标记一下该节点属于第几个字符串,然后对文本串跑一边AC自动机,对每一个经过的节点计数一下。然后把每一个模式串按计数从大到小sort一下,第一个模式串的计数就是答案,然后向后枚举和答案相同的模式串即可。附上AC代码:#include #include原创 2017-08-01 20:22:39 · 356 阅读 · 0 评论 -
【洛谷】3384 【模板】树链剖分
题目传送门这题就是模板的树链剖分,因为题目已经说得很清楚了。树链剖分就是把一棵树分成若干条链的数据结构,当一棵树退化成了一条链时,不管是求LCA还是求两个节点之间的距离都变得十分简单了,树链剖分就是这样降低时间复杂度的。将一棵树剖成了若干条链之后,就可以套用其他的数据结构来维护链上的许多信息,又是降低复杂度。所以,如此分析,树链剖分是一种非常优秀的数据结构。但是,说实话,代码的原创 2017-05-11 20:36:04 · 850 阅读 · 0 评论 -
【洛谷】2464 [SDOI2008]郁闷的小J 平衡树
题目传送门这题的思路好诡异啊……最近在看有关平衡树的一些东西,看到书上的课后习题有这题。看到这题我就傻了——这TMD怎么用平衡树做?题解给出的思路是对每本书的编号离散化后建立平衡树森林,权值为这本书所在的位置。对于每个修改就把这本书从原来的平衡树中删掉,然后插入新的平衡树中。询问非常的简单,差分一下就行了。(话说这题如果用分块做感觉要好想多了……)附上AC代码:原创 2017-09-23 09:40:16 · 404 阅读 · 0 评论 -
【洛谷】3690 【模板】Link Cut Tree (动态树)
题目传送门一道迟到的模板题。话说在思路清晰的时候敲代码真的爽啊。修改操作可以先访问该节点,然后把它旋转到根,这样只用修改这一个点的权值就好了。询问操作可以把其中一个节点搞成根,然后两点间的权值就变成了另一个节点到根的权值了。这两个想法挺妙。附上AC代码:#include #include #include using namespace std;const i原创 2018-01-07 20:20:43 · 266 阅读 · 0 评论