51Nod
小胡同的诗
千里之行,始于足下
展开
-
51Nod 1384全排列(DFS)
题目大意: 给你一串数字字符,要求将其按字典序输出全排列。 解题思路: 一开始直接STL,然而卡了一组数据没过。我想应该是去重的问题,然后直接手动DFS输出。具体做法是用两个集合A、B,将B中的东西一个个加入到A中,然后如果发现某个数字想要加入到集合中,但集合A相同位置已经有一个一样的了就不指向这个分支。 AC代码: #include<iostream> #include&l...原创 2018-06-10 17:32:06 · 194 阅读 · 1 评论 -
51Nod 1459 迷宫游戏(Dijkstra+额外松弛第二个权值(分数))
题目大意 :第一行输入四个数字N(N个顶点)、M(M条弧的信息)、start、end(起点、终点)。第二行输入N个数字,分别代表每个顶点所具有的分数。接下来M行输入弧的信息(顶点1、顶点2、之间的权值w)。问从起点到终点的最小权路径的权值之和以及其对应的最大的分数为多少? 解题思路 :最短路问题,考虑用Dijkstra,然而题中需要考虑最大分数的这一个条件,我们可以这样想,每次松弛更新时记录前驱...原创 2018-06-10 16:36:49 · 265 阅读 · 0 评论 -
51nod1086(多重背包DP+二进制优化模板题)
题目链接:51nod_1086 解题思路:多重背包+二进制优化 AC代码 #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <iostream> #include <algorithm> #include <...原创 2019-01-23 23:00:27 · 201 阅读 · 0 评论 -
最少插入回文串(LCS+思维)
题目链接:51Nod 思路:处理回文的东西许多时候要考虑反转一下与原串相比。对于本题,发现一个结论:原串与逆序串的LCS扣除后剩下的串长度恰好是我们要构造对称的最少长度,因为这样找LCS相当于回文串中找后面的一个匹配,当然LCS是不连续的,而回文要求连续,这样扣除一下恰好会是一个连续的结果。 #include <bits/stdc++.h> using namespace std; ...原创 2019-08-29 19:36:55 · 274 阅读 · 0 评论