BZOJ 1110: [POI2007]砝码Odw( 贪心 )
2015-08-13 16:35
411 查看
![](http://images0.cnblogs.com/blog2015/723896/201508/131633104571831.png)
ORZjcvb...
#include<bits/stdc++.h> using namespace std; const int maxn = 100009; int N, M, item[maxn], V[maxn]; vector<int> o, cnt, Div; int main() { cin >> N >> M; for(int i = 0; i < N; i++) scanf("%d", V + i); for(int i = 0; i < M; i++) scanf("%d", item + i); sort(item, item + M); o.push_back(item[0]); cnt.push_back(1); for(int i = 1; i < M; i++) if(item[i] == item[i - 1]) cnt[cnt.size() - 1]++; else { o.push_back(item[i]); cnt.push_back(1); } int S = o.size(); Div.resize(S); for(int i = 0; i < N; i++) { for(int j = S - 1; ~j; j--) { int t = V[i] / o[j]; Div[j] += t; V[i] -= t * o[j]; } } int ans = 0; for(int i = 0; i < S; i++) { if(cnt[i] > Div[i]) { for(int j = i + 1; j < S && Div[i] < cnt[i]; j++) if(Div[j]) { int c = 1; for(; o[j] / o[i] * c < cnt[i] - Div[i]; c++) if(c == Div[j]) break; Div[j] -= c; Div[i] += o[j] / o[i] * c; } ans += min(Div[i], cnt[i]); if(Div[i] < cnt[i]) break; } else ans += cnt[i]; } printf("%d\n", ans); return 0; }
1110: [POI2007]砝码Odw
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 366 Solved: 202
[Submit][Status][Discuss]
Description
在byteotian公司搬家的时候,他们发现他们的大量的精密砝码的搬运是一件恼人的工作。公司有一些固定容量的容器可以装这些砝码。他们想装尽量多的砝码以便搬运,并且丢弃剩下的砝码。每个容器可以装的砝码数量有限制,但是他们能够装的总重量不能超过每个容器的限制。一个容器也可以不装任何东西。任何两个砝码都有一个特征,他们的中总有一个的重量是另外一个的整数倍,当然他们也可能相等。Input
输入文件的第一行包含两个数n和m。表示容器的数量以及砝码的数量。(1<=n, m<=100000) 第二行包含n个整数wi,表示每个容器能够装的最大质量。(1<=wi<=1000000000) 第三行包含m个整数mj,表示每个砝码的质量。(1<=mj<=1000000000)Output
输出文件要求仅包含一个数,为能够装进容器的最多的砝码数量。Sample Input
2 413 9
4 12 2 4
Sample Output
3HINT
Source
相关文章推荐
- 计算机运算时,都是以补码的形式进行
- SpringMVC -- 第一个简单的程序
- 浅析android中handler与Message(二)+源码查看器
- 网站变灰css
- linux socket的select函数实例
- 【大运维之二】DevOps年中盘点:国外最受欢迎的10篇技术文章(上)
- 值得推荐的C/C++框架和库 (真的很强大)
- Android EditText限制小数点输入两位
- bak数据库文件还原,filesteam功能启用的两种方法!!
- Non-negative Matrix Factorization 非负矩阵分解
- OC中面向对象编程的基础知识
- Ant 判断某个文件是否为空
- 转载:setAttribute和setParameter方法的区别
- runtime学习实战一:类的属性进行归档解档
- C/C++与lua实现互调
- STM32F207,LWIP,DM9000,网口驱动,ping不通
- win10 mobile 10066可以安装哪些apk应用软件?
- 使用开源框架android-async-http-1.4.8.jar与服务器传输数据
- 【大运维之一】自动化实践探索的最优路径
- Source Tree在推送时不断提示输入密码