现在的位置: 首页 > 综合 > 正文

【BZOJ】【P1334】【Baltic2008】【Elect】【题解】【DP】

2017年04月18日 ⁄ 综合 ⁄ 共 454字 ⁄ 字号 评论关闭

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1334

一开始直接贪心,0msWA……

其实这是个背包……太水了直接看代码吧

Code:

#include<bits/stdc++.h>
using namespace std;
const int maxn=333;
int n,ans;
int w[maxn],sum,f[100010];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>w[i],sum+=w[i];
	int m=sum/2; sort(w+1,w+1+n,greater<int>());
	for(int i=1;i<=n;i++)for(int j=sum;j>=w[i];j--)
	if((f[j-w[i]]<=m&&f[j-w[i]]+w[i]>m)||f[j-w[i]]+w[i]<=m)
	f[j]=max(f[j],f[j-w[i]]+w[i]);
	cout<<*max_element(f+1,f+1+sum)<<endl;
}

抱歉!评论已关闭.