Luogu P4394 [BOI2008]Elect 选举

Posted y15beta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu P4394 [BOI2008]Elect 选举相关的知识,希望对你有一定的参考价值。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int n,a[100005],dp[100005],sum,half,ans;

int main()
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
        sum+=a[i];
    
    half=sum>>1;
    sort(a+1,a+n+1);
    for(int i=n;i>=1;i--)
        for(int j=sum;j>=0;j--)
            if(j>=a[i])dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
            if(dp[j]>half&&dp[j]-a[i]<=half)
                ans=max(ans,dp[j]);
            
        
    
    printf("%d\n",ans);

以上是关于Luogu P4394 [BOI2008]Elect 选举的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P4392 [BOI2007]Sound 静音问题

[Luogu4390][BOI2007]Mokia 摩基亚

解题:BOI 2008 Elect

[BOI2008] Elect - 背包dp

题解-BOI 2004 Sequence

解题报告:luogu P1892