1102年オフ牛

EDITORIAL

それでも自閉症ゲームlb.png

T1グッズコレクション

アイデア

使用するプライオリティキューを

例えば、サンプル

4 7
5 5 2
1 3 2
1 2 7
1 4 5

(面白い、独自のポイントを右に(追加してください。

0.png

右側には、キューに投入されたポイントを通過することができます。

だから、最初の品物を収集するために、3、5に行って、私たちは2の値を強制する必要があります

製品は、総貨物7品を収集するために、4、2に行っているのに十分ではありません、我々は値5を強制する必要があります。貨物は十分に、答え​​は5です。

コード

namespace Sol{
    struct node{
        int v,to,net;
    }e[maxn<<1];
    int n,M,tot,ans,cnt;
    int head[maxn],a[maxn];
    bool vis[maxn];
    priority_queue<pair<int,int> >q;
    inline void add(int x,int y,int z){
        e[++tot].v=y; e[tot].to=z;
        e[tot].net=head[x]; head[x]=tot;
    }  
    inline int Main(){
        n=read(); M=read();
        for(int i=2;i<=n;i++) a[i]=read();  
        for(int i=1;i<n;i++){
            int x=read(),y=read(),z=read();
            add(x,y,z); add(y,x,z);
        }
        vis[1]=1;
        for(int i=head[1];i;i=e[i].net){
            int y=e[i].v;
            vis[y]=1;
            q.push(make_pair(-e[i].to,y));
        }
        while(ans<M){
            int x=-q.top().first;//武力值
            int y=q.top().second;//走到的节点
            q.pop();
            ans+=a[y];//收集到的总货物
            cnt=max(cnt,x);//比较武力值
            for(int i=head[y];i;i=e[i].net){
                int yy=e[i].v;
                if(vis[yy]) continue;
                vis[yy]=1;
                q.push(make_pair(-e[i].to,yy));
            }
        }
        printf("%d",cnt);
        return 0;
    }
}

T2グッズグループ

アイデア

ここではそこの記事のブログで、私は考えているが、それでも私の定数は、比較的良好な?

ポストはブログなぜ?私は怠け者だからts.png

コード

namespace Sol{ 
    int n,M;
    int f[maxn],s[maxn],a[maxn];
    int maxx,minn;
    inline int Main(){
        n=read(); M=read();
        for(int i=1;i<=n;i++){
            a[i]=read();
            s[i]=s[i-1]+a[i];
        }
        for(int i=1;i<=n;i++){
            f[i]=f[i-1]-s[i-1];
            maxx=a[i]; minn=a[i];
            for(int j=i-2;j>=0&&s[j]>=s[i]-M;j--){
                maxx=max(maxx,a[j+1]);
                minn=min(minn,a[j+1]);
                if(f[i]>f[j]-s[j]+maxx-minn)
                    f[i]=f[j]-s[j]+maxx-minn;
            }
            f[i]+=s[n];
        }
        printf("%lld",f[n]);
        return 0;
    }
}

地形T3の計算

更新を待って、書きませんts.png
[\ mathcal \クワッド終了\ \]

\ [あなたの半分のうち月、まだまだ10代の\]

おすすめ

転載: www.cnblogs.com/cbyyc/p/11790277.html