原题链接  https://www.luogu.org/problem/P2663

很容易看出来是个背包问题嘛:

体积是总分的一半,求最高分,每个同学选或不选,是个 01背包问题

自信地交上去之后发现只有 90pts ,为什么呢?

是不是忘了个条件啊喂,人家还要选 n/2 个人呐

多一个条件就加一个维度。——zhx

有了第二个限制:重量是 n/2 ,这样就从一个 01背包问题转化成了二维背包问题,我们只需在 for 循环中多枚举一层 1~n/2 问题就搞定了。

上AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int read()
{
char ch=getchar();
int a=,x=;
while(ch<''||ch>'')
{
if(ch=='-') x=-x;
ch=getchar();
}
while(ch>=''&&ch<='')
{
a=(a<<)+(a<<)+(ch-'');
ch=getchar();
}
return a*x;
}
long long n,sum;
long long test[];
long long f[][]; //f[i][j]:选了i个人总分不超过j的最大分数
int main()
{
n=read();
for(int i=;i<=n;i++)
{
test[i]=read(); //每个人的分数
sum+=test[i]; //总分
}
for(int k=;k<=n;k++) //枚举每个人
{
for(int i=n/;i>=;i--) //限制人数的这个条件(重量)
{
for(int j=sum;j>=test[k];j--) //限制分数的这个条件(体积)
{
f[i][j]=max(f[i][j],f[i-][j-test[k]]+test[k]); //选或不选取max
}
}
}
printf("%lld",f[n/][sum/]);
return ;
}

最新文章

  1. 【JUC】JDK1.8源码分析之ConcurrentSkipListSet(八)
  2. jQuery实现Checkbox中项目开发全选全不选的使用
  3. convert from base 10 to base 2
  4. 51nod1406 与查询
  5. Scrambled Polygon - POJ 2007(求凸包)
  6. OTG中的ID脚风波释疑
  7. VSTO学习笔记(十四)Excel数据透视表与PowerPivot
  8. UVa 11408 - Count DePrimes
  9. lucene两个分页操作
  10. .net设计模式之装饰模式
  11. FusionCharts for Flex的属性和事件
  12. Linux安装Gradle
  13. GiBbook实用配置以及插件
  14. 车载文档记录(ROM)
  15. 20155232《网络对抗》Exp4 恶意代码分析
  16. 【最大流之ek算法】HDU1532 求最大流
  17. CodeIgniter Doctrine2基本使用(二)(转)
  18. P3871 [TJOI2010]中位数
  19. SQL注入备忘录
  20. 从零开始学JavaScript一(简介)

热门文章

  1. JFinal(2)JFinal 学习资料
  2. [NOIP2018模拟赛10.25]瞎搞报告
  3. Linux 命令集锦
  4. my SO 链接opencv静态库一些FUCKing的笔记 opencv410 有毒
  5. 理解JVM之垃圾回收
  6. python读取图像后变换通道顺序
  7. 【Jenkins】修改Ubuntu下的jenkins端口号
  8. 用js刷剑指offer(树的子结构)
  9. MBG(Mybatis Generator)配置
  10. synchronized 和 volatile 的区别是什么?(未完成)