• 【P2514】工厂选址(贪心)


    看到题了不首先应该看看数据范围确定一下算法么,这个题的数据范围大约可以支持到O(nmlogm),所以肯定不是搜索什么的,DP貌似至少也要n^2m,所以可以想一些其他的。对于题目的输入,我们发现这些输入很像是图论里的,所以可以稍微想一想,但是点的个数略多,直接跑边。。这个图貌似挺稠密的,所以也不行。这么多路都走不通,就自然而然想到贪心。我们对于每一个任意选址,煤只可能运到老的发电厂和新的发电厂其中之一,然后发电厂的个数比较小,我们就可以枚举所有的新发电厂的位置,然后进行贪心。

    对于贪心的策略,还是比较明显的,显然

    我们先假设所有的煤都要运到新的发电厂(因为它没有使用上限,可以无限放过去),然后对每个煤厂,计算一个旧发电厂和新发电厂的运费差值,然后把它作为关键值排序,从前B小吨煤中运到旧煤厂,这么就得出正解。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define re register
    using namespace std;
    int b,c[50005][55],m,n,s[50005],h[100001],a[1000001],d[50001],H,cost[50001],id[50001];
    int maxx=999999999,ans;
    inline bool cmp(const int &x,const int &y)
    {
        return cost[x]<cost[y];
    }
    int main()
    {
        cin>>m>>b>>H>>n;
        for(re int i=1;i<=m;i++) cin>>a[i];
        for(re int i=1;i<=n;i++) cin>>h[i];
        for(re int i=0;i<=n;i++)
            for(re int j=1;j<=m;j++)
                cin>>c[j][i];
        for(re int i=1;i<=n;i++)
        {
            int cnt=h[i],t=b;
            for(re int j=1;j<=m;j++)
            {
                id[j]=j;
                cost[j]=c[j][0]-c[j][i];
                cnt+=c[j][i]*a[j];
            }
            sort(id+1,id+m+1,cmp);
            for(re int j=1;j<=m;j++)
            {
                if(t>=a[id[j]])
                {
                    t-=a[id[j]];
                    cnt+=a[id[j]]*cost[id[j]];
                }
                else
                {
                    cnt+=cost[id[j]]*t;
                    break;
                }
            }
            if(cnt<maxx)
            {
                maxx=cnt;
                ans=i;
            }
        }
        cout<<ans<<endl<<maxx+H;
    }
  • 相关阅读:
    微信小程序开发框架技术选型
    WebApiThrottle限流框架使用手册
    MicroService 微服务架构模式简述
    .net Core 微服务框架 surging 使用
    C#最佳工具集合:IDE、分析、自动化工具等
    神经网络编程入门
    ABP+AdminLTE+Bootstrap Table aspnetboilerplate 学习
    转 Web用户的身份验证及WebApi权限验证流程的设计和实现
    C# 调用webservice 几种办法(转载)
    C++ sort函数用法
  • 原文地址:https://www.cnblogs.com/victorique/p/8427025.html
Copyright © 2020-2023  润新知