FOJ 1001之位图数据结构对程序的优化
来源:互联网 发布:交换机 mac和ip绑定 编辑:程序博客网 时间:2024/04/27 18:55
原题:http://acm.fzu.edu.cn/problem.php?pid=1001
大意是有个最多100W长度的整数数组,里面只有2个数相同,我们的任务是输入这组数,输出相同的那个数.
最容易想到的方法显然是遍历数组的每个数,进行对比,碰到相同的,则输出,这时该算法的时间复杂度大概是n^2,然而题目的时间限制是1s,考虑到数组可以是100W长度,这样显然会超时,我试着提交了下,果然提示TLE..
接着对代码进行优化,《编程珠玑》一书第一章说的就是位图数据结构的妙用,果然该方法对处理大量数据问题效果拔群。此时时间复杂度仅约为n。以下是我的代码:
#include <stdio.h>#include <string.h>#define N 1000010char a[N];int main(void){ int n; int i; int j; while(scanf("%d", &n) != EOF) { memset(a, 0, n); for(i = 0; i < n; i++) { scanf("%d", &j); if(a[j] == 0) { a[j] = 1; } else { printf("%d\n", j); } } } return 0;}
该算法的缺点显而易见,由于使用了位图,需要将数组初始化为0值,于是用到了memset()函数,这从另一方面加大了程序的耗时,然而这样的耗时对于整体的拖累不是很明显,相比于使用遍历法,甚至可以忽略不计了。
该方法确实算不上最优解,只是记录了下我的思考过程,看了下该题的状态,第一名的大牛用时显然比我低得多。路漫漫其修远兮。。。。
- FOJ 1001之位图数据结构对程序的优化
- foj 文件系统 stl string + vector 多对多的数据结构
- FOJ 1001 Duplicate Pair (位图算法)
- 数据结构之位图(11)
- 数据结构之位图
- 数据结构之位图
- 数据结构之位图
- FOJ 1408 位图
- Foj 1408 位图
- 位图数据结构的运用
- 位图文件的数据结构
- 位图数据结构的
- Android程序优化之对屏幕旋转的处理总结
- 对程序优化的认识
- HTML5游戏制作之路_05_egret对位图的操作
- 类似位图的数据结构BitsSet
- bmp 位图的数据结构分析
- 设计好的数据结构对程序至关重要
- 配置apache + tomcat 并设置apache 二级域名重定向试验
- Windows下Apache配合Tomcat实现动态二级域名
- 关于VC6.0的文件体积优化
- AC自动机讲解
- FOJ 1056之扫雷游戏
- FOJ 1001之位图数据结构对程序的优化
- Java调用本地接口jni与C通信----------------JNI
- poj 1609
- WAS6创建集群时配置 HTTP会话内存到内存复制的勾选 与会话保存对象必须序列化
- 埃拉托斯特尼筛法(简单检定素数的方法)
- struts2与cookie实现自动登录
- WinSocket 1.1 程序设计
- mysql乱码点滴1
- 智能车实验室阶段测验之单片机基础