⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2681_1.cpp

📁 HDOJ2501-2681acm解题报告
💻 CPP
字号:
//3.17 3 H wa  自信心严重受挫....
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
typedef struct{int ss,tt;}st;
st t[220];
bool cmp(st a,st b)
{
	return a.ss<=b.ss;//按照智商升序排列
}
int n,k,maxk,maxp,dp[205][205][505];
/*void dfs(int u,int p)
{
	if(u>k)
	{
		if(p>maxp)
			maxp=p;
		return ;
	}
	dfs(u+1,p);
	if(abs(t[u].ss-maxx)<=maxk && abs(t[u].ss-minn)<=maxk && t[u].tt+p>maxp)
	{
		if(t[u].ss>maxx)
			maxx = t[u].ss;
		if(t[u].ss<minn)
			minn = t[u].ss;
		dfs(u+1,t[u].tt+p);
	}
}*/

/*void pack()
{
	int i,j;
	for(i=0;i<n;i++)
		m[n][i]=0;
	m[n][]
}*/
int maxf(int a,int b)
{return a>b?a:b;}

/*](0<=i<N, i<=j<N, 1<=k<=K)表示把第i个
的intelligence_value作为最小值min,前j个中
取k个的最大prettiness_value值*/
/*int dp(int i,int j,int k)
{
	
		//for(j=0;j<i;j++)
		//{
			if(t[j].ss-t[i].ss>maxk)
				return 0;
		//}
	//	return maxf(dp(i,j - 1, k),dp(i, j – 1, k - 1) + t[j].tt); 
			//if(maxf(dp(i,j-1,k),dp(i,j-1,k-1)+t[j].tt)> maxp)
				return maxf(dp(i,j-1,k),dp(i,j-1, k-1) +t[j].tt);

}*/
int main()
{
	freopen("C:\\Documents and Settings\\Administrator\\桌面\\test.txt","r",stdin);

	int m,i,j,r,s,temp;
	while(scanf("%d%d%d",&n,&k,&maxk)!=EOF)
	{
		for(i=0;i<n;i++)
			scanf("%d%d",&t[i].ss,&t[i].tt);
		maxp=0;
		sort(t,t+n,cmp);
		//dfs(0,0,t[0].ss,t[0].ss);
		//printf("%d\n",dp(0,0,0));
		memset(dp,0,sizeof(dp));
		/*](0<=i<N, i<=j<N, 1<=k<=K)表示把第i个
的intelligence_value作为最小值min,前j个中
取k个的最大prettiness_value值*/
		for(i=0;i<n;i++)
		{
			//if(dp[i][j][0]<t[j].tt)
					dp[i][0][0]=t[i].tt;
			for(j=i;j<n;j++)
			{
				dp[i][j][0]=dp[i][j-1][0];
			if(t[j].ss - t[i].ss>maxk)
					break;
				for(r=0;r<k;r++)
				{
					dp[i][j][k]=
						maxf(dp[i][j-1][k],dp[i][j-1][k-1]+t[j].tt);
				}
			}
		} 
		printf("%d\n",dp[n-1][n-1][k-1]);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -