1005-贪心初步
2016-04-05 22:44
344 查看
题意:给出5中币值的钱的数量,让找出一定钱数的最少和最多币值数量的方案的币值数是多少。
题解:发现五种币值是可以约分的,没有互质的,所以简单贪心即可,当时做的时候没有感觉出或者是证明出贪心策略的正确性,所以就想用动态规划背包背,结果就TL,想来用物品的二进制优化应该可以过吧
#include <iostream>
using namespace std;
int w[6] = {1,5,10,50,100},num[5],use[5];
bool dfs(int v,int x){
if (x < 0)
return false;
int n = v / w[x];
if (num[x] >= n){
num[x] -= n;
use[x] += n;
return true;
}
if (dfs(v - num[x]*w[x],x-1)){
use[x] += num[x];
num[x] = 0;
return true;
}
else
return false;
}
int main(){
int n,m;
cin >> n;
while (n--){
cin >> m;
for (int i = 0;i <= 4;i++)
cin >> num[i];
int x = m,ans1 = 0,ans2 = 0;
for (int i = 4;i >= 0;i--){
use[i] = min(num[i],x / w[i]);
ans1 += use[i];
x -= use[i] * w[i];
num[i] -= use[i];
}
if (x){
cout << "-1 -1" << endl;
continue;
}
for (int i = 4;i >= 0;i--){
while (use[i]){
if (dfs(w[i],i-1)){
use[i]--;
num[i]++;
}
else
break;
}
ans2 += use[i];
}
cout << ans1 << ' ' << ans2 << endl;
}
}
题解:发现五种币值是可以约分的,没有互质的,所以简单贪心即可,当时做的时候没有感觉出或者是证明出贪心策略的正确性,所以就想用动态规划背包背,结果就TL,想来用物品的二进制优化应该可以过吧
#include <iostream>
using namespace std;
int w[6] = {1,5,10,50,100},num[5],use[5];
bool dfs(int v,int x){
if (x < 0)
return false;
int n = v / w[x];
if (num[x] >= n){
num[x] -= n;
use[x] += n;
return true;
}
if (dfs(v - num[x]*w[x],x-1)){
use[x] += num[x];
num[x] = 0;
return true;
}
else
return false;
}
int main(){
int n,m;
cin >> n;
while (n--){
cin >> m;
for (int i = 0;i <= 4;i++)
cin >> num[i];
int x = m,ans1 = 0,ans2 = 0;
for (int i = 4;i >= 0;i--){
use[i] = min(num[i],x / w[i]);
ans1 += use[i];
x -= use[i] * w[i];
num[i] -= use[i];
}
if (x){
cout << "-1 -1" << endl;
continue;
}
for (int i = 4;i >= 0;i--){
while (use[i]){
if (dfs(w[i],i-1)){
use[i]--;
num[i]++;
}
else
break;
}
ans2 += use[i];
}
cout << ans1 << ' ' << ans2 << endl;
}
}
相关文章推荐
- MySQL 优化
- Google排名优化的几个影响因素
- DB2优化(简易版)
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
- C#中尾递归的使用、优化及编译器优化
- 对优化Ruby on Rails性能的一些办法的探究
- 优化Ruby脚本效率实例分享
- Asp编码优化技巧
- 如何监测和优化OLAP数据库
- mysql -参数thread_cache_size优化方法 小结
- 深入学习SQL Server聚合函数算法优化技巧
- MySQL常见的底层优化操作教程及相关建议
- 详解mysql的limit经典用法及优化实例
- 数据库学习建议之提高数据库速度的十条建议
- oracle数据库sql的优化总结
- SQL语句性能优化(续)
- SQL语句优化提高数据库性能
- SQL优化经验总结
- SQL优化技巧指南
- SQL Server优化50法汇总