摘要:
题意: 给出n和m,n代表有n个城市。接下来m行,分别给出a,b,c。代表a与b之间有一条颜色为c的道路。求最少走几条道路才能从1走到n。输出要走的道路数和颜色.保证颜色的字典序最小。分析: bfs,先倒搜一次,求出每个点到终点的距离d[i]。然后从起点走,每次走到新点保证d-1且颜色最小。代码... 阅读全文
摘要:
题意: 统计[m,n]这个区间有多少个0分析: 可转化为求0-n的0减去0-m-1的0。jack(n的第i位为0)=n左边的数(高位)*10^(i-1);Jack(n的第i位不为0) =(n左边的数-1)*10^(i-1)+(i位右边的数+1);f(n)求0-n之间的所有0。ans=f(n)-f... 阅读全文
摘要:
题意: 将树的关系用字符串的形式给出分析: 直接dfs搜索,第i行第j个如果是字母,判断i+1行j个是不是'|'是的话在第i+2行找第一个'-',找到后在第i+3行找字母,重复进行。代码:#include #include #include #include using namespace st... 阅读全文
摘要:
题意: 有一些秘密的门包含着非常有趣的单词迷题, 考古学家队伍必须解决它们才能够打开大门。 因为没有其他方法能偶打开这些门, 所以解决那些迷题对我们非常重要。在每个门上有很多个有磁力的盘子,盘子上面写着单词。 必须重新移动放置这些盘子,让它们形成一个队列:队列中,除了第一个单词,每个单词的开头和上... 阅读全文
摘要:
题意: 给出n和m,n代表总共有几个箱子。接下来m行,每行有a,b,表示b在a之后。输出一个合理的序列。分析: 简单的拓扑排序:代码: #include #include #include #include using namespace std;#define MAX 100int c[MA... 阅读全文
摘要:
题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止。然后根据上面划分的区域建树,小区域作为大区域的子树:然后对于每一个黑色的区域,也就是上面树上是黑色的结点,将其从叶子结点到根节点的路径表示出... 阅读全文
摘要:
题意: 按从左至右的顺序发牌,并摆成一行,发牌不要相互重叠。游戏中一旦出现任何一张牌与它左边的第一张或第三张“匹配”,即花色或点数相同,则须立即将其移动到那张牌上面。如果牌被移动后又出现了上述情况,则需再次向左移动。每叠牌只能移动最上面的一张。如果一叠牌被移空,应该立即将右边各叠整体向左移动,补上... 阅读全文
摘要:
题意: 给定一个树的BFS和DFS,求这棵树。分析: 拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可。代码: #include #include #include #include #include... 阅读全文
摘要:
题意: 给出数个天平,每个天平的结构都类似于二叉树,只有左右重量都相等时才平衡,求每个天平最少改多少个秤砣,也就是叶子结点可以使得整个天平平衡。天平的深度不超过16。分析: 要使得改动的数量最少,那么就至少有一个秤砣不变,然后以这个秤砣为基准来调整整个天平。天平的结构是二叉树,那么由此我们可以得... 阅读全文
摘要:
题意: 求机器人走最短路线,而且可以穿越障碍。N代表有N行,M代表最多能一次跨过多少个障碍。分析: bfs()搜索,把访问状态数组改成了3维的,加了个维是当前能跨过的障碍数。代码: #include #include #include #include #include using nam... 阅读全文