常见算法
Xiu Yan
北漂程序员一枚,目前就职华为。
展开
-
团体程序设计天梯赛-练习集 L2-016 愿天下有情人都是失散多年的兄妹 (25分) dfs深搜
L2-016 愿天下有情人都是失散多年的兄妹 (25分)呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤104 ),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为原创 2020-10-16 08:36:58 · 431 阅读 · 0 评论 -
团体程序设计天梯赛-练习集 L2-031 深入虎穴 (25分) dfs深搜+bfs广搜的两种思路
L2-031 深入虎穴 (25分)著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最原创 2020-10-15 23:49:10 · 391 阅读 · 0 评论 -
团体程序设计天梯赛-练习集 L2-020 功夫传人 (25分) dfs深搜
L2-020 功夫传人 (25分)一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。这里我们来考察某一位祖师爷门下的徒子徒孙家谱:假设家谱中的每个人只有1位师傅(除了祖师爷没有师傅);每位师傅可以带很多徒弟;并且假设辈分严格有序,即祖师爷这门武功的每个第i代传人只能在第i-1代原创 2020-10-15 21:14:03 · 324 阅读 · 0 评论 -
关于并查集的一点总结 模板题目“畅通工程”
并查集的理解 并查集解决的问题主要是看集合与集合之间的是否存在关联。主要的解决思路就是在观察两个集合之间是否存在关联,只需要看两个集合的祖先是否是同一个,如果不是同一个那就不是同一个集合。在生成祖先节点的时候,可以使用路径压缩算法进行处理,好处就是,除了祖先节点其他节点没有等级之分。如下图:模板题目----畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道原创 2020-10-15 11:06:01 · 192 阅读 · 0 评论 -
最短路径(迪杰斯特拉)Dijkstra算法的理解
最短路径(迪杰斯特拉)Dijkstra算法的理解1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,(其中V代表点集, E代表边集)。假设每条边 E[i] 的长度为 w[i],找到由顶点 V0原创 2020-10-14 11:53:23 · 1579 阅读 · 0 评论 -
素数的几种求法
素数筛法素数筛法埃氏和线式的思想差不太多,都是采用事先打表的思想进行初始化,以供后面使用。MaxFactor埃氏筛法bool is_pri[N+5];void prime(){ for(int i=0;i<=N;i++) is_pri[i]=true; //is_pri[0] = false;//由于输入情况有可能小于2 is_pri[1] = true; for(int i = 2; i <= N; i ++){ if(is_pri[i]){ for(int原创 2020-10-11 21:09:42 · 311 阅读 · 0 评论