BOJ262 Channel Coding DP
摘要:题意:给一串数字,里面只包含0 -1 1三种数字。问和为0的最长连续子串。思路:遍历一遍,求每个i的sum[i],代表从第一个数字到这个数字的和。显然如果sum[i]=sum[j],则从i+1到j这j-i个数字的和=0。即次数所求的D=j-i-1。#include<iostream>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
const int N=50005;
int n;
int data[N];
int pos[N];
int neg[N];
int mx;
阅读全文
posted @
2011-12-15 19:18
不是我干的
阅读(142)
推荐(0)
POJ1050 TO THE MAX [DP]
摘要:多天之前就理清了这题的思路,因为这礼拜六考通原,一直没开编译器A了这题。终于在考通原前一天憋的蛋疼A之。题意:求最大矩阵。思路:是很好的最长连续子序列的变形题。一维最长连续子序列状态转移方程:dp[k]=max(dp[k-1]+mat[k],mat[k]);(*)现在是求最大矩阵:启发:试想,我们求出的最大矩阵和之前一维的最大子序列的差别就是多了连在一起的几行。即“变厚了”。试想行数为1时,列数为n时,用方程(*)解。行数为2时,列数为n时,就是先求一下第一行的,然后求第二行的,然后求第一行同列数字相加成的(即压扁后的)。.....这样就能发现此中的规律,详细看代码。#include<i
阅读全文
posted @
2011-11-25 20:59
不是我干的
阅读(120)
推荐(0)