zoukankan      html  css  js  c++  java
  • jury compromise

    /*Code by Codercjh*/
    /*time  80ms*/
    /*status  Accepted*/
    /*problem jury compromise*/
    #include<bits/stdc++.h>
    #define fr(i,a,b) for(int i=(a);i<=(b);++i)
    #define rf(i,a,b) for(int i=(a);i>=(b);--i)
    #define min(a,b) (a<b?a:b)
    #define max(a,b) (a>b?a:b)
    using namespace std;
    typedef long long ll;
    template<typename T>
    inline void read(T &x){
        char c=getchar();T fh=0;bool f=false;
        while(!isdigit(c))f|=(c=='-'),c=getchar();
        while(isdigit(c))fh=(fh<<1)+(fh<<3)+(c^48),c=getchar();
        x=f?-fh:fh;
        return;
    }
    
    int sump,sumd,cnt,ans[205],d[205][25][805],a[205],b[205],f[25][805],n,m,kase;
    void print(int i,int j,int k){
        if(j)print(d[i][j][k]-1,j-1,k-(a[d[i][j][k]]-b[d[i][j][k]])),ans[++cnt]=d[i][j][k];
        else return;
    }
    int main(){
        read(n),read(m);
        while(n&&m){
            fr(i,1,n)read(a[i]),read(b[i]);
            memset(f,0xcf,sizeof(f));f[0][400]=0;
            fr(i,1,n){
             fr(j,1,m)
              fr(k,0,800)
               d[i][j][k]=d[i-1][j][k];
             rf(j,m,1)
              fr(k,0,800){
               if(!(k-(a[i]-b[i])<0||k-(a[i]-b[i])>800)&&f[j][k]<f[j-1][k-(a[i]-b[i])]+a[i]+b[i]){
                   f[j][k]=f[j-1][k-(a[i]-b[i])]+a[i]+b[i];
                   d[i][j][k]=i;
               }
             }
            }
            int ansi=1e9;
            fr(i,0,400){
                if(f[m][400+i]>=0&&f[m][400-i]<=f[m][400+i]){
                    ansi=400+i;
                    break;
                }
                else 
                 if(f[m][400-i]>=0){
                     ansi=400-i;
                     break;
                 }
            }
            sump=sumd=cnt=0;
            print(n,m,ansi);
            fr(i,1,cnt)sump+=a[ans[i]],sumd+=b[ans[i]];
            printf("Jury #%d
    Best jury has value %d for prosecution and value %d for defence:
    ",++kase,sump,sumd);
            fr(i,1,cnt)printf(" %d",ans[i]);puts("
    ");
            read(n),read(m);
        }
        return 0;
    } 
  • 相关阅读:
    socket.io
    CUDA升级后
    QT安装
    windows时钟服务设置
    QT的DPI支持
    cudaDeviceProp结构体
    C#调用C++的dll各种传参
    「LibreOJ#516」DP 一般看规律
    「LibreOJ#515」贪心只能过样例 (暴力+bitset)
    [Codeforces888E]Maximum Subsequence(暴力+meet-in-the-middle)
  • 原文地址:https://www.cnblogs.com/coder-cjh/p/12046438.html
Copyright © 2011-2022 走看看