zoukankan      html  css  js  c++  java
  • 2426: [HAOI2010]工厂选址

    2426: [HAOI2010]工厂选址

    链接

    代码:

     1 /*
     2 贪心:
     3     奇妙!!!!!
     4     因为所有的煤矿不是给新厂,就是给旧厂(而且旧厂的得到b) 
     5     为了使费用最小,感性的理解,那么一个煤矿给哪个厂,取决于到哪个厂近。
     6     所以开始假设所有的煤都给了新厂,然后取出b的给旧厂,取哪个煤矿呢?
     7     当然是这个煤矿给了旧厂的费用比给了新厂的费用少(c[0][i]-c[x][i]),所以按照这个排序,依次取出。 
     8 */
     9 #include<bits/stdc++.h>
    10 using namespace std;
    11 typedef long long LL;
    12 
    13 inline int read() {
    14     int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
    15     for (;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;
    16 }
    17 
    18 #define rep(i,a,b) for(int i=(a); i<=(b); ++i) 
    19 #define pa pair<int,int>
    20 const int M = 50010; // 煤矿 
    21 const int N = 55; // 发电厂 
    22 
    23 int a[M],c[N][M],h[N];
    24 int m,b,n,ans1,ans2 = 1e9;
    25 pa T[M];
    26 
    27 void solve(int x) {
    28     int Cost = h[0] + h[x], B = b;
    29     rep (i,1,m) {
    30         Cost += c[x][i] * a[i];
    31         T[i].first = (c[0][i]-c[x][i]);
    32         T[i].second = i;
    33     }
    34     sort(T+1,T+m+1);
    35     rep (i,1,m) { //--m,1
    36         int j = T[i].second;
    37         if (B >= a[j]) {
    38             Cost += T[i].first * a[j]; // -- Cost-=...
    39             B -= a[j];
    40         }
    41         else {
    42             Cost += T[i].first * B;
    43             break;
    44         }
    45     }
    46     if (Cost < ans2) 
    47         ans2 = Cost,ans1 = x;
    48 }
    49 
    50 int main() {
    51     m = read(),b = read(),h[0] = read(),n = read();
    52     rep (i,1,m) a[i] = read();
    53     rep (i,1,n) h[i] = read();
    54     rep (i,0,n) rep (j,1,m) c[i][j] = read(); // -- rep(i,1,n)
    55     rep (i,1,n) solve(i); // -- rep(i,0,n)
    56     cout << ans1 << "
    "  << ans2;     
    57     return 0;
    58 }
  • 相关阅读:
    DBCC修复不同情况下的损坏
    Python单例模式的4种实现方法
    osx 安装redis
    tornado系列文章
    Python中__init__和__new__的区别详解
    Tornado源码分析之http服务器篇
    tornado.ioloop.IOLoop相关文章
    How to use POST method in Tornado?
    https://github.com/diogobaeder/pycket
    Frequently Asked Questions
  • 原文地址:https://www.cnblogs.com/mjtcn/p/9279284.html
Copyright © 2011-2022 走看看