T了两发,DP方程很简单粗暴

dp[i][j][k]:用前i物品使得容量分别为j和k的背包恰好装满

背包的调用只需一次即可,第一次T就是每次check都丧心病狂地背包一次

对于sum的枚举,其实i j枚举到sum/2就可以了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define scan(a) scanf("%d",&a)
#define rep(i,j,k) for(int i = j; i <= k; i++)
using namespace std;
const int maxn = 1666; bool F[maxn][maxn];
int len[maxn],n;
double query(double a,double b,double c){
double p=(a+b+c)/2.0;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
bool dp[2][maxn][maxn];
int C[maxn],W[maxn],V1,V2;
bool bag(int a,int b){
V1=a,V2=b;
rep(i,1,n){
dp[i&1][0][0]=1;
rep(j,0,V1){
rep(k,0,V2){
dp[i&1][j][k]|=dp[i-1&1][j][k];//not be used
if(len[i]<=j) dp[i&1][j][k]|=dp[i-1&1][j-len[i]][k];
if(len[i]<=k) dp[i&1][j][k]|=dp[i-1&1][j][k-len[i]];
}
}
}
return dp[n&1][V1][V2];
} #define check(i,j) dp[n&1][i][j]
int main(){
while(scan(n)!=EOF){
int sum = 0;
rep(i,1,n) scan(len[i]);
rep(i,1,n) sum+=len[i];
memset(F,0,sizeof F);
double t=(double)sum/2;
int tt=sum/2+1;
int maxi=0,maxj=0;
rep(i,1,tt){
rep(j,1,tt){
if(i+j>t){
F[i][j]=1;
maxi=i,maxj=j;
} }
}
double ans=0;
bag(maxi,maxj);
rep(i,1,tt){
rep(j,1,tt){
int k = sum-i-j;
if(F[i][j]&&k>=1&&i+j>k&&i+k>j&&j+k>i&&check(i,j)){
ans = max(ans,query(i,j,k));
}
}
}
long long aans= ans*100;
printf("%lld\n",aans>0?aans:-1);
}
return 0;
}

最新文章

  1. MapReduce运行过程以及原理
  2. Part 1: Running Oracle E-Business Suite on Oracle Cloud
  3. CSS的一些小事
  4. BZOJ2456 mode
  5. equals 与 == 的区别和用法(C# &amp; Java)【转】
  6. Ant、Maven、Gradle
  7. YII中文件上传
  8. iOS: 属性列表介绍 Introduction to Property Lists
  9. apue
  10. js如何获取客户端IP
  11. HTML5与css3权威指南(一)
  12. Eclipse 项目导航字体设置 左侧树字体
  13. TDG今日成立!
  14. Git-本地项目和远程项目关联
  15. MongoDB 副本集 pymongo使用
  16. backdoor-factory
  17. idea自动生成文档注释
  18. md5sum命令详解
  19. JavaScript设计模式-----模板方法模式
  20. hash算法原理详解

热门文章

  1. 27-拓扑排序-poj1094
  2. solidity mapping of mapping
  3. win32多线程(三) 死锁
  4. anacondas 下 安装xgboost &amp; keras
  5. 468C Hack it!
  6. ps怎么修改gif动图播放速度
  7. Shiro——MD5加密
  8. js 清空 input[type=file]的值
  9. (转)菜鸟去重复之Sql
  10. bzoj 3224/Tyvj 1728 普通平衡树(splay)