- 博客(108)
- 收藏
- 关注
转载 GCD相关
板子:1 int gcd(int a, int b) { return b > 0 ? gcd(b, a % b) : a; }POJ1930题意:给你一个无限循环小数,给到小数点后 9 位,要求这个数的分数形式。解法:要想解决这道题,首先应该了解如何将循环小数化为分数:一,纯循环小数化分数:循环节的数字除以循环节的位数个 9 组成的整数。例如:...
2019-09-09 17:28:00
285
转载 树的直径
树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径,即直径是一个数值概念,也可代指一条路径树的直径通常有两种求法,时间复杂度均为 O(n) 。我们假设树以 N 个点 N-1 条边的无向图形式给出,并存储在邻接表中。解法1:dp状态:设...
2019-09-05 15:35:00
249
转载 次短路问题
题意:N 个点,R 条边,问从点 1 到点 N 的次短路为多少解法:首先明白次短路的计算方法:到某个定点 v 的次短路要么为到定点 u 的最短路加上边 (u,v)的长度;要么为到定点 u 的次短路加上边(u,v)长度。对于第一种情况讨论的是在松弛时没有松弛的情况,即当 dist[u] > dist[v] + cost(u,v) 时,仍然选择dist[u]。第二种情况...
2019-09-01 16:53:00
237
转载 中位数相关
中位数的题看见一些了,出个专题POJ3669题意:给出 C 只牛,每只牛有成绩和价钱,要求选 N 只,使这 N 只牛的中位数最大且价钱之和不超过 F解法:将牛按成绩从小到大排列后依次算出来每只牛前面和后面 N/2 只牛价钱和最小值,用优先队列维护最大值,当队列元素超过 N/2 只的时候减去最大值即可。注意写法。所以最佳结果就是遍历牛然后选 前面+自己+后面 最大的那个...
2019-08-30 13:30:00
155
转载 带权并查集
所谓带权并查集就是,在若干个集合之间需要做到维护一些信息,如相同,或者矛盾。POJ1182题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:“1 X Y”,表示X和Y是同...
2019-08-28 23:54:00
71
转载 组合数相关、多重集组合数
求$A_n^m$的划分数(%MOD)。有递推方程:$dp[i][j]=\sum_{k=0}^{j}dp[i-1][j-k]$,其中$dp[i][j]$为$j$的$i$划分总数。求$C_n^m$的划分数(%MOD),有递推方程:$dp[i][j]=dp[i][j-1]+dp[i-1][j]$。代码如下: 1 int n, m; 2 int dp[MAX_M + 1][M...
2019-08-26 22:35:00
191
转载 LIS最长上升子序列
题意:有一个长为n的数列,求出这个序列中最长的上升子序列长度(不连续,不能等于)。解法1:简单dp(n2)思路:状态设计:F [ i ] 代表以 A [ i ] 结尾的 LIS 的长度状态转移:F [ i ] = max { F [ j ] + 1 ,F [ i ] } (1 <= j < i,A[ j ] < A[ i ])边界处理:F [ i ] ...
2019-08-26 21:58:00
163
转载 背包问题综合
01背包问题:若干个物体,每个价值为c[i]重量为w[i],数量均为1,背包最大容量为W,问怎样取物体才能最大化收益?解法:dp[i][j]以j为容量为放入前i个物品(按i从小到大的顺序)的最大价值。有递推关系式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+c[i])。这里的第一维度可以省略。注意这里的内存重量循环j为W到0,递减关系(保证每个物体...
2019-08-26 21:29:00
131
转载 挑战程序设计竞赛第二章、动态规划部分
POJ2385题意:有两棵树,初始时第一棵树会掉苹果,一头牛初时在第一颗树下,一共有T秒,牛最多走W步,给出树掉果子的序列,求牛该怎么走才能最大化收益题解:递推方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]),其中dp[i][j]表示第i秒还能走j步时能拿到的最大价钱。 1 #pragma GCC optimize(3) 2 #inclu...
2019-08-26 08:32:00
115
转载 Sikerio --《只狼》
“狼啊,替我断绝不死吧”转载于:https://www.cnblogs.com/romaLzhih/p/11406813.html
2019-08-25 03:58:00
855
转载 挑战程序设计竞赛第二章、贪心部分
POJ2376给你若干个线段的开始点和结束点,你需要的是把这些线段覆盖起来,使其能完整地盖住一段区间问题是贪心,首先做的是排除那些无用的线段(起始点相同但是长度较短),然后维护一个临时的上界,注意只有当现在线段的下一个线段不能覆盖住整个区间的时候才增加下一个。 1 #pragma GCC optimize(3) 2 #include <time....
2019-08-24 20:50:00
120
转载 Life is Strange:《奇异人生》
“生活就是一个陌生人”转载于:https://www.cnblogs.com/romaLzhih/p/11289541.html
2019-08-02 16:42:00
165
转载 算法竞赛进阶指南第二章--题解
就这样,我在繁忙的语言考试和期中考试还有科研中抽出时间来写完了这一章,感觉还有好多,但似乎看得到希望。HDOJ 4699 (对顶栈)题意:一个整数序列的编辑器有以下五种操作:1. I x,在当前光标位置之后插入一个整数x,插入之后光标移动到x之后;2. D,删除光标之前的一个整数3. L,光标向左移动一个位置4. R,光标向有移动一个位置5. Q k,...
2018-11-23 17:43:00
805
转载 算法竞赛进阶指南第一章题解
例题:CH0103 最短Hamilton路径题意:给定一张n(<20)个点的带权无向图,点从0~n-1编号,求起点0到终点n-1的最短hanmilton路径;h路径的定义为0~n-1不重不漏的经过每个点恰好一次解法:二进制状态压缩f(i,j)表示点被经过的状态对应的二进制数为i,且目前处于点j时的最短路径。最终目标为f((1<<n)-1,n-1)...
2018-10-27 17:29:00
4835
转载 2018 IEEE极限编程大赛 题解
去年742,今年72,也算一种小小的进步。明年前30(笑1. Drawing Rooted Binary Trees给定一个树的中序和前序的遍历,要求输出这棵树(包括空格的) 1 #include <iostream>// 2 #include <string.h>// 3 #include <stdio.h>// 4 ...
2018-10-22 23:38:00
2085
转载 爬格子呀9.17(图论)
刘汝佳的紫书差不多就告一段落吧,我觉得可以了,怎么说呢,这书也陪着自己走了一年多了吧,也目睹了从一个啥也不会的萌新到一个稍微会一点的萌新的转变。差不多开始下本书吧,自己也大三了,时间真的有点紧啊woctm最喜欢的图论作为自己对这本书的谢幕,也好,也好uva10735(欧拉回路+网络流)题意:给一个图,图中有部分是向边,部分是无向边,要求判断是否存在欧拉回路,若存...
2018-09-17 11:58:00
131
转载 大数模板(加减乘除幂次开方)
很好用的模板,但当时做题的时候从哪里找的不知道了,原作看到知会我一声我补上hhh 1 struct BigInteger 2 { 3 int len; 4 int arg[500]; 5 BigInteger(int x = 0) { 6 IntToBigInteger(x); 7 } 8...
2018-09-16 11:53:00
138
转载 Uva1660 (点联通度、边联通度问题)
题意: 给定一个n(n<=50)的无向图,问最小删去几个点,可以使得这个图不连通解法:1. 基本概念(1)一个具有 N 个顶点的图,在去掉任意 K-1 个顶点后 (1<=K<=N) 所得的子图仍连通,而去掉 K 个顶点后的图不连通则称 G 是连通的, 那么K 称作图 G 的点连通度(2)相应地如果至少去掉 K 条边使这个图不连通,则 K 成为...
2018-09-07 12:39:00
530
转载 9.1总结前日(数学+图论)
后天就要开学了,这应该是这个暑假的最后一次总结了吧。说实话,忙忙碌碌的一个暑假,学到东西了么?学到了。学了多少?还可以吧hhh。想起来去年的这个时候,我还抱着紫书在那里看爆搜,啥也看不懂,现在呢,怎么说也懂得了一些吧。路就是这样,你敢走,就有的走。狭路相逢,勇者胜。UVA 1645题意:给出一个数n,求n个结点的树有多少种结构满足每个结点的子结点数相同。...
2018-09-01 23:15:00
138
转载 UVA1349(带权二分图最大匹配 --> KM算法模板)
UVA1349题意:给定一些有向带权边,求出把这些边构造成一个个环,总权值最小解法:对于带权的二分图的匹配问题可以用通过KM算法求解。要求最大权匹配就是初始化g[i][j]为0,直接跑就可以;要求最小权匹配就是初始化g[i][j]为-INF,加边的时候边权为负,最后输出答案的相反数。因为要求每个点恰好属于一个圈,意味着每个点都有一个唯一的后继。 反过来,只要...
2018-09-01 23:08:00
215
转载 最小费用最大流 模板
1 struct Edge{ 2 int from, to, cap, flow, cost;//出点,入点,容量,当前流量,费用(也就是权值) 3 Edge(int u, int v, int c, int f, int w) :from(u), to(v), cap(c), flow(f), cost(w) {} 4 }; 5 6 stru...
2018-08-31 18:39:00
134
转载 最大流、最小割模板
Dinic 模板 1 struct Edge { 2 int from, to, cap, flow; 3 }; 4 struct Dinic { 5 int n, m, s, t; 6 vector<Edge>edges; 7 vector<int>G[MAXN]; 8 bool vis...
2018-08-31 18:33:00
155
转载 Dijkstra+SPFA 模板
Dijkstra引用自:点击打开链接 1 #include <algorithm> 2 #include <cstdio> 3 #include <cstring> 4 #include <functional> 5 #include <iostream> 6 #include <queue...
2018-08-31 14:55:00
90
转载 8.28总结前日及今日
集训暂时告一段落,我也跑回家里面了,慢慢的继续刷题吧:)Uva10214题意:有一个a*b的地图,每个整数坐标点都种着一棵树,你站在坐标系原点看四个象限,问最多能看到几个点解法:首先,四个象限一个性质,所以只统计第一个象限就行了。 其次,站在原点看,坐标为(x,y)的树能被看到的条件是gcd(x,y)= 1。因为a的范围比较小,所以我们直接枚举a即可。那么,...
2018-08-28 11:05:00
117
转载 Uva1213(线性筛模板+dp)
题意:把n拆成k个不同素数的和,有多少种拆法。解法:打表后dp即可,这个dp的问题可以归纳为:在n个数中选k个数,使得和m的方案数 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 bool vi...
2018-08-28 11:00:00
86
转载 Uva1363(余数性质/减少枚举量)
题意:输入正整数n和k(范围均为1e9),求∑(k mod i),i从1~n解法:首先这道题直接暴力亲测会超时。之后我们写几组数据之后可以发现当k/i的商相同的时候他们的余数成一个等差数列,而且数列首相是q,公差是p,项的个数是余数/商。具体写法网上面有分情况讨论的,但是较为繁琐,这里LRJ的板子感觉写法就很精炼。我们从左到右依次枚举每一项i(核心思想是减少i的枚...
2018-08-21 23:42:00
173
转载 8.21总结前日及今日
估计拿不到打区域赛的名额了,还是有点忧伤,哎8.21场链接A题:题意:给出一个0~n-1的单词表,问要组成一个长度为m,且单词权值之和为k的单词,的方案总数有多少种解法:其实就是问把k个球放到m个桶中(同中球数可以为空),且每个桶中的球数不超过n-1个,的方案总数。(仔细想一下,很有意思)怎么容斥? 总情况数 — 桶中球数超过n个的情况数...
2018-08-21 23:42:00
154
转载 Uva1640(统计数字出现的次数)
题意:统计两个整数a,b之间各个数字(0~9)出现的次数,如1024和1032,他们之间的数字有102410251026102710281029103010311032总共有10个0,10个1,3个3等等。解法:这类问题的一般步骤都是先用f(n,d)计算出0~n中d数字出现的次数,那么答案就是f(b,d)-f(a-1,d)下面程序中的注释为(1,2974...
2018-08-21 23:36:00
218
转载 Uva1639(概率期望/对数处理避免丢失精度)
Uva1639题意:有两个盒子各有n个糖果(n<=200000),每天随机选择一个:选第一个盒子的概率是p(0 ≤ p ≤ 1),第二个盒子的概率为1-p,然后吃掉其中的一颗。直到有一天,随机选择一个盒子打开一看,没糖了!现在请你计算另一个盒子里剩下的糖果数量的期望值。解法:我们假设到第n天的时候取得是第1个盒子的糖,此时第2个盒子有i颗糖,则在此之前打开了n+(n...
2018-08-21 23:32:00
167
转载 Uva12034 (组合数取模)
题意:两匹马比赛有三种比赛结果,n匹马比赛的所有可能结果总数解法:设答案是f[n],则假设第一名有i个人,有C(n,i)种可能,接下来还有f(n-i)种可能性,因此答案为 ΣC(n,i)f(n-i)另外这里给出两个求组合数的模板,卢卡斯定理的p是模数,并且要求是素数,第二个是递推式,适合于n<2000的情况 1 #include<cstdio> ...
2018-08-21 23:27:00
165
转载 Uva10820 欧拉公式模板(求小于n且与n互素的数的个数)
题意:给出n,算出小于等于n的所有数中,有几对互质;解法:本质就是求有多少个2元组(x,y)满足:1 <= x,y <= n,且x与y互素。除了(1,1)之外,其他所有的x和y都不相同,我们设x<y的二元组有f(n)个,答案就是2f(n)+1 f(n)=phi(2)+phi(3)+...+phi(n); 1 #include<cstdio&...
2018-08-19 01:00:00
319
转载 Uva1635 二项式递推+质因子分解+整数因子分解
题意:给定n个数a1,a2····an,依次求出相邻两个数值和,将得到一个新数列,重复上述操作,最后结果将变为一个数,问这个数除以m的余数与那些数无关?例如n=3,m=2时,第一次得到a1+a2,a2+a3,再求和得到a1+2*a2+a3,它除以2的余数和a2无关。1=<n<=10^5, 2=<m<=10^9解法:将所有的加法过程列出来可以得到,n...
2018-08-19 00:58:00
163
转载 8.19总结今日
今天打到一半网站崩了,所以没能继续打,话说开火车好烦hhh开火车D题题意:有一个n*m的矩阵,上面一共有k*k个蛋糕,让你横向纵向都切k-1刀,问能不能存在一种切法使得切完的所有区域都正好只剩一个蛋糕,如果有,输出切的位置解法:由于横竖切互不影响,所以我们分开考虑这两部分,先算出每一行(列)有的蛋糕总数,然后每k个切一次,看看能不能 1 #inclu...
2018-08-19 00:55:00
139
转载 Uva12716 素数筛思想的应用
Uva12716题意:输入整数n,1<= n <=3e7,问有多少个整数对(a,b)满足:1 <= b <= a <= n,且gcd(a,b)== a XOR b解法:a^b = c 等价于a^c = b 所以枚举a和c,而a和c全部枚举肯定TLE,所以高效算法:通过c是a的约数这个关系来枚举会减小循环,必须要将c放在循环外面,因为c的情况...
2018-08-17 03:02:00
143
转载 Uva10791 唯一分解定理模板
唯一分解定理:Uva10791题意:输入整数n,要求至少两个正整数,使得他们的最小公倍数为n,且这些整数的和最小解法:首先假设我们知道了一系列数字a1,a2,a3……an,他们的LCM是n,那么什么时候他们是最优解呢,当他们两两互质的时候为了方便我们以两个数来说明问题。a和b的LCM是n,GCD是m,那么n=a/m*b , 它们的和就是su...
2018-08-17 03:00:00
149
转载 Uva12169 扩展欧几里得模板
Uva12169(扩展欧几里得)题意:已知 $x_i=(a*x_{i-1}+b) mod 10001$,且告诉你 $x_1,x_3.........x_{2t-1}$, 让你求出其偶数列解法:令$ x_2=(ax_1+b)mod 10001$,$x_3= (ax_2+b)mod 10001$解得:$x_3+10001k=a^{2}x_1+( a + 1) b$移像...
2018-08-17 02:58:00
110
转载 8.13总结当日
今天我们队排名第四,然后总排排第6,勉强站住了区域赛的位置,还有12天,要继续加油啊8.13场地址B题:(Tarjan||暴力)题意:有一幅图,然后问你这幅图里面有多少个子图满足图的两个部分是完全对称的,而且这两个图要是完全图解法:由于最大为1e5,所以可以考虑直接暴力枚举每条边,之后从这两条边dfs下去,看它左右两边的子图是否对称 1 #incl...
2018-08-13 22:55:00
109
转载 8.12总结前日和今日
今天是组队赛的第三天,第一次打div2的比赛,表示真的有点难,还是有很长的路要走啊8.11场链接D题:(最小生成树)题意:n个点,每个点有一个权值,每两条边的权值为边的两个点的权值的gcd,求这幅图的最大生成树解法:首先处理出每个点权值的所有公因数,以所有的公因数为点,建一条点编号与其公因数的边,之后从大到小枚举每条边,跑一遍最大生成树即可 1...
2018-08-12 21:50:00
119
转载 二分图最大匹配模板
1 int g[MAXN][MAXN], match[MAXN], vis[MAXN]; 2 bool dfs(int u) { 3 for (int i = 0; i < MAXN; i++) { 4 if (g[u][i] && !vis[i]) { 5 vis[i] = 1; 6 ...
2018-07-31 00:49:00
112
转载 7.30总结当日
集训队的招募马上就要截止了,还是有点不太稳,但要加油7.30场地址 B题: 题意:给出一个多边形的各个定点,要求所有这些顶点能构成的三角形面积的最小值为多少?解法:首先三个相邻的点所构成的三角形的面积最小,之后三角型面积的计算方法也是重点 1 #include<cstdio> 2 #include<algorithm> 3 ...
2018-07-30 18:12:00
123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人