- 博客(15)
- 收藏
- 关注
原创 ## 计算几何入门
计算几何入门一、二、例题地板上有许多秘密的开口,上面覆盖着一块沉重的石头。当石头被抬起来时,一种特殊的机制会检测到这一点,并激活在开口附近射出的有毒箭头。唯一的可能性是非常缓慢和小心地抬起石头。ACM 团队必须将绳索连接到石头上,然后用滑轮将其提起。此外,石头必须同时全部抬起:没有一方可以先于另一方上升。因此,找到重心并将绳索完全连接到该点非常重要。石头有一个多边形,其高度在整个多边形区域是相同的。您的任务是找到给定多边形的重心。Input输入由 T 测试案例组成。输入文件的第一行会给出它们
2021-02-21 20:40:55
301
原创 ## 博弈论入门
博弈论入门一、博弈论博弈就是指游戏中的一种选择策略的研究,人们遵循一定规则的活动, 进行活动的人的目的是让自己“赢”。 要想赢得比赛 ,不但要考虑自己的策略, 还要考虑其他人的选择。 我们可以用搜索算法,按照题目条件筛选,列举出所有可能的情况,寻找胜利的策略;或是找寻规律后,简化算法,直接得到答案。二、巴什博奕(Bash Game)只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。巴什博弈是一个简单的经典博弈,当n=m+1时,无论先取者拿走多少个,后取者
2021-02-20 20:29:52
423
1
原创 ## 背包
背包一、问题有n件物品,它们有各自的价值和体积,要求用一定体积的背包,装下价值总和最大的物品。一般用动态规划解决,通过填写表把所有已经解决的子问题答案纪录下来,在新问题里需要用到的子问题可以直接提取。定义数组dp[1005],value[1005],volume[1005],面对当前商品有两种可能性:包的容量比该商品体积小,装不下,此时的价值与前j-1个的价值是一样的,即dp[j]=dp[j-1];还有足够的容量可以装该商品,但装了也不一定达到当前最优价值,所以在装与不装之间选择最优的一个,即
2021-02-04 10:27:38
207
原创 ## 最小生成树
最小生成树一、最小生成树任意两点都有路径相通的无向图(有向图)叫做连通图(强连通图),若连通图中每一条边都有意义,则边对应的数称为这条边的权,每个权是连接对应两个顶点的代价,此时的连通图叫做连通网。一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点,但只有足以构成一棵树的n-1条边。一颗有n个顶点的生成树有且仅有n-1条边,如果生成树中再添加一条边,则必定成环。其中代价和最小的生成树叫做最小生成树。生成的过程类似于并查集。二、算法Kruskal算法(加边法)初始最小生成树边数为0,每迭代
2021-01-31 20:25:00
408
原创 ## 最短路径
最短路径一、最短路径单源最短路(求一个点到其他所有点的最小距离)通常用Dijkstra算法解决,前提是不存在负环。O(n^2)常规步骤:初始化距离 dis[1] = 0,dis[i] = + ∞ (dis数组表示起点到i点的距离)for循环 1~n循环n次 ,找到不在s中的距离起点最近的点,赋给t,s是当前到起点距离最短的点,把t加到s中去,如果七点到其他点的距离大于到t点的距离,用t更新,每次循环确定一个点到起点的距离,n次就能找完所有点。多源汇最短路(求任意两点间的最短距离)通常用Floy
2021-01-30 20:30:22
186
原创 ## 动态规划入门
动态规划入门##打卡第 7 天一、动态规划(Dynamic Programming)分解问题为一个个小问题,逐个解决后,再从这些解中得到原问题的解。这些子问题会相互影响,每个子问题是在上个问题的基础上进一步求解。与贪心算法有交集,但适用范围更广,不一定是找最优解,符合题目要求的即可。会用到递归、队列等等,问题化大为小的思想也比较基础,题目类型较多,具体题意具体分析。二、例题Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得
2021-01-27 19:59:08
109
原创 ## 贪心
贪心##打卡第 2*3 天一、贪心算法的理解(个人观点仅供参考)在当前的情况中选择一个最优解,这个最优解不一定是整体的最优解,也有可能是个近似的最优解(看题目类型)。我们做出的决策只是当前看来是最好的,至于之后是否有更好的决策不得而知,但是只要保证每一都步是最优解,就能得到题目整体的最优解,有时可能是个近似最优解。二、例题Due to the development of online shopping, the logistics industry which is highly connect
2021-01-26 17:13:42
152
原创 ## 线段树
线段树##打开第 5 天一、线段树类似于二叉树,将一个区间看作节点,进行区间之间的运算,符合区间结合律的运算都合法,比如(加法、乘法、异或、求最值、最大公因数……),不满足求众数、取余等运算。利用线段树,查询时耗时更少,能够减小时间复杂度( O(N) —> O(logN) )。二、函数pushup();//已知各个叶子节点的值或属性,自下而上将其他节点的值或属性求出来build();//建立树形,已知根节点下标i,第i个节点的左右儿子节点分别是i*2,i*2+1modify();//修
2021-01-25 20:46:59
134
原创 ## BFS & DFS
BFS & DFS##打卡第 2^2 天一、区别DFS实际上就是实现类似于一个栈的操作,会用到递归,将节点按照深度优先的次序压栈,后面再以相反的次序出栈进行新的检测。通俗讲就是一直走到底,若无路可走就返回到最近的那个分岔口,而且这个分岔口还有没探索过的分岔路。多深都往里走,不管数据层数,路不通返回就是了。BFS实际上就是实现一个队列的操作,会用到queue,将本节点处理完毕之后,再将周围相邻的节点入列,即现处理同一层的数据(走一步就能取到的数据),一层一层走遍所有数据。二、BFS用一个队
2021-01-23 18:39:14
120
原创 ##二分
二分##打卡第 3 天一、二分查找对一组有序数列的快速查找,每一次查找都能排除掉一半的数据,对大数据的查找效果更显著。算法具体为记录数列的首尾,记为left、right(low、high)。计算中间量mid=(left+right)/2;(具体视情况而定),比较查找的值与mid,更新首尾left、right,若查找值>mid,更新right=mid-1。二、例题:D - Pie POJ - 3122My birthday is coming up and traditionally I’m
2021-01-22 21:31:27
141
转载 ##并查集##
并查集#打卡第 2^2-2 天一、并查集并查集是一种树形结构,又叫“不相交集合”,保持了一组不相交的动态集合,每个集合通过一个代表来识别,代表即集合中的某个成员,通常选择根做这个代表。某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N
2021-01-21 19:49:31
111
原创 ## ACM课堂笔记
ACM课堂笔记#打卡第 1^n 天一、竞赛常用语言C++(效率高、code速度快)万能头文件:#include<bits/stdc++.h>(绝大多数比赛禁用)少数使用Java,存放大数据时可用Python(兼容度不高)二、时间复杂度:用函数T(n)表示当问题规模(需要处理的数据量)为n时,算法中的基本操作需要执行的次数;引入其同量级函数f(n)(即n趋于无穷时,有T(n) / f(n) = C,其中C为任意非零常数),记作T(n) = O(f(n)); O(f(n))即称
2021-01-20 20:43:55
340
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人