摘要:
普通Dijkstra: 1 void DijkstraPath(int v0,int vis[],int dist[],int path[]) 2 { 3 int onePath[maxn]; 4 int d; 5 int k; 6 for(int i = 0;i < n;i++) 7 { 8 if 阅读全文
摘要:
转自:https://blog.csdn.net/hz18790581821/article/details/70233495 我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所 阅读全文
摘要:
题意:给你n个规定长度的单词,问你其中出现了1次的单词,出现两次的单词...出现n次单词分别有多少个。 当然这题map也能过,但是这里介绍字典树的做法。 首相对于n个单词存入树中,当然建树过程中遇到一样的单词就把那个单词最后一个结点的计数++就行。否则为这个单词是第一次建立,计数为1。 count[ 阅读全文
摘要:
思路:就是用一个字典树翻译单词的问题,我们用题目中给出的看不懂的那些单词建树,这样到每个单词的叶子结点中存放原来对应的单词就好。 这样查询到某个单词时输出叶子结点存的就行,查不到就"en"呗。这题用hash也是可以的 阅读全文
摘要:
最近写了一些关于字典树的题目,这里做个简单的整理。 字典树,又叫单词查找树,顾名思义就是查单词的(不仅仅o),和词典一样。不同的是词典是用纸做的,而字典树是用树形结构构建的。 她用来快速检索你要的内容,对于统计和大量字符串的排序是很好用的。她的好处就是让你尽可能的减少那么过分多且没必要的比较,提供高 阅读全文
摘要:
树上倍增是求解关于LCA问题的两个在线算法中的一个,在线算法即不需要开始全部读入查询,你给他什么查询,他都能返回它们的LCA。 树上倍增用到一个关键的数组F[i][j],这个表示第i个结点的向上2^j层的结点。在RMQ-ST中用救是这样的数组。 在树上倍增中也是关键点。 如在上图中,我们要找结点8和 阅读全文
摘要:
给定一个数组,求出给定区间[l,r]中元素的最大值或最小值或者最值的索引。 一看到这个题目,简单,看我暴力出奇迹。暴力当然是可行的。但是时间复杂度很高(O(n^2))。线段树,树状数组也可以解决这个问题,复杂度(O(nlogn))的预处理,最终查询为O(次数*logn)。 而今天用ST(Sparse 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1988 题意:有n个元素,开始每个元素各自在一个栈中,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。 第二种操作是询问含有x元素下面有多少个元素。 思路: 并查集,把每一堆看作一个栈,堆的下方看作栈顶。因为当我们知道栈 阅读全文
摘要:
题目链接:http://poj.org/problem?id=2524 学校有n个学生,但是你不能直接问学生的信仰,不然他会感到很不舒服的.一个方法是问m对同学,是否信仰同一宗教。根据这些数据, 计算学校最多有多少种宗教信仰的。 计算学校最多有多少种宗教信仰的。 思路:使用并查集,一开始假设大家都各 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1703 塔都市的警察局决定以混乱为目标,作为启动行动,扎根城市中的两个帮派,Gang Dragon和Gang Snake。 但是,警方首先需要确定犯罪分子属于哪个团伙。目前的问题是,两名罪犯; 他们属于同一个氏族吗? 您必须根据不完整的 阅读全文
摘要:
在现实生活中,我们知道给出一些亲戚关系的信息,如A和B是亲戚,B和C也是亲戚,那么我们可以得出A和C也是亲戚。这是so easy 的的。我们看看下面的例子: 输入部分:给定N个人,M对数字,这些数字对表示某两个人是亲戚。接下来给定一个Q,表示Q对提问,求这些提问对中二者是否为亲戚 10 7 //N= 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1083 如图所示在一条走廊的两侧各有200个房间,现在给定一些成对的房间相互交换桌子,但是走廊每次只能通过一组搬运, 也就是说如果两个搬运过程有交叉是不能同时搬运的,要依次来,一次搬运10min,问完成所有的搬运的最少用时。 思路:将每 阅读全文
摘要:
题目链接 :http://poj.org/problem?id=2729 题目很长,有不少也是废话。类似小时候玩的坦克大战。每个坦克速度为10,炮弹速度为20.子弹出界就消失,坦克出不了界限。相向的子弹碰撞不会消失(区别与小时候的游戏,炮弹可以抵消)。 坦克可以90转向...不少条件题目中仔细读可以 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1484 这题直接简单模拟即可。给你n个容器,m个操作,最大容量C。模拟每一个对器件的开关操作。如果原来是关闭的,则打开,同时最大功耗加上这个器件的功耗。如果原来是打开的,就关了它,同时目前的功耗值减去这个器件所消耗的。这个最大功耗时时更 阅读全文
摘要:
乘方快速幂,是为了解决a^b次方普通计算方法太慢的问题。 计算a的b次方,普通的for循环求法如下(O(n)): 1 int a(int x,int n) 2 { 3 int t=1; 4 for(int i=1;i<=n;i++) 5 { 6 t=t*x; 7 } 8 return t; 9 } 阅读全文
摘要:
今有物,不知其数,三三数之,剩二;五五数之,剩三;七七数之,剩二。问物几何 ——《孙子算经》 答为“23”。也就是求同余式组 x≡2 (mod3),x≡3 (mod5 ),x≡2 (mod7)的正整数解。 不难看出,题中3,5,7分别是互质的。具体解法是这样的 1、找出三个数:从3和5的公倍数中找出 阅读全文
摘要:
提到扩展欧几里德算法,先简要介绍下欧几里德算法,又称辗转相除法,用于计算两个整数a和b的最大公约数(Greatest Common Divisor(GCD))。 为证明gcd(a,b)=gcd(b,a mod b),只需证明 (1)gcd(a,b) | gcd(b,a mod b) 设d=gcd(a 阅读全文
摘要:
一、向列表添加元素 x.append(y) #末尾添加一个元素 x.extend([y,z]) #末尾添加多个元素 x.insert(index,y) 二、向列表获取元素 x[index] 三、从列表删除元素 x.remove("y") del x(index) # 删除整个列表 del x x.p 阅读全文
摘要:
木棍 时间限制: 1000MS 内存限制: 10000K 提交总数: 27336 接受: 11857 描述 有一堆木棍。每根杆的长度和重量是预先已知的。这些木棍将由木工机器逐一加工。它需要一些时间,称为设置时间,以便机器准备处理棒。设置时间与清洁操作以及更换机器中的工具和形状相关联。木工机械的安装时 阅读全文
摘要:
/*问题描述:有n门课(编号为0~n-1),每门课都有考试。为了拿到奖学金,必须满足所有课程平均成绩至少为avg。每门课由平时成绩和考试成绩相加得到,满足为r。现知道每门课平均成绩ai(0<=i<=n-1),若想让这门课多考一分,需要花bi的时间复习。同时,也可能出现复习再多也不会超过满分的分数。为 阅读全文