UVa 1594 Ducci Sequence
来源:互联网 发布:全能视频转换器软件 编辑:程序博客网 时间:2024/05/29 18:34
这个题其实很简单,思路也很简单。但是我之前用的方法不对,其实可以直接使用一个map< vectot<int>, int>
这样的映射就可以解决。其中vector<int>
就用来存储这个n元组,每进行一次运算都要将结果存入map中,直到运算出来的全为0,或者是map表中之前就存在这个n元组。
但是我之前不是这样写的,我是使用map<string, int>
这个映射,于是每次输入一个n元组,我就将其中的元素连成一个字符串,每两个元素之间用一个空格分开,然后以字符串的形式保存起来。然后将这个字符串存入映射表中,然后结束条件和上面一样。
这样也是对的,测试数据也全都通过了,可是提交就会显示Time limit exceeded。我知道超时了,从这个经历我也知道了,string很慢很慢,sstream更慢,使用的时候要注意。
看一下最后的AC代码吧:
#include<iostream>#include<algorithm>#include<map>#include<vector>using namespace std;bool judge(vector<int> a) { for(int i = 0; i < a.size(); ++i) if(a[i] != 0) return false; return true;}int main() { int n; cin >> n; while(n--) { vector<int> a; map<vector<int>, int> Ducci; int m; cin >> m; for(int i = 0; i < m; ++i) { int k; cin >> k; a.push_back(k); } if(judge(a)) { cout << "ZERO" << endl; continue; } Ducci[a] = 1; bool flag = false; for(int i = 0; i < 1000; ++i) { int temp = a[0]; for(int j = 0; j < m-1; ++j) a[j] = abs(a[j+1] - a[j]); a[m-1] = abs(a[m-1] - temp); if(judge(a)) { flag = true; break; } if(!Ducci.count(a)) Ducci[a] = 1; else { flag = false; break; } } if(flag) cout << "ZERO" << endl; else cout << "LOOP" << endl; } return 0;}
阅读全文
0 0
- UVA 1594 - Ducci Sequence
- UVa 1594 Ducci Sequence
- UVa 1594 - Ducci Sequence
- UVa 1594 - Ducci Sequence
- UVA 1594 - Ducci Sequence
- Uva 1594 Ducci Sequence
- UVa 1594 Ducci Sequence
- Uva - 1594 - Ducci Sequence
- UVa 1594 Ducci Sequence
- UVA 1594 Ducci Sequence
- UVa 1594 Ducci Sequence
- UVa 1594(Ducci Sequence)
- uva 1594Ducci Sequence
- Ducci Sequence UVA 1594
- UVA 1594 Ducci Sequence
- uva 1594 Ducci Sequence
- UVa 1594 Ducci Sequence
- UVA 1594 Ducci Sequence
- 史上最简单的 MySQL 教程(三十六)「数据备份与还原(中)」
- 安卓手持机移动端车牌识别技术
- 计算机的内存、外存、主存、辅存
- 设计模式
- oracle--表空间
- UVa 1594 Ducci Sequence
- HDevelop实现图片中局部图形识别标记
- 移动架构07_原型模式
- 并发和OpenGL ES
- java学习之eclipse开发环境熟悉
- 快速排序
- 设计模式-策略模式
- eclipse 中创建 整合springmvc+mybatis+maven 的java web项目步骤,以及maven仓库配置
- hdu3572 建图 最大流