[BZOJ2426][HAOI2010] 工厂选址 (神奇的贪心)
来源:互联网 发布:vbscript和vb 编辑:程序博客网 时间:2024/06/05 07:49
这道题思路很强,题面比较坑
旧厂必须只被供给b吨煤(不能多也不能少),其余煤必须都给新厂。
枚举所有新厂,把所有的煤都给新厂,再求出所有煤矿的(旧厂运费-新厂运费)值,从小到大排序,按顺序把旧厂该得的煤拿回来。这个思路很强。
#include<bits/stdc++.h>#define rep(i,j,k) for(int i=(int)j; i<=(int)k; ++i)using namespace std;const int N=55, M=50010, INF=1000000000;int m, b, n, vi, ans, id;int h[N], C[N][M], a[M];struct K{int cha,bel;bool operator < (const K & rhs)const { return cha<rhs.cha; }}sub[M];inline void getint(int &x){x=0; char c=getchar();while(!(c>='0'&&c<='9')) c=getchar();while(c>='0'&&c<='9') x=x*10+c-'0', c=getchar();}int main(){scanf("%d%d%d%d",&m,&b,&h[0],&n);rep(i,1,m) getint(a[i]);rep(i,1,n) getint(h[i]);rep(i,0,n) rep(j,1,m) getint(C[i][j]);int cost, tmp, q; ans=INF;rep(i,1,n){cost = h[0]+h[i]; tmp = b;rep(j,1,m){ cost+=a[j]*C[i][j]; sub[j]=(K){C[0][j]-C[i][j],j}; }// 把煤都给新厂 sort(sub+1,sub+m+1);rep(j,1,m){// 把煤还给旧厂 q = sub[j].bel;if(tmp>a[q]){ cost+=a[q]*sub[j].cha; tmp-=a[q]; } else{ cost+=tmp*sub[j].cha; break; }}if(cost<ans){ ans=cost; id=i; }}printf("%d\n%d\n",id,ans);while(1);return 0;}
阅读全文
0 0
- [BZOJ2426][HAOI2010] 工厂选址 (神奇的贪心)
- bzoj2426 [HAOI2010]工厂选址 读题+贪心
- 【BZOJ2426】【HAOI2010】工程选址
- 2426: [HAOI2010]工厂选址 贪心
- 2426: [HAOI2010]工厂选址
- 神奇的贪心 + DP
- 贪心算法--邮局选址,输油管道问题
- 党(雾) 神奇的模拟赛 贪心
- 选址
- 神奇的设计模式之工厂方法模式
- 神奇的魔术师——简单工厂模式
- hdu_1078_FatMouse and Cheese_神奇的贪心_动态规划_算不上是dp
- Python: 设计模式 之 工厂模式例(2)(神奇的Python)
- [图的中心]商店选址问题
- 店铺选址的十大风水禁忌
- Bzoj3790:神奇项链:manacher+线段树+贪心
- [BZOJ3790]神奇项链(manacher+贪心)
- 【BZOJ 3790】神奇项链 回文树+贪心
- Mac Pro 安装mysql
- 走穿java23种设计模式-5原型模式
- 第二章数据类型十个问题
- 第二章 SQL命令参考-ALTER DATABASE
- 【BZOJ3995】【SDOI2015】道路修建
- [BZOJ2426][HAOI2010] 工厂选址 (神奇的贪心)
- [bzoj-4808]马 题解
- 遇到的保存网页的问题
- JZOJsenior1168.【NOIP动态规划专题】合唱队形
- bzoj2794 [Poi2012]Cloakroom ( 背包DP+离线 )
- luogu 1057 传球游戏
- 第9章 中断和动态时钟显示
- 例题6-3 矩阵链乘 UVA442
- Android ADB emulator-5554 unauthorized