
POJ,HDU,ZOJ,LOJ,Topcoder题解
文章平均质量分 53
DYT_B
略过
展开
-
POJ 1273 Drainage Ditches
题目描述:DescriptionEvery time it rains on Farmer John’s fields, a pond forms over Bessie’s favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time...原创 2018-02-10 23:13:29 · 189 阅读 · 0 评论 -
ZOJ:3649 Social Net
题目描述:戳这里 题解: 这题绝对有毒。。。 第一眼看到这题的题面感觉应该比较简单,只要倍增维护一下最大值和最小值就好了??? 然而码了70+行之后发现题目读错了。有一个限制条件,两个点x,y是“有向”的,x到y的路径序列中,最大值的位置编号一定要大于最小值的位置编号。。。 这样就比较麻烦了[汗]。 但是也不是不可做,我们“只需要”维护五个倍增数组就可以了。 f[i][j]f[i][...原创 2018-08-02 08:28:01 · 278 阅读 · 0 评论 -
HDU4193 Least common multiple
题目描述:戳这里 题解: 这题中对于一个子集,它的最小公倍数一定是2max(a[i])∗3max(b[i])2max(a[i])∗3max(b[i])2^{max(a[i])}*3^{max(b[i])} 那么一个子集的LCM只取决于它之中a[i]最大的元素和b[i]最大的元素。 那么对于每一个点对(a[i],b[i])我们可以排序一维,使它的a有序。 那么考虑排序后的第i个元素,我们只...原创 2018-08-07 22:33:44 · 314 阅读 · 0 评论 -
HDU 5780 gcd
题目描述:戳这里题解: 首先有一个结论:gcd(xa−1,xb−1)=xgcd(a,b)−1gcd(xa−1,xb−1)=xgcd(a,b)−1gcd(x^a-1,x^b-1)=x^{gcd(a,b)}-1 推导过程可以参考一下辗转相减法。 (xa−1,xb−1)=(xa−b,xb−1)(xa−1,xb−1)=(xa−b,xb−1)(x^a-1,x^b-1)=(x^{a-b},x^b-1...原创 2018-08-30 18:47:27 · 519 阅读 · 0 评论 -
CDQ分治模板:HDU5618 Jam's problem again
题目描述:戳这里题解:这是一道CDQ分治的模板。我们想要求三维的“正序对”的数量。那么可以通过牌序第一维,然后对后两位使用一些数据结构来维护。但是这样很难维护,而CDQ分治就是解决这样的问题的一个得力工具。CDQ的思想大概就和归并排序一样。我们先以x,y,z分别为第1,2,3关键字排序。考虑分治,对于一段区间,我们把它分成l ~ mid和mid+1 ~ r两段,使其分别按y排序。那么...原创 2018-11-18 19:44:02 · 352 阅读 · 0 评论 -
LOJ#2127. 「HAOI2015」按位或
题目描述:戳这里题解:这题如果按照题意做看似非常不可解,但是有一个叫做Min-Max容斥的东西:Max(S)=∑U⊂S(−1)∣U∣−1Min(U)Max(S)=\sum_{U\subset S}(-1)^{\left| U \right|-1}Min(U)Max(S)=U⊂S∑(−1)∣U∣−1Min(U)对于这题,Max就是答案,也就是∣|∣到2n−12^n-12n−1的期望步数。...原创 2018-12-27 18:42:02 · 331 阅读 · 0 评论 -
LOJ#2718. 「NOI2018」归程
题目描述题解:对于权值大于等于或者小于等于某一个值的询问我们可以考虑用kruskal重构树来解决。kruskal重构树是指在对一张无向图进行kruskal求出最小/最大生成树的同时,把当前的两颗子树合并到新的节点上,作为它的两个子节点,并且把新节点的点权赋为当前这条边的边权,最后变成一颗树。那么这样合并以后,有一些好的性质:1.两个点之间的路径经过的最大边最小/最小边最大时,只要求重构树...原创 2018-12-28 09:59:41 · 403 阅读 · 0 评论 -
LOJ6482. LJJ 爱数数
题目描述:戳这里题解:1a+1b=1c\frac{1}{a}+\frac{1}{b}=\frac{1}{c}a1+b1=c1(a+b)c=ab(a+b)c=ab(a+b)c=ab令g=gcd(a,b),A=ag,B=bg令g=gcd(a,b),A=\frac{a}{g},B=\frac{b}{g}令g=gcd(a,b),A=ga,B=gb(A+B)c=ABg(A+B)c=ABg...原创 2018-12-24 19:58:20 · 736 阅读 · 0 评论 -
LOJ#2155. 「POI2011 R1」同谋者 Conspiracy
题目描述题解:这个题目要求的是把一张无向图变成一个团和一个独立集的方案数。这看似好像无从下手。那么我们可以换一个角度思考,我们考虑先求出一个解,然后通过调整得出所有解。假设已经求出了一个解,我们会发现,其它所有的解只可能由这个解通过三种方式得到:1.将一个原本在独立集里面的点放到团中(可行的条件下)。2.将一个原本在团中的点放到独立集中(可行的条件下)。3.将一个独立集中的点和团中的点...原创 2018-12-31 14:30:59 · 502 阅读 · 0 评论 -
HDU4912 Paths on the tree
题目描述:戳这里 题解: 树上贪心。对于每一个路径,肯定是一个折线型的。那么我们找出两个端点的lca,然后按lca的深度排序,从深到浅,能加入就加入,否则就不加入。 证明可以口胡一下:我们会发现如果这个路径能加却不加,而是加一个深度更浅的路径,那么肯定肯定会使后面的点的限制更加紧,后面能加的路径更少,所以必然更加不优秀。那么代码如下:#include<cstdio>...原创 2018-08-07 22:17:06 · 218 阅读 · 0 评论 -
割边:ZOJ2588:Burning Bridges
题目描述:戳这里题解: ZOJ绝对有毒。。。格式要求令人害怕。 这题是割边的裸题。 因为在无向图中,刷出DFS序后只有返祖边(yy一下应该就知道为什么了)。那么一条边是割边一定要满足它的子树中所有点的返祖边都不会跨过它。 那么这个条件很容易用树上差分来实现。但是考虑到要和割点以及强连通分量联系起来,我们也用dfn和low来实现。 那么对于一条边,我们只要看它的son的low是不是大于...原创 2018-08-03 08:14:28 · 240 阅读 · 0 评论 -
HihoCoder #1369 : 网络流一·Ford-Fulkerson算法
题目描述:描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个大城市都会遇到的问题:交通拥挤。 小Ho:每到周末回家感觉堵车都是一种煎熬啊。 小Hi:平时交通也还好,只是一到上下班的高峰期就会比较拥挤。 小Ho:要是能够限制一下车的数量就好了,不知道有没有办法可以知道交通系统的最大承受车流量,这样就可以限制到一个可以一直很顺畅的数量了。 小Hi:理论上是有算法的啦...原创 2018-02-13 21:23:15 · 263 阅读 · 0 评论 -
莫比乌斯反演初步:HDU 1695 GCD
题目描述:戳这里 题意:求∑1b∑1dGCD(x,y)=k∑1b∑1dGCD(x,y)=k\displaystyle\sum_1^b\sum_1^dGCD(x,y)=k PS:a,c在题面中已经说明了是没用的[汗]题解: 这题看似好像可以将x和y同时除以一个k,然后用欧拉函数直接搞。但是,因为是莫比乌斯反演的模板题,我们还是思考一下反演的做法吧。 作为一个初学者,表示一脸懵逼[钨丝反演...原创 2018-07-16 19:47:48 · 274 阅读 · 0 评论 -
Topcoder SRM 672 Div.2 题解
T1:判断两个集合A、B的关系,包括A包含B,B包含A,A和B完全相同或者A和B不满足以上所有的关系。那么模拟一下。可以开一个hsh数组标记一下,对于一个A[i],将hsh[a[i]]–;对于一个B[i],将hsh[B[i]]++。这样有一个好处,就是如果这个数即存在于a数组,也存在于b数组,可以相互抵消。最后分四种情况特判一下就可以啦。代码如下:我是代码T2这题给定一...原创 2018-07-24 21:31:00 · 375 阅读 · 0 评论 -
HDU 3001 Travelling
题目描述:戳这里 题解:SB状压题啊。。。 这题注意到题目中有一个条件,每一个点最多可以经过两次。这样就不能愉快地直接状压了。但是我们可以考虑一下三进制的状压DP,每个点可以经过1次或者两次。 那么直接两点之间有边就转移就可以了。 然而这题卡内存,开大一点就MLE。。。 我改了半天,又WA了。。。 最后才发现原来是-1的情况的判断没有注意到ans的大小。。。 无语。。。#in...原创 2018-07-19 20:52:46 · 184 阅读 · 0 评论 -
Light Oj 1316 - A Wedding Party
题目描述:戳这里题解:这题一看就可以用状压来解决,复杂度可行。 但是代码改了好久。。。 看来我还是太菜了。。。 代码如下:#include<cstdio>#include<string>#include<cstring>using namespace std;const int maxn=20,maxm=177250;int n,...原创 2018-07-20 20:03:47 · 238 阅读 · 0 评论 -
平面最近点对:HDU1007:Quoit Design
题目描述:戳这里 题解: 这题是平面最近点对的裸题。 感觉平面最近点对还是比较玄妙的。 这个算法用到的是分治的思想,先分为左右两边 ,然后合并其。 那么就具体来讲讲吧。 首先我们先按照x坐标来排序n个点。 然后就是求解过程,根据我前面说的,对于一段区间[L…R],我们求出它的中点mid,然后分治[l…mid],[mid+1…R]。 我们假设d=两段中较小的最短长度。 那么我们当前...原创 2018-08-02 19:03:11 · 282 阅读 · 0 评论 -
HDU 4358 - Boring counting
题目描述:戳这里 题解: 这是典型的树上查询和子树有关信息并且无修改的题目。 那么就可以直接DSU on Tree 或者 启发式合并就好啦。 我写的是启发式合并,每次记录一下当前点的当前枚举过的儿子的颜色集合,那么当前枚举儿子k,我们只要两个集合合并一下即可。但是要保证把小的并到大的,这样就能保证复杂度在O(nlog(n))的范围内啦。代码如下:#include<cstd...原创 2018-08-07 14:44:19 · 371 阅读 · 0 评论