
数据结构与算法
数据结构与算法
逆袭的小学生
Java后端开发
展开
-
最大权闭合子图(模板)
参考博客: http://www.cnblogs.com/kane0526/archive/2013/04/05/3001557.htmlhttp://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.htmlhttp://blog.youkuaiyun.com/sdj222555/article/details/7797534http://www.cnblo原创 2016-08-21 17:27:55 · 4988 阅读 · 0 评论 -
ACM计算几何模板(模板)
1.判断空间三点共线点的储存方式:判断空间三点共线 假设三点为p[i] p[j] p[k]方法1(推荐):原理:共线两向量成比例 即 x2/x1=y2/y1=z2/z1方法2:利用点积求cos角方法3:利用中间点到外边两点距离和等于外边两点距离和2.判断四点能否组成四面体点的储存方式:只要判断组成的四面体体积是否为0即可。四面体体积为为四点组成的三个向量的混合积除以6。设四点分别为 p[i]原创 2016-08-15 21:39:42 · 2162 阅读 · 0 评论 -
线段树模板(模板)
参考博客 http://blog.youkuaiyun.com/metalseed/article/details/8039326持续更新。。。区间存储在数组中的下标对应为 1 2 3原创 2016-07-26 11:11:33 · 330 阅读 · 0 评论 -
CSU oj 1681 Adjoin(dfs求树上最长路径)(搜索)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1681题目大意:给你一共有n个结点但是不连通的无向图,你需要用最少的线将其变成连通图,并使连通图中两个的点最长距离最小(一个点可以连接多条线)。解题思路:最后肯定是将每个图的最长线段的中点连接起来。所以我们要找最长距离,就是找到两个线段最长的图,输出它们线段长度除2相加再加1的结果,特别注意原创 2016-05-01 20:29:30 · 1097 阅读 · 0 评论 -
CSU oj 1726 你经历过绝望吗?两次!(bfs+优先队列求最短路)(搜索)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1726题目大意:给你一个矩阵,有路障栅栏和通路,通路可以直接走,路障不能走,栅栏可以走但需要拆除,问你最少拆除多少个栅栏能走到矩阵的最外围(即第一行最后一行或第一列或最后一列)。解题思路:通常用bfs先走到的花费一定是最短的,但是这个不是,我们可以用优先队列来维护花费,这样就能保证先走到的花原创 2016-05-01 11:23:46 · 563 阅读 · 0 评论 -
HDU 5756 ztr loves lucky numbers (dfs)(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5676题目大意:只有7和4且7和4数量相等的数字为幸运数字,给你数字n,你要找出大于等于n的最小的幸运数字解题思路: 计算可得幸运数字最多有C21+C42+C63+……+C189<2^18,所以可以通过dfs打表列出所有的幸运数字,因为n最多有19位,所以要进行特判,如果大于77777777444444原创 2016-05-01 11:14:18 · 738 阅读 · 0 评论 -
HDU 5433 Xiao Ming climbing(bfs+记忆化搜索)(搜索)
Xiao Ming climbing问题描述 小明因为受到大魔王的诅咒,被困到了一座荒无人烟的山上并无法脱离.这座山很奇怪: 这座山的底面是矩形的,而且矩形的每一小块都有一个特定的坐标(x,y)(x,y)和一个高度HH. 为了逃离这座山,小明必须找到大魔王,并消灭它以消除诅咒. 小明一开始有一个斗志值kk,如果斗志为0则无法与大魔王战斗,也就意味着失败. 小明每一步都能从他现在的位置走到他原创 2015-09-14 20:44:47 · 573 阅读 · 0 评论 -
hdu 5311 Hidden String dfs(搜索)
Hidden String Accepts: 437 Submissions: 2174 问题描述 今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为nn的字符串ss. 他想要知道能否找到ss的三个互不相交的子串依次连接之后得到字符串”anniversary”. 输入描述 输入有多组数据. 第一行有一个整数TT (1 \le T \le 100)(1≤T≤100),原创 2015-09-04 22:27:15 · 532 阅读 · 0 评论 -
hdu 5423 Rikka with Tree DFS 或最短路(搜索)
Rikka with Tree Accepts: 207 Submissions: 815 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的:对于一棵树TT,令F(T,i)F(原创 2015-09-04 11:36:08 · 499 阅读 · 0 评论 -
USC oj 1404: Search(搜索)
USC oj 1404: SearchDescriptionWhen we search for something on internet, we always use two wildcard characters “” and “?”. ”” represents 0 or more lowercase letters,”?” represents 1 lowercase letter。W原创 2015-06-20 17:16:06 · 722 阅读 · 0 评论 -
HDU 5784 How Many Triangles(计算几何)
计算几何小知识:http://blog.youkuaiyun.com/q610376681/article/details/52215024 (包括了这里用到的计算几何知识)题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5784题目大意:给你n个不重合的点,问你能组成多少个锐角三角形解题思路:计算出所有点能组成的锐角个数A,直角和钝角个数B,答案为(A-2B)原创 2016-08-15 22:04:01 · 499 阅读 · 0 评论 -
HDU 5839 Special Tetrahedron(计算几何)
计算几何小知识:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5839题目大意:给你n个不重合的点,判断能组成多少个相等于边数大于等于四的四面体,其中如果相等边数为4的话,其不相等的边必须为对边。解题思路:是用暴力写的,复杂度是O(n^4),但是其中加了一些优化,过几天更新更快的思路。思路比较直接,就是枚举4四个点,判断四个点组成的四边形是否合法。直接原创 2016-08-15 21:25:58 · 527 阅读 · 0 评论 -
HDU 5738 Eureka(计算几何)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738题目大意:给你许多点,这些点能组成许多条直线,一条直线上可能的点 的组合为x,问所有直线的x加起来是多少。解题思路:先对所有点按x进行从左到右的排序,对每一个点进行极角排序,再扫描其右部分的的所有点,注意重点情况的组合数的计算。详情见代码。AC代码:#include <iostream>#inc原创 2016-07-24 19:50:49 · 381 阅读 · 0 评论 -
POJ 2187 Beauty Contest(计算几何)
题目链接:http://poj.org/problem?id=2187题意:平面上有N个牧场,i号牧场的位置在格点(x,y),所有牧场的位置互不相同。请计算距离最远的两个牧场的距离,输出最远距离的平方题解:裸凸包 先按x,y坐标升序排序 排序后的第一个和最后一个肯定是凸包上的点 它们之间可以分成上下两条链求解 在构造过程中加上新的点之后可能会破坏凸性,此时只要将凹的部分从末尾去除就好了代码原创 2016-04-15 20:49:05 · 361 阅读 · 0 评论 -
poj 1127 Jack Straws(计算几何)
题意:给出n跟木棍首尾两点坐标,判断任意两个跟木棍是否相连,间接连在一起的也是相连的。解题思路: 主要是难在如何判断两根木棍是否有交点求两直线交点: 假设有线段L1 p1 p2, L2 q1 q2 p q为端点先变为直线求其交点(q2-q1)(p1+t(p2-p1)-q1)=0交点为:p1+((q2-q1)(q1-p1))/((q2-q1)(p2-p1))*(p2-p1)判断交点点r是否在线原创 2016-04-08 11:14:44 · 419 阅读 · 0 评论 -
HDU 5919 Sequence II (主席树)
强烈推荐推荐不懂主席树的看一下这篇文章: http://www.cnblogs.com/zyf0163/p/4749042.html题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5919题目大意:给你一个区间,假设这个区间中有k个数,每个数的位置升序排列为 p1 p2 p3 ->pk,问p[k/2]是多少解题思路: (解题思路如果看不懂可以先看原创 2016-10-10 15:14:56 · 443 阅读 · 0 评论 -
HDU 5869 Different GCD Subarray Query (树状数组)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5869题目大意:找出一个区间内子区间一共有多少种不同的GCD解题思路: 预处理出0到r区间内共有多少种不同的GCD(0<=r#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>#include <cm原创 2016-10-04 21:02:06 · 456 阅读 · 0 评论 -
HDU 5875 Function(简单线段树)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5875题目大意:(补题解中先把思路码上)解题思路: 因为余数逐渐递减,所以我们就要快速找到一段数小于等于x的第一个数,线段树结点维护区间最小值,当我们查询的时候,优先查左子树,当找到我们要的数的在某个区间时,在深入此区间进行查找,依旧优先查找左子树,找到直接返回即可。AC代码:#include <i原创 2016-10-04 20:14:19 · 419 阅读 · 0 评论 -
HDU 5493 Queue (线段树逐个插入)
参考博客: http://blog.youkuaiyun.com/hyczms/article/details/48767933题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5493题目大意:有n个人排队,每个人都有一个身高,每个人记得他前面或者后面可能有x个人比他高(满足一个就行),问能否有一个序列满足给出的条件,如果有,请让字典序最小,解题思原创 2016-08-22 20:53:06 · 812 阅读 · 0 评论 -
HDU 5465 Clarke and puzzle (二维树状数组维护区间异或)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5465解题思路: 因为要对大量的区间进行异或,所以考虑用二维树状数组就行维护。#include<iostream>#include<cstdio>#include<cmath>#include<queue>#include<algorithm>#include<stack>#include<原创 2015-09-27 22:02:22 · 715 阅读 · 0 评论 -
HDU 5480 Conturbatio(二维树状数组维护区间和)
问题描述 在一个n \times mn×m的国际象棋棋盘上有很多车(Rook),其中车可以攻击他所属的一行或一列,包括它自己所在的位置。 现在还有很多询问,每次询问给定一个棋盘内部的矩形,问矩形内部的所有格子是否都被车攻击到? 输入描述 输入文件包含多组数据,第一行为数据组数TT。 每组数据有4个正整数n , m , K , Qn,m,K,Q。 KK为车的数量,QQ为询问的个数。 接下原创 2015-09-26 22:33:40 · 771 阅读 · 0 评论 -
USC oj 1611 XX‘s dream(网络流)
最大权闭合子图介绍:题目链接: http://61.187.179.71:9988/problem.php?id=1611题目大意:XX有很多梦想,完成梦想能获得价值X,但是一个梦想需要许多种努力,每种努力可能需要消耗价值也可能得到价值,问在获得最大价值的条件下,最多可完成多少种梦想解题思路:最大权闭合子图模板题,梦想和源点连边,可得到价值的努力也和源点连边,会消耗价值的努力和汇点连边,跑一遍网络原创 2016-08-21 16:50:17 · 479 阅读 · 0 评论 -
HDU 5755 Gambler Bo(数论)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5755题目大意: 给你一个矩阵,矩阵中是0,1,2三个数,你每次可以给其中一个数加2,但是这个数的周围四个数(就是上下左右四个)要加1,如果有数大于等于3后就要对3取余,问你对哪几个数进行操作可以使矩阵全部变成0.。解题思路: 高斯消元解同余方程组,每个格子是一个变量,每个格子一个方程原创 2016-08-22 20:21:40 · 443 阅读 · 0 评论 -
HDU 5768 Lucky7(数论)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5768题目大意:求出一个区间内模7余0,但是模一些给定的互素的数不等于其给定的值的数的个数。如求1-100中模7余0,但是不能模3余2,模5余3的数的个数。解题思路:首先可以知道通过中国剩余定理能求出一个区间内模3余2,模5余3,等式的所有解,这道题就是在模7余0的基础上求那些式子的并集,原创 2016-08-22 20:02:29 · 373 阅读 · 0 评论 -
HDU 5787 K-wolf Number(数论)
题外话:前几天刚做了51nod上一道题,感觉和这个题套路有点像,给个链接https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1607,有兴趣的可以去看看。顺便表示第一次自己想出的算法能跑这么快,小激动下面正题:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5787题目大意:给你一原创 2016-08-05 21:07:53 · 1000 阅读 · 2 评论 -
HDU 5794 A Simple Chess(数论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794题目大意:给你一个起点(1,1),每次只能马字形行走,问到达最终的终点有多少种走法,中途会有一些障碍不能行走。解题思路: 很容易得出的结论:最终的答案就是不经过障碍能达到终点的所有方法,可以用起点到终点的总路径数减去会经过障碍的路径数。那么如何求出起点到终点会经过障碍的方法数,考虑将给的障碍物按x原创 2016-08-05 17:48:29 · 510 阅读 · 0 评论 -
HDU 5750 Dertouzos(数论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5750题目大意:x能整除n,x就是n的positive proper divisor,但n本身不算,给你两个数n和d,找出所有小于n的数中,最大positive proper divisor是d个数,T组测试数据。解题思路:很明显对于每个数x,找出其最小素数m,如果x/m等于d,那么x的最大positiv原创 2016-07-24 17:45:57 · 341 阅读 · 0 评论 -
HDU 5701 中位数计数(数论)
题目链接:http://acm.hdu.edu.cn/viewcode.php?rid=17615323位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。题目大意:给你1-n一共n个数,让你枚举所有区间,找出每个区间的中位数,最后输出每个数一共当了多少次中位数解题思原创 2016-07-19 10:44:11 · 652 阅读 · 0 评论 -
CF 668C Little Artem and Random Variable(数论)
题目链接:http://codeforces.com/problemset/problem/641/D题目大意:一共有两个骰子,每个骰子都有n个面,上面分别是1到n,投到每个面的概率不可知,但是知道投到每个面也就是每个值的最大的概率与最小的概率分别是多少,问两个骰子投到每个面的概率分别是多少解题思路:数学题字超级丑请忽略其中ax是a骰子得到x的概率,bx是b骰子得到x的概率 它们相加等于得到最大x原创 2016-05-08 19:40:19 · 830 阅读 · 0 评论 -
hdu 5428 The Factor(数论)
hdu 5428 The Factor有一个数列,FancyCoder沉迷于研究这个数列的乘积相关问题,但是它们的乘积往往非常大。幸运的是,FancyCoder只需要找到这个巨大乘积的最小的满足如下规则的因子:这个因子包含大于两个因子(包括The FactorThere is a sequence of n positive integers. Fancycoder is addicted to learn原创 2015-09-06 16:26:25 · 691 阅读 · 0 评论 -
LightOJ 1370-Bi-shoe and Phi-shoe(欧拉函数)(数论)
A - Bi-shoe and Phi-shoe Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %lluDescription Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a ver原创 2015-09-06 10:42:14 · 683 阅读 · 0 评论 -
HDU 5514 Frogs(巧妙地容斥)(数论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514题目大意:有n个青蛙和m个石头编号为1-m-1,青蛙每次跳Ni步,问每次跳完后覆盖的石头的编号的和是多少解题思路:XJB推导一下能知道对于每个Ni,覆盖石头的编号为每个gcd(Ni,m)的倍数,但是如果有2,3,6,12的倍数,那么该如容斥掉呢,首先找出m的所有因子,每一个因子会对应一个贡献,将会被原创 2016-09-30 15:44:05 · 531 阅读 · 0 评论 -
HDU 5584 LCM Walk (数学推导)(数论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5584题目大意:给你一个点(x,y),你每次可以向前走z,z为x和y的最小公倍数,即走到(x+z,y)或者(x,y+z),现在给你一个点(x,y)问你可能的出发点有几个(包括自己)解题思路: 因为z=lcm(x,y) 所以z>=x &&z>=y 所以假设在点(x,y)时,大的点一定是上一步加上z的点原创 2016-09-30 15:30:57 · 593 阅读 · 0 评论 -
poj 1061 青蛙的约会 数论扩展GCD(数论)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 98385 Accepted: 18668 Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事原创 2015-09-03 20:53:46 · 694 阅读 · 0 评论 -
HDU 5495 LCS(数论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5495 参考博客: http://blog.youkuaiyun.com/queuelovestack/article/details/48882935 (写的也非常详细)解题思路:这两个序列会构成许多环,并且环之间相互不干扰,结果为长度大于1的环长度减1,长度为1的环直接相加即可。 来解释一下这个环: 先原创 2015-10-04 17:34:39 · 451 阅读 · 0 评论 -
acm hdu 1232 畅通工程 (并查集)
畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 38585 Accepted Submission(s): 20479Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路原创 2015-09-03 16:23:18 · 597 阅读 · 0 评论 -
杭电5652 India and China Origins(并查集求是否连通)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652题目大意:给你一个用n*m个小方块组成的长方形矩阵,其中有一些小方块不能经过,左下角坐标为(0,0),给你Q组坐标,每组坐标会把可以经过的小方块变成不能经过的小方块,问从第几组坐标开始矩阵的上部就不能到达矩阵的下部,如果都能到达输出-1。解题思路:(第一次知道这种题还能用并查集做),我们可以倒着想,原创 2016-04-03 18:02:17 · 396 阅读 · 0 评论