用优先队列扫一次得到大于和小于中位数的总和的最小值,再扫一遍得到最优解#include#include#include#include#include#include#define INF 0x3fffffffusing namespace std;typedef long long ll;int ...
分类:
其他好文 时间:
2015-05-01 17:19:36
阅读次数:
109
贪心算法原理贪心算法就是做出一系列选择来使原问题达到最优解。在每一个决策点,都是做出当前看来的最优选择,比如在活动选择问题里面,我们总是在一个问题的基础上选择结束时间最早的活动,之后再在剩下活动的基础上选出结束时间最早的活动,以此类推,直到没有活动可以进行选择。但是遗憾的是这种算法并不是总能得到最优解,并且是否能得到最优解还取决于对于贪心策略的选择。一般来说,设计贪心算法涉及到下面几个步骤:
1...
分类:
其他好文 时间:
2015-04-29 19:54:12
阅读次数:
148
数码问题求解,分别使用BFS和启发式搜索实现。 BFS:求解指定3*3拼图(8-数码问题)的最优解。 ? ? 1,isCompleted记录求解完成状态; ? ? 2,closeList记录所有访问过的节点; ?? 3,searchedNodesNum记录访问...
分类:
编程语言 时间:
2015-04-29 10:18:13
阅读次数:
144
这几天一直再看,觉得看懂了一些,先记下来。动态规划动态规划是运筹学的一个方向,就是把多级最优化问题分解成一系列的单阶问题。在不断增加的过程中,不断的计算当前问题的最优解。一般分为如下四个部分:
线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;
区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;
树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等;
背包问题:01背包问题...
分类:
编程语言 时间:
2015-04-27 02:07:23
阅读次数:
427
题目描述
给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短。请问,如何最快地判断字符串B中所有字母是否都在字符串A里?
为了简单起见,我们规定输入的字符串只包含大写英文字母,请实现函数bool StringContains(string &A, string &B)
比如,如果是下面两个字符串:
String 1:ABCD
String 2:BAD ...
分类:
其他好文 时间:
2015-04-26 13:48:58
阅读次数:
154
贪心算法之活动选择问题我们在之前的文章里面已经提到过动态规划的方法来求解最优的问题,但是就是因为动态规划太过于强大,像一把瑞士军刀,在一些比较特殊的问题上再使用动态规划的话,就有点用脸盆刷牙的感觉了,而且动态规划运行时间也比较长。对于一些特殊的最优解问题不是很适合,于是我们就有了贪心算法的出现。
贪心算法的座右铭:每一步都尽量做到最优,最终结果就算不是最优,那么也是次最优
从上面的描述中知道,贪...
分类:
编程语言 时间:
2015-04-25 15:15:02
阅读次数:
234
题目传送: UVA - 116
思路:可以定义状态为dp[i][j] 为从第i行第j列开始往后走到第n列(总共n列)的最小值(赋初始值为无穷),且状态方程很好推出来:dp[i][j] = a[i][j] + max(dp[i-1][j+1], dp[i][j+1], dp[i+1][j+1]); 最后最优解 ans = max(dp[i][1])(1
不过这题难点不在这...
分类:
其他好文 时间:
2015-04-21 09:53:14
阅读次数:
198
基础DP。
状态转移方程为:d[i][j] = a[i][j] + (i==n ? 0 : max(dp(i+1,j),dp(i+1,j+1)));
i是在第i层,j是在该层的第几个数。
这一层的最优解取决于下一层的情况,而每一层都有两个决策,条件 if(d[i][j]>=0) return d[i][j]; 用来剪枝。
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-04-16 17:43:40
阅读次数:
104
不知道为什么比赛的时候一直想着用DFS 来写一直想剪枝结果还是TLE = =这题数据量不大,又是问最优解,那么一般来说是用 BFS 来写int commandi[4] = {1, 2, 3, 4};我定义了一个方向数组,其实题目意思中的,指针移动还有操作版的变化本质上都是指针的移动在此只需要 额外定...
分类:
其他好文 时间:
2015-04-13 18:48:46
阅读次数:
156
传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27400
Anayse:小顶堆;
1 1 5 - > 1 3 5 -> 3 5 7 -> 5 7 8
pop(1) p(1) p(3) 最优解。
每次剔除堆顶,然后换push与...
分类:
其他好文 时间:
2015-04-13 16:51:34
阅读次数:
136