摘要:
最小生成树模板(嗯……在kuangbin模板里面抄的……) 感觉Prim和Dijkstra有点像。写起来挺简单的。 我一开始的想法是把每个q中的a,b设为已访问节点,后来发现不对,例如ab连,dc连,但它们并不是全部相连的。 好吧其实此题就是把已建好两点之间距离设为0. 阅读全文
摘要:
1171 题意比较简单,这道题比较特别的地方是01背包中,每个物体有一个价值有一个重量,比较价值最大,重量受限,这道题是价值受限情况下最大,也就值把01背包中的重量也改成价值。 2546 和上面一样,没有重量,只有价值。 如果卡上不足5元,输出原值。如果大于5元,就在m-5范围内花最多的钱(留下最贵 阅读全文
摘要:
题意:有一些男生女生,男生女生数量差不超过100 ,男生女生两两配对。要求求出一种配对方法,使每一对的高度差的和最小。 思路:(我是真的笨笨笨!!)设人少的一组人数为n,b[],人多的一组人数为m,g[](b[],g[]先排好序),用dp[i][j]表示n中的前i个人与m中的前j个人配对所得到的最小 阅读全文
摘要:
因为我笨,思考了好久,看了好多博客,所以希望写的细一些= =等我忘了我是怎么想的,能回来一眼就看懂。 题意: 给一个n个数的整数序列,要你将其分为不相交的任意段,并取其中m段,求m段和的最大值。 例如: 1 2 3 取1段, 即为“1 2 3”,和为6 -1 4 -2 3 -2 3 取两段,即为“4 阅读全文
摘要:
初学,理解可能不是那么准确~~ Next数组的含义:next[i]表示第0个元素到第i个元素组成的字符串的最大前缀后缀。Next[0]=0显然。 所以KMP的原理就是 通过找出每一阶段最大的相等的前缀后缀,那么匹配到某个字符失配时就可以从前缀的下一个字母开始匹配,而不用再回退匹配。使复杂度降从O(m 阅读全文
摘要:
Description 现在给出N个城市,城市之间共有M条道路。道路表示的方法是<u,v,w>, 代表从编号为u的城市,到标号为v的城市有条花费为w的道路。 现在我们从编号为S的城市出发,目的地是编号为T的城市。 但是我们在旅途中从u号城市到v号城市花费不只是他们的道路的花费w, 还要加上以前的所有 阅读全文
摘要:
数据结构作业……本来想随便抄一份,结果网上的代码好麻烦的样子orz 一个满二叉树节总结点数等于2^最大深度-1 最大深度可通过层次遍历求出。 代码如下 /**< 判断一个二叉树是否为满二叉树 */ #include <cstdio> #include <cstdlib> struct BiTree 阅读全文
摘要:
stringstring是标准库类型,使用时需要包涵头文件,使用using声明。include using std::string;1.定义和初始化string s1;string s2(s1);string s2 = s1;string s3("value");string s3 = "value... 阅读全文
摘要:
HDU1710Binary Tree Traversals 题目大意:给一个树的前序遍历和中序遍历,要求输出后序遍历。 (半年前做这道题做了两天没看懂,今天学了二叉树,回来AC了^ ^) 首先介绍一下二叉树。二叉,即每个节点最多连向下连两个结点,也就是最多两个孩子。 如题目描述,二叉树就长这样~ 如 阅读全文
摘要:
一、01背包 题目描述:01背包是在n件物品取出若干件放在空间为W的背包里,每件物品的体积为w1,w2……wn,与之相对应的价值为P1,P2……Pn。求出获得最大价值的方案。[注意:每种物品只能拿一个。] 用二位数组dp来记录状态,其中dp[i][j]表示的是从第一件物品开始向背包里装,当背包最大空 阅读全文
摘要:
最短路最基础的题啦,刚学会拿来练习~~~ 用的Dijkstra算法【目前就会这一个Orz #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAX = 105; const 阅读全文
摘要:
给一系列点的坐标,求距离最小的两个点。 基本是照着别人的代码写的……我以为我看懂了的……怎么还是错了辣么多次…… #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> using namespace s 阅读全文
摘要:
第一次周赛就有这道题,现在还耿耿于怀 主要就是用到栈,水题啦 #include <cstdio> #include <stack> #include <cstring> using namespace std; const int MAX = 1000 + 10; int n; char in[MA 阅读全文
摘要:
暴力枚举+最长公共子序列 #include <iostream> #include <cstring> using namespace std; int dp[510][510]; int n; int lcs(char * a, char * b, int lena, int lenb) { me 阅读全文
摘要:
给出一个整数集,其中包含1-n的所有整数,要求挑选出一个元素最多的子集,使得子集中任意两数的乘积不是完全平方数 (n<=10^6) 求这样一个最大子集的元素个数 #include <cstdio> #include <cstring> #include <cmath> const int N = 1 阅读全文