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

DP

Posted by suhang at 2009-12-17 20:01:44 on Problem 2385
看到讨论中有提示一开始有可能在第二棵树的情况,然后又往DP的方向想,就一次AC了。。


贴代码一下,感谢那些好心提醒的人。话说英文题还就是很坏啊。。

#include <cstdio>

const int maxn=2000;

int a[maxn],t,w;
int f1[40],f2[40];

int max(int x,int y)
{
	if (x>y) return x;
	else return y;
}
int main()
{
	freopen("p2385.in","r",stdin);
	freopen("p2385.out","w",stdout);
	
	scanf("%d%d",&t,&w);
	for (int i=1;i<=t;i++)
	{
		scanf("%d",&a[i]);
	}
	for (int i=1;i<=t;i++)
	{	
		if (a[i]==1)
		{
			f1[0]++;
			for (int j=1;j<=w;j++)
			if ( j%2==0 )
			{
				f1[j]=max(f1[j]+1,f1[j-1]+1);
			}
			else
			{
				f2[j]=max(f2[j]+1,f2[j-1]+1);
			}
		}
		else
		{
			f2[0]++;
			for (int j=1;j<=w;j++)
			if (j%2 ==0)
			{
				f2[j]=max(f2[j]+1,f2[j-1]+1);
			}
			else
			{
				f1[j]=max(f1[j]+1,f1[j-1]+1);
			}
		}
	}
	printf("%d\n", max(f1[w],f2[w]) );
	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