2426: [HAOI2010]工厂选址
2426: [HAOI2010]工厂选址
代码:
/*
贪心:
奇妙!!!!!
因为所有的煤矿不是给新厂,就是给旧厂(而且旧厂的得到b)
为了使费用最小,感性的理解,那么一个煤矿给哪个厂,取决于到哪个厂近。
所以开始假设所有的煤都给了新厂,然后取出b的给旧厂,取哪个煤矿呢?
当然是这个煤矿给了旧厂的费用比给了新厂的费用少(c[0][i]-c[x][i]),所以按照这个排序,依次取出。
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for (;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} #define rep(i,a,b) for(int i=(a); i<=(b); ++i)
#define pa pair<int,int>
const int M = ; // 煤矿
const int N = ; // 发电厂 int a[M],c[N][M],h[N];
int m,b,n,ans1,ans2 = 1e9;
pa T[M]; void solve(int x) {
int Cost = h[] + h[x], B = b;
rep (i,,m) {
Cost += c[x][i] * a[i];
T[i].first = (c[][i]-c[x][i]);
T[i].second = i;
}
sort(T+,T+m+);
rep (i,,m) { //--m,1
int j = T[i].second;
if (B >= a[j]) {
Cost += T[i].first * a[j]; // -- Cost-=...
B -= a[j];
}
else {
Cost += T[i].first * B;
break;
}
}
if (Cost < ans2)
ans2 = Cost,ans1 = x;
} int main() {
m = read(),b = read(),h[] = read(),n = read();
rep (i,,m) a[i] = read();
rep (i,,n) h[i] = read();
rep (i,,n) rep (j,,m) c[i][j] = read(); // -- rep(i,1,n)
rep (i,,n) solve(i); // -- rep(i,0,n)
cout << ans1 << "\n" << ans2;
return ;
}
2426: [HAOI2010]工厂选址的更多相关文章
- BZOJ 2426: [HAOI2010]工厂选址
2426: [HAOI2010]工厂选址 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 364 Solved: 248[Submit][Status ...
- 【BZOJ2426】[HAOI2010]工厂选址(贪心)
[BZOJ2426][HAOI2010]工厂选址(贪心) 题面 BZOJ 洛谷 题解 首先看懂题目到底在做什么. 然而发现我们显然可以对于每个备选位置跑一遍费用流,然后并不够优秀. 不难发现所有的位置 ...
- BZOJ2426 [HAOI2010]工厂选址
Description 某地区有m座煤矿,其中第i号矿每年产量为ai吨,现有火力发电厂一个,每年需用煤b吨,每年运行的固定费用(包括折旧费,不包括煤的运费)为h元,每吨原煤从第i号矿运到原有发电厂的运 ...
- HAOI2010 工厂选址
题目链接:戳我 数组开小火葬场qwqwq 就是一个贪心吧.对于一个数,我们知道只有两种摆放方式.所以我们可以先都放到新的里面,然后做一下新的-原先的差,按照差从大到小排序,依次提取数值减去即可. 代码 ...
- 洛谷P2514||bzoj2426 [HAOI2010]工厂选址
洛谷P2514 bzoj2426 其实是个简单的贪心,然而不适合在脑子不清醒的时候做...看不懂题意续了1个小时 很容易发现应该枚举新建哪个发电厂,对于这种方案就是取其中b吨煤运到原来发电厂,取剩下( ...
- 【HAOI2010】工厂选址题解
题目描述 某地区有m座煤矿,其中第i号矿每年产量为ai吨,现有火力发电厂一个,每年需用煤b吨,每年运行的固定费用(包括折旧费,不包括煤的运费)为h元,每吨原煤从第i号矿运到原有发电厂的运费为Ci0(i ...
- 【P2514】工厂选址(贪心)
看到题了不首先应该看看数据范围确定一下算法么,这个题的数据范围大约可以支持到O(nmlogm),所以肯定不是搜索什么的,DP貌似至少也要n^2m,所以可以想一些其他的.对于题目的输入,我们发现这些输入 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj 2426 【HAOI2010】工程选址 贪心
[HAOI2010]工厂选址 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 447 Solved: 308[Submit][Status][Disc ...
随机推荐
- POSIX多线程—线程基本概念
http://blog.csdn.net/livelylittlefish/article/details/7957007 作者:阿波链接:http://blog.csdn.net/livelylit ...
- Hibernate的优缺点:
1.Hibernate的优缺点:优点:1.程序更加面向对象:2.提高了生产率:3.方便移植(修改配置文件):4.无侵入性.缺点:1.效率比JDBC略差:2.不适合批量操作. 总的来说,hibernat ...
- html5中event获取data和class
获取data和class var tare=$(e.relatedTarget).data("id");var tar=event.target;console.log(tare) ...
- Python—面向对象05 反射
反射,通过字符串映射到对象属性 class People: country='China' def __init__(self,name,age): self.name=name self.age ...
- C#基础实例
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- RHEL6 建立DVD repo
1.准备镜像挂载目录 #mkdir /media/repo_dvd 2.制作镜像文件 #cp /dev/cdrom /opt/rhel_dvd.iso<BR> 或者 #dd if=/dev ...
- 【Win10分区教程】
Win10怎么分区?如何为Win10硬盘分区? 注:本教程适用于Win7.Win8.Win8.1和Win10系 到了Windows10时代,TB级硬盘已经很普及了,那么在Win10系统下如何为这些大容 ...
- Co. - Microsoft - Windows - Tomcat、JDK、MySQL通过 Inno 集成为exe部署包
需求 客户设备为Windows系统,需要部署公司产品,因此将Tomcat.JDK.MySQL.Java.war 打包整合成exe文件,Windows下一键部署安装. 最佳实践 1.下载免安装的mysq ...
- redis 带入的挖矿病毒 qW3xT.2 wnTKYg 解决方法
最近我的阿里云ecs 老是收到 云盾态势感知系统检测到异常 top -c 后发现一个 疑似病毒 /tmp/qW3xT.2 看到网友们的解决方案 试过之后效果不错,可以用的 知道wnTKYg是什么鬼之 ...
- input输入框类型
输入大小写字母.数字.下划线: <input type="text" onkeyup="this.value=this.value.replace(/[^\w_]/ ...