摘要:
Dijkstra算法 Dijkstra算法(读者可以将其读作“迪杰斯特拉算法”)用来解决单源最短路问题,即给定图G和起点s,通过算法得到s到达其他每个顶点的最短距离。Dijkstra的基本思想是对图G(V,E)设置集合S存放已被访问的顶点,然后每次从集合V-S中选择与起点s的最短距离最小的一个顶点( 阅读全文
摘要:
题意 在微博中,每个用户都可能被若千个其他用户关注。而当该用户发布一条信息时,他的关注者就可以看到这条信息并选择是否转发它,且转发的信息也可以被转发者的关注者再次转发,但同一用户最多只转发该信息一次(信息的最初发布者不会转发该信息)。现在给出N个用户的关注情况( 即他们各自关注了哪些用户)以及一个转 阅读全文
摘要:
图由顶点(Vertex)和边(Edge)组成,每条边的两端都必须是图的两个顶点(可以是相同的顶点)。而记号G(V,E)表示图G的顶点集为V、边集为E。 顶点和边都可以有一定属性,而量化的属性称为权值,顶点的权值和边的权值分别称为点权和边权。权值可以根据问题的实际背景设定,例如点权可以是城市中资源的数 阅读全文
摘要:
水~。 题意 给定一棵二叉查找树(BST)的插入序列,求这棵二叉查找树的最下面两层的结点个数并求和。 注意点 与根结点相同的结点应当插到左子树中。 const int N=1010; PII tree[N]; int a[N]; int dep[N],maxdep; int cnt[N]; int 阅读全文
摘要:
题意 有N个人,每个人喜欢若干项活动,如果两个人有任意一个活动相同,那么就称他们处于同一个社交网络(若A和B属于同一个社交网络,B和C属于同一个社交网络,那么A、B、C属于同一个社交网络)。求这N个人总共形成了多少个社交网络。 思路 如果A和B是好朋友,并且B和C是好朋友,那么A和C也是好朋友。本题 阅读全文
摘要:
先介绍经典的合并果子问题。 有n堆果子,每堆果子的质量已知,现在需要把这些果子合并成一一堆, 但是每次只能把两堆果子合并到一起,同时会消耗与两堆果子质量之和等值的体力。显然,在进行n-1次合并之后,就只剩下一堆了。为了尽可能节省体力,请设计出合并的次序方案,使得耗费的体力最少,并给出消耗的体力值。 阅读全文