任务说明:贪心就是只考虑眼前的利益。对于我们人生来说太贪是不好的,不过oi中,有时是对的。

P1090 合并果子

有N堆果子,只能两两合并,每合并一次消耗的体力是两堆果子的权重和,问最小消耗多少体力。

直接贪心,每次取两堆权重最小的果子合并,注意不能在一个for循环里面sort,这样是O(N^2logN);会TLE。

我AC的方法是第一遍sort,在循环里面用插入排序。(也有其他方法用优先队列,二叉堆什么的,不会写)

poj有个一样的题目3253 Fence Repair。然后shi哥那本书里也有讲这个题。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <cstring>
#include <map>
#include <climits>
#include <algorithm>
#include <cmath>
#include <sstream> using namespace std; const int INF = ;
/*
void print(vector<int>& vec) {
printf("==========begin debug========\n");
for(auto ele : vec) {
printf("%d ", ele);
}
printf("\n\n");
}
*/ int main() {
int n;
cin >> n;
vector<int> vec(n);
for(int i = ; i < n; ++i) {
cin >> vec[i];
}
long long ans = ;
//[1]快排
sort(vec.begin(), vec.end());
//[2]里面做插入排序
for(int i = ; i < n; ++i) {
int b = vec[i-] + vec[i];
vec[i] = b, vec[i-] = ;
ans += b;
int j = i + ;
while( j < n && vec[j] <= b) {
vec[j-] = vec[j];
++j;
}
vec[j-] = b;
//print(vec);
}
cout << ans << endl; return ;
}

P1181 数列分段Section I

给一个n个元素的数组,和一个数字m,问最少能把这个数组分成几段,每段的和小于等于m。

直接贪心。

第一次提交全WA。注意写法。这种题目一层循环就好了,写两层完全错。

第二次提交AC了。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector> using namespace std; int main() {
int ans = ;
int n;
long long m;
cin >> n >> m;
vector<long long> vec(n);
for(int i = ; i < n; ++i) {
cin >> vec[i];
}
int start = ;
long long summ = ;
for (int i = start; i < n; ++i) {
if (summ + vec[i] > m) {
++ans;
summ = ;
--i;
} else {
summ += vec[i];
}
}
if (summ != ) {
++ans;
}
cout << ans << endl;
return ;
}

P1208 [USACO1.3]混合牛奶 Mixing Milk

简单题直接做了

最新文章

  1. MementoPattern(备忘录模式)
  2. Memcached初识
  3. BZOJ 3524: [Poi2014]Couriers [主席树]
  4. Hadoop概念学习系列之Hadoop 生态系统(十二)
  5. 【Clr in c#】泛型
  6. mysql中and和or
  7. SharePoint 自定义WebPart之间的连接
  8. 常见半监督方法 (SSL) 代码总结
  9. 翻译:Knockout 快速上手 - 5: 你需要知道的顶级特性 续
  10. 剑指 offer set 1 二维数组中查找
  11. Oracle inactive session (last_call_et)
  12. poj 3308 (最大流)
  13. Jquery Mobile转场特效之slide | 小小iPhone开发
  14. TCPDump 抓Loopback数据包
  15. java源码学习(四)ArrayList
  16. python与MySQL
  17. Docker加速器(阿里云)
  18. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
  19. 【C#】list 去重(转载)
  20. navicat新建用户,并赋予权限

热门文章

  1. 解决&quot;Microsoft Visual C++ 14.0 is required&quot;的问题
  2. cocos2D-X not config ndk path
  3. Ubuntu备份与恢复
  4. makefile 中的patsubst
  5. hdu 6134 Battlestation Operational (莫比乌斯反演+埃式筛)
  6. mysql数据库优化学习
  7. 高精度小数BigDecimal+二分——java
  8. Memory Analyzer Tool定位Java heap space内存泄漏
  9. 6.zabbix微信告警3.2
  10. Linux下dd和od命令备份查看硬盘mbr,并用vim修改!