摘要: #include #include #include using namespace std;int g[111][111];int cnt[111];stack st;int n,m;//搜索求欧拉回路或欧拉通路void dfs(int u, int t){ st.push(u); i... 阅读全文
posted @ 2015-03-15 21:45 justPassBy 阅读(278) 评论(0) 推荐(0) 编辑
摘要: hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大要求任意两个选中的数字不相邻,相邻包括上下,左右和对角线相邻。由于N 2 #include 3 #include 4 #i... 阅读全文
posted @ 2015-03-04 20:59 justPassBy 阅读(200) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1182r[x] = 0 表示x和父亲是同类r[x] = 1 表示x吃父亲r[x] = 2 表示x被父亲吃因为只存在三种动物,且三种动物构成了环形所以动物之间的关系是可推导的。如图:c与a的关系为(r[b] + r[c])%3;b与父亲a的关系可为... 阅读全文
posted @ 2015-03-04 11:02 justPassBy 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 并查集是一种数据结构,一般用来解决连通性或者动态连通性的问题。动态连通性:即一个图有n个结点,不断加入边,问此时任意两个结点的连通性。建模思路:对于连通的结点它们属于一个组,不连通的结点就属于不同的组。对于每一条边的输入,判断两个结点是否连通,如果不连通则将两个结点所属的两个组连成一个组。对于每一个... 阅读全文
posted @ 2015-02-17 20:21 justPassBy 阅读(195) 评论(0) 推荐(0) 编辑
摘要: •给定一个中序遍历为1,2,3,…,n的二叉树 •每个结点有一个权值 •定义二叉树的加分规则为: –左子树的加分×右子树的加分+根的分数 –若某个树缺少左子树或右子树,规定缺少的子树加分为1。 •构造符合条件的二叉树 –该树加分最大 –输出其前序遍历序列 定义dp[i][j] 为中序遍历为i-->j... 阅读全文
posted @ 2015-02-15 17:40 justPassBy 阅读(214) 评论(0) 推荐(0) 编辑
摘要: poj1321http://poj.org/problem?id=1321我们可以把棋盘的每一行看做是一个状态,如果某一列放置了棋子,那么就标记为1,否则就标记为0.然后把它看成是一个二进制数,然后转为10进制数,就可以当做数组下标然后进行状态转移了设dp[i][s] 为处理到第i行时,状态为s的方... 阅读全文
posted @ 2015-02-11 12:21 justPassBy 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 即物品间存在依赖,比如i依赖于j,表示若选物品i,则必须选物品j 3 http://acm.hdu.edu.cn/showproblem.php?pid=3449 4 有很多个箱子,想买箱子中的物品必须先买下箱子,典型的依赖背包 5 将不依赖其他物品的物品称为主件,依赖其他物品的物品... 阅读全文
posted @ 2015-02-08 18:24 justPassBy 阅读(803) 评论(0) 推荐(1) 编辑
摘要: 1 /* 2 有n件物品和一个容量为v的背包,第i件物品的费用是c[i],价值是w[i] 3 这些物品被分为若干组,每组中的物品互相冲突,即一组中只能取一件物品 4 将哪些物品装入背包使得总价值最大 5 dp[k][v] 表示前k组物品花费容量v能取到的最大值 6 dp[k][v] = max(d... 阅读全文
posted @ 2015-02-08 09:25 justPassBy 阅读(980) 评论(0) 推荐(0) 编辑
摘要: http://acm.fafu.edu.cn/problem.php?id=1499 1 /* 2 二维费用的背包问题是指:对于每件物品,具有两种不同的费用, 3 选择这件物品就必须付出这两种代价,每种代价都有可付出的最大值(背包容量) 4 问怎么选择物品才能得到最大价值.费用增加了一维,那么只需要... 阅读全文
posted @ 2015-02-08 08:29 justPassBy 阅读(1988) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 将01背包,完全背包,和多重完全背包问题结合起来,那么就是混合三种背的问题 3 根据三种背包的思想,那么可以得到 4 混合三种背包的问题可以这样子求解 5 for(int i=1; i19 #include 20 int cash;21 int n[11],dk[11];22 int... 阅读全文
posted @ 2015-02-07 19:53 justPassBy 阅读(358) 评论(0) 推荐(0) 编辑