zoukankan      html  css  js  c++  java
  • BZOJ 2151 种树

    贪心+priority_queue。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #define maxn 200050
    using namespace std;
    long long n,val[maxn],ans=0,m;
    bool vis[maxn];
    struct node
    {
        long long w,pos;
        friend bool operator < (node x,node y)
        {
            return x.w<y.w;
        }
    };
    priority_queue <node> q;
    int main()
    {
        memset(vis,true,sizeof(vis));
        scanf("%lld%lld",&n,&m);
        for (long long i=0;i<n;i++)
        {
            scanf("%lld",&val[i]);
            node now;
            now.w=val[i];now.pos=i;
            q.push(now);
        }
        if (m>=(n/2)+1) {printf("Error!
    ");return 0;}
        long long cnt=0;
        do
        {
            node now=q.top();
            q.pop();
            if (vis[now.pos]==true)
            {
                cnt++;
                long long left=(now.pos-1+n)%n,right=(now.pos+1+n)%n;
                while (vis[left]==false) 
                    left=(left-1+n)%n;
                while (vis[right]==false)
                right=(right+1+n)%n;
                vis[left]=false;vis[right]=false;
                node then;
                then.w=val[left]+val[right]-val[now.pos];
                then.pos=now.pos;
                q.push(then);
                ans=ans+val[now.pos];
                val[now.pos]=val[left]+val[right]-val[now.pos];
            }
        }while (cnt!=m);
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    C++ reference
    C++ const 限定符
    POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
    poj 2185
    poj 2406
    poj 2752
    hdu 6171
    hdu 6127
    uva 3708
    hdu 6092
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5719908.html
Copyright © 2011-2022 走看看