Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

100题+1A 留念

Posted by songruirui at 2013-03-29 11:02:40
话说这题过的悬啊。。。
不过一月一百题还是稍微纪念一下~
//poj1390 递归方法
#include <iostream>
#include <memory.h>
using namespace std;
short int len[202];//len[i]表示第i段的长度
short int color[202];//color[i]表示第i段的颜色
bool vis[202][202][202];
short int re[202][202][202];

int findmax(int i,int j,int k)
{
	if(vis[i][j][k]==true)
		return re[i][j][k];
	if(i==j)
		return (len[i]+k)*(len[i]+k);
	if(i>j)
		return 0;
	//表示起始段i到终止段j的闭区间和此区间后与j段颜色相同的长度k合并的最大值
	int result=0;
	result=findmax(i,j-1,0);
	result+=(len[j]+k)*(len[j]+k);//当前result表示直接算第j段时的最大值
	int p=i;
	while(p<j)
	{
		if(color[p]!=color[j])
		{	
			p++;
			continue;
		}
		else
		{
			//当存在第p段,其颜色与第j段相同时,尝试合并这两端,求其值
			int temp1=findmax(i,p,len[j]+k);
			int temp2=findmax(p+1,j-1,0);
			int curresult=temp1+temp2;
			if(result<curresult)
				result=curresult;
			p++;
		}

	}
	re[i][j][k]=result;
	vis[i][j][k]=true;
	return result;
}
void init()
{
	memset(len,0,sizeof(len));
	memset(color,0,sizeof(color));
	memset(vis,false,sizeof(vis));
	memset(re,0,sizeof(re));
}
int main()
{

	int rounds;
	cin>>rounds;
	int casenum=0;
	int blocknum;
	while(rounds--)
	{
		init();
		casenum++;
		cin>>blocknum;
		int i=1;
		int curcolor;
		int precolor=-1;
		int curseg=1;
		
		while(i<=blocknum)
		{
			cin>>curcolor;
			i++;
			if(curcolor==precolor||precolor==-1)
			{
				if(precolor==-1)
					color[curseg]=curcolor;
				precolor=curcolor;
				len[curseg]++;
			}
			else
			{
				precolor=curcolor;
				curseg++;
				color[curseg]=curcolor;
				len[curseg]++;
			}
			
		}
		int result=findmax(1,curseg,0);
		cout<<"Case "<<casenum<<": "<<result<<endl;
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator