摘要:
某国王需要修路,王国有一个首都和多个城市,需要修路。已经有修路计划了,但是修路费用太高。 为了减少修路费用,国王决定从计划中去掉一些路,但是需要满足一下两点: 思路: 在Dijkstra找最短路的时候,就记录一下费用 if(d[e.to] > d[v] + e.dist) { ... prev_mi 阅读全文
摘要:
题意:给出一个单向带权图和一个点s,求点u,u到s的最短路径和s到u的最短路径之和最大。 思路: 对于s到任意点的最短路,直接dijkstra可以求出。 对于任意点到s的最短路,将所有边反向然后求一次最短路。容易证明,求出的s到任意点v的最短路s-->v就是原来没有反向的图的v-->s的最短路。 所 阅读全文
摘要:
题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前的自己。 思路: 这题就是判断存不存在负环回路。 前M条是双向边,后面的W是单向的负边。 为了防止出 阅读全文
摘要:
题意:如果两头牛在同一部电影中出现过,那么这两头牛的度就为1, 如果这两头牛a,b没有在同一部电影中出现过,但a,b分别与c在同一部电影中出现过,那么a,b的度为2。以此类推,a与b之间有n头媒介牛,那么a,b的度为n+1。 给出m部电影,每一部给出牛的个数,和牛的编号。问那一头到其他每头牛的度数平 阅读全文
摘要:
题意: 求某一个办公室 到其他所有办公室的 总距离最短 办公室数 不超过10 输入:多组输入,每组第一行为n (1 ≤ n ≤ 45),接下来n行是 (x, y, d),x到y的距离是d输出:办公室号 和 最短距离 #include <iostream> #include <stdio.h> #in 阅读全文
摘要:
题意: 给你一颗N个节点的树,节点编号1到N。1总是节点的根。现在有两种操作: 现在给一系列操作,求出所有Q操作结果的和。 思路: 最坏情况下为整棵树成为一条链,单纯使用并查集(无压缩)查询复杂度最坏1e10。单纯使用并查集也能过。 正解应该是将查询存下来,存下每次Q操作的查询时间和查询结点,用qt 阅读全文
摘要:
题意:有N名来自两个帮派的坏蛋,已知一些坏蛋两两不属于同一帮派,求判断给定两个坏蛋是否属于同一帮派。 思路: 解法一: 编号划分 定义并查集为:并查集里的元素i-x表示i属于帮派x,同一个并查集的元素同时成立 可见所有元素个数为2 * N,如果i表示属于帮派A,那么i + N表示属于帮派B,每次输入 阅读全文
摘要:
转自:jihite 构造函数、析构函数、赋值函数是每个类最基本的的函数。每个类只有一个析构函数和一个赋值函数。但是有很多构造函数(一个为复制构造函数,其他为普通构造函数。对于一个类A,如果不编写上述四个函数,c++编译器将自动为A产生四个默认的函数,即: A(void) //默认无参数构造函数 A( 阅读全文
摘要:
题意: 有n台损坏的电脑,现要将其逐台修复,且使其相互恢复通信功能。若两台电脑能相互通信,则有两种情况,一是他们之间的距离小于d,二是他们可以借助都可到达的第三台已修复的电脑。给出所有电脑的坐标位置,对其进行两种可能的操作,O x表示修复第x台,S x y表示判断x y之间能否通信,若能输出SUCC 阅读全文
摘要:
题意:从C头奶牛中招收N(奇数)头。它们分别得分score_i,需要资助学费aid_i。希望新生所需资助不超过F,同时得分中位数最高。求此中位数。 思路: 先将奶牛排序,考虑每个奶牛作为中位数时,比它分数低(前面的)的那群牛的学费总和lower_i,后面的总和upper_i。然后从分数高往分数低扫描 阅读全文