码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 732e [贪心][stl乱搞]

时间:2016-10-19 22:02:01      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

/*
不要低头,不要放弃,不要气馁,不要慌张
题意:
给n个插座,m个电脑。每个插座都有一个电压,每个电脑都有需求电压。
每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整。
有无限个变压器供应。
问最多能使得多少个插座与电脑匹配,使得电压一致。
如果有多种方案,输出需要变压器总数最小的那种。
输出匹配数量
输出每个插座需要接多少个变压器。输出每台电脑匹配哪个插座。

思路:
贪心 乱搞
先从小到大将插座排序,然后从地第一个插座开始,不断除以2上取整。不断找是否可以匹配。找到匹配就停止。
记录个数即可。
这样可以保证所用变压器总数最少。
*/







#include<bits/stdc++.h>
#define N 200050
using namespace std;
struct st{
    st(){}
    st(int a,int b){
        aa=a;id=b;
    }
    int aa,id;
};

bool operator < (const st &a,const st &b){
    return a.aa<b.aa;
}
bool cmp(st a,st b){
    return a.aa<b.aa;
}
multiset<st>b;
st a[N];
int ansa[N],ansb[N];
int main()
{
    int n,m;
    st tmp;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&tmp.aa);
        tmp.id=i;
        b.insert(tmp);
    }
    for(int i=1;i<=m;i++){
        scanf("%d",&a[i].aa);
        a[i].id=i;
    }
    sort(a+1,a+1+m,cmp);
    long long c=0;
    for(int i=1;i<=m;i++){
        int num=0;
        bool ok=0;
        while(a[i].aa>1){
            if(b.find(st(a[i].aa,0))!=b.end()){
                ok=1;
                c+=num;
                tmp=*b.find(st(a[i].aa,0));
                ansa[a[i].id]=num;
                ansb[tmp.id]=a[i].id;
                b.erase(b.find(st(a[i].aa,0)));
                break;
            }
            a[i].aa=(a[i].aa+1)/2;
            num++;
        }
        if(!ok){
            if(b.find(st(a[i].aa,0))!=b.end()){
                ok=1;
                c+=num;
                tmp=*b.find(st(a[i].aa,0));
                ansa[a[i].id]=num;
                ansb[tmp.id]=a[i].id;
                b.erase(b.find(st(a[i].aa,0)));
            }
        }
    }
    int dd=b.size();
    dd=n-b.size();
    printf("%d %lld\n",dd,c);
    for(int i=1;i<=m;i++){
        printf("%d ",ansa[i]);
    }
    puts("");
    for(int i=1;i<=n;i++){
        printf("%d ",ansb[i]);
    }
}

 

Codeforces 732e [贪心][stl乱搞]

标签:

原文地址:http://www.cnblogs.com/tun117/p/5978861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!