算法分析:这个问题很显然可以转化成一个二分图最佳匹配的问题。把田忌的马放左边,把齐王的马放右边。田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边;如果平局,则连一条权为0的边;如果输,则连一条权为-200的边。 然而我们知道,二分图的最佳匹配算法的复杂度很高,无法满足N=2000的要...
分类:
其他好文 时间:
2014-12-30 09:12:27
阅读次数:
218
描述:
小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传...
分类:
编程语言 时间:
2014-12-29 18:32:22
阅读次数:
270
Say you have an array for which theithelement is the price of a given stock on dayi.If you were only permitted to complete at most one transaction (ie...
分类:
其他好文 时间:
2014-12-28 18:12:08
阅读次数:
170
动态规划问题,每一步都分两种情况,然后选出最合适的那种
#include "iostream"
#include "memory.h"
#include "stdio.h"
using namespace std;
const int MAX = 1005;
int dp[MAX][MAX];
int largest;
int arr[MAX];
int call(int start...
分类:
其他好文 时间:
2014-12-28 13:00:31
阅读次数:
132
小机房的树CODEVS 2370————最近公共祖先和动态规划的完美结合 【题目描述】小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上。有一天,他们想爬到一个节点上去搞基,但是作为两只虫子,他们不想花费太多精力。已知从某个节点爬到其父亲节...
分类:
其他好文 时间:
2014-12-27 18:53:08
阅读次数:
160
任务安排类型的动态规划法计算。
思路1:
1 按照任务的结束时间排序
2 填表,使用一维表即可,表的值表示以当前时间点为结束时间,得到的最大效率。那么就得到状态转换方程:arr[i] = max (arr[i], arr[mt[i].st]+mt[i].ef)
其中mt[i].st代表当前任务的起止时间,mt[i].ef代表当前任务的效率。
3 那么当当前计算的时间点不是某任务的结束时间,改如何处理呢?可以直接把之前计算得到的最大效率填上来就可以。
4 还有最重要的处理特殊情况-很容易栽跟斗的地方: 如果两...
分类:
其他好文 时间:
2014-12-27 12:46:19
阅读次数:
115
一、 题目
给定一个字符串包含26个字母,字母与数字产生映射,如:
‘A’ --> 1
‘B’ --> 2
…
‘Z’ --> 26
如果给一串数字,请给出编码的方式有多少?
*注意:’12’ 可以编码成”AB”,也可以编码成”L”.
二、 分析
可以看出题目的目的是考察动态规划,即每走一步可能有两种情况,是不是和爬台阶很像呢?对的。
这道题思路有两种但...
分类:
其他好文 时间:
2014-12-26 20:23:15
阅读次数:
170
这道题很容易想到状压dp,首先跑一遍floyd求出各个点之间的最短路,然后dp。
状态是dp[i][j]表示状态为i(二进制,表示是否访问过每个点),在位置j时的最短路。
转移就是:dp[i][j]=min(dp[i-(1<<v)][u]+grid[u][v],dp[i][j]),其中v是当前位置,u是上一个状态的位置。
需要注意的是dp的顺序应该是由含1的个数少的二进制到1的个数高的二进制;由于最开始就在0位置,所以dp[(1<<n)-1][0]不可能被转移到,所以最后的答案应该是ans=min(ans,...
分类:
其他好文 时间:
2014-12-26 20:22:01
阅读次数:
260
/*
* copyleft@hustyangju
* 问题:longest common subsequece problem
* 思路:从底往上,利用动态规划,划分子问题,利用LCS子问题的长度变化,求得LCS
* 时间复杂度O(m*n)
* 空间复杂度O(m*n)
*/
#include
#include
using namespace std;
class lcs
{
p...
分类:
编程语言 时间:
2014-12-26 13:01:52
阅读次数:
468
Adjacent Bit Counts
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
For a string of n bits x1, x2, x3, …, xn, the adjacent bit count of the string is given by fun(x) = x1*x2 + x2*x3 + x3*x 4 + … + ...
分类:
其他好文 时间:
2014-12-26 11:10:26
阅读次数:
199