1 条题解

  • 0
    @ 2023-8-18 14:15:55
    #include <cmath>
    #include <cstdio>
    #include <cstdlib>
    #include <memory.h>
    #include <algorithm>
    #include <vector>
    #include <deque>
    using namespace std;
    
    namespace dts
    {
        typedef long long ll;
        
        int n,ans,a[50],num[50],rk[50],sum[50];
        ll cf[50];
        
        void qs(int l,int r)
        {
            int i=l,j=r;
            for (int mid=a[(l+r)>>1];i<j;)
            {
                while (a[i]>mid)
                    i++;
                while (a[j]<mid)
                    j--;
                if (i<=j)
                {
                    swap(a[i],a[j]);
                    swap(num[i],num[j]);
                    i++,j--;
                }
            }
            if (l<j)
                qs(l,j);
            if (i<r)
                qs(i,r);
        }
        
        void dfs(int pos,ll sta,int cnt)
        {
            if (pos<n)
            {
                if (cnt+sum[n-1]-sum[pos-1]<=ans)
                    return;
                if (!(sta&cf[pos]))
                    dfs(pos+1,sta|((ll)1<<pos),cnt+a[pos]);
                dfs(pos+1,sta,cnt);
            }
            ans=max(ans,cnt);
        }
        
        void main()
        {
            scanf("%d",&n);
            for (int i=0;i<n;i++)
                scanf("%d",&a[i]),num[i]=i;
            qs(0,n-1);
            for (int i=0;i<n;i++)
                rk[num[i]]=i;
            memset(cf,0,sizeof(cf));
            for (int x,y;~scanf("%d%d",&x,&y);)
            {
                x--,y--;
                cf[rk[x]]|=((ll)1<<rk[y]);
                cf[rk[y]]|=((ll)1<<rk[x]);
            }
            sum[0]=a[0];
            for (int i=1;i<n;i++)
                sum[i]=sum[i-1]+a[i];
            ans=0;
            dfs(0,(ll)0,0);
            printf("%d\n",ans);
        }
    }
    
    int main()
    {
        dts::main();
    }
    
    • 1

    信息

    ID
    136
    时间
    1000ms
    内存
    256MiB
    难度
    8.5
    标签
    递交数
    4
    已通过
    1
    上传者