Codeforces_474B算法
2016-04-13 22:19
525 查看
#include <iostream> #include <algorithm> #include <string> #include <math.h> #include <vector> #include <bitset> using namespace std; struct ints { int number; int id; int group; }; bool operator < (const ints& va1, const ints & va2) { return va1.number < va2.number; } class Comparers { public: bool operator () (const ints & va1, const ints & va2) { return va1.id < va2.id; } }; int main() { int n, a, sums[100001], m; cin >> n; cin >> a; sums[0] = a; for (int i = 1; i < n; i++) { cin >> a; sums[i] = sums[i - 1] + a; } cin >> m; ints t; vector<ints> ww; for (int i = 0; i < m; i++) { cin >> t.number; t.id = i; t.group = 0; ww.push_back(t); } sort(ww.begin(), ww.end()); int k = 0; for (int j = 0; j < m; j++) { if (ww[j].number <= sums[k]) ww[j].group = k + 1; else { while (ww[j].number > sums[k]) k++; ww[j].group = k + 1; } } sort(ww.begin(), ww.end(), Comparers()); for (int i = 0; i < m; i++) { cout << ww[i].group << endl; } }
终于突破了474B,这道题一开始最简单的思路会导致m*n的时间复杂度,因此会卡死在test32上,一直time out。所以只能换思路。
换思路时,卡死在了struct的sort上。需要对struct排序咋办呢?参考了一下文章 http://blog.csdn.net/byrsongqq/article/details/5683597 及 http://www.jb51.net/article/36021.htm
搞定,比较爽。一次过。
关键是又突破了自我
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析