zoj 3905 dp

原创 2015年11月18日 19:15:09

给你n个数  两个人去取   每个数有两种价值 对应ai和bi   每次去两个数   b那他认为较大的  a那剩下的  问a拿的最大价值是多少  

dp【i】【j】表示前i个数    a拿j个的最大价值    很显然会想到 说对于i这种不一定a能拿到啊   其实 仔细想想   除了b认为最大价值对应的那个ai拿不到外   其余的都是和玉拿到的   

所以很显然   的然bi排个序    那么第一个就拿不到了   合一用来初始化数组  及dp【1】【0】 = 0;接下来就是转移方程了   对于dp【i】【j】  来说 可以i是可以拿 额可以不拿的   这就有  dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1] + num[i].ai);  这样问题解决了


#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;

int dp[1010][1010];
struct node
{
	int ai, bi;
}num[1010];
int cmp(node a, node b)
{
	return a.bi > b.bi;
}
int max(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int T, i, j, n;
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d", &n);
		for(i = 1; i <= n; i++)
		scanf("%d%d", &num[i].ai, &num[i].bi);
		sort(num + 1, num + 1 + n, cmp);
		
		memset(dp, 0, sizeof(dp));
		dp[1][0] = 0;
		for(i = 2; i <= n; i++)
		{
			for(j = 1; j * 2 <= i; j++)
			{
				dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1] + num[i].ai);
			}
		}
		printf("%d\n", dp[n][n/2]);
	}	
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

zoj 3905(dp+滚动数组)

Cake Time Limit: 4 Seconds      Memory Limit: 65536 KB Alice and Bob like eating cake very muc...

zoj3905 Cake (dp)

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3905 题意:有n(n is even)个蛋糕,对于每个蛋糕Alic...

zoj3905 Cake

Time Limit: 4 Seconds      Memory Limit: 65536 KB Alice and Bob like eating cake very much. One day...

zoj3905

Cake Time Limit: 4 Seconds      Memory Limit: 65536 KB Alice and Bob like eating cake very much. ...

HDU3905 DP

通过这题看出DP的功底还是不行啊,仍需提高。 题意:一节课有N分钟,ZZ需要睡M分钟,每分钟都有其效益值,ZZ若听课,则必须连续听L分钟以上。问能获得的最大效益值。M分钟的睡眠可以不连续 题解:动...
  • AcCry
  • AcCry
  • 2011-08-03 18:48
  • 1558

ZOJ 补题 3903 && 3905 && 3911 (ZOJ Monthly, October 2015)

ZOJ 3903 Ants 【题目链接】:click here~~ 【题目大意】给出一个长方体的最长边的长度,求在所有可能的情况下,在表面上从一个对角线到另一个对角线经过路径的平方和 【思路】: 只给...

zoj 3494 BCD Code AC自动机+数位dp

一道很强大的数位dp+ac自动机题。题目要求a~bjian

ZOJ2111 HDU1011 Starship Troopers, 树形DP

经典的树形DP题, 题解请看代码中的注释 /*************************************************************************...

[ZOJ 3682] E - Cup 3 (背包DP计数 + 滚动数组)

ZOJ - 3682 有S1S_1个球迷支持巴萨,S2S_2个球迷支持皇马 球场有NN个方阵,每个可以坐 kik_i个球迷 安排球迷使得一个方阵要么全是支持巴萨的 要么全是支持皇...

zoj 3777(状态压缩dp)

// 题意:求一个长度为n的序列 所有的排列组成的疲劳值大于m的数量 // 也就是求一个矩阵每行每列只能取一个得到的所有数字大于m共有多少种 // n最大为12 m最大为500 所以采用状态压缩 //...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)