(hnust 1520) 压缩编码 (技巧模拟)
来源:互联网 发布:mac下载不在桌面显示 编辑:程序博客网 时间:2024/04/28 18:01
时间限制: 1 Sec 内存限制: 2 MB
提交: 106 解决: 53
[提交][状态][讨论版]
题目描述
某工业监控设备不断发回采样数据。每个数据是一个整数(0到1000之间)。各个数据间用空白字符(空格,TAB或回车换行)分隔。
因为大多数时候,相邻的采样间隔数据是相同的,可以利用这个特征做数据的压缩存储。其方法是:对n(n>1)个连续相同的数字只记录n和该数字本身;对m(m>0)个连续不重复的数字,则记录 m*-1 和这些数字本身(之所以用负数,是为了与第一种情况区分,便于解压缩)。
例1:假设采样数据为:12 34 34 25 25 25 25 11 15 17 28 14 22 22 22 则将上述采样数据按照上述规则进行压缩编码后的数据为:-1 12 2 34 4 25 -5 11 15 17 28 14 3 22例2:假设采样数据为:12 13 14 13 12则将上述采样数据按照上述规则进行压缩编码后的数据为:-5 12 13 14 13 12例3:假设采样数据为:66 66 66 66 66 88 88 88 88 88 88 88 88 88 88 88 则将上述采样数据按照上述规则进行压缩编码后的数据为:5 66 11 88
输入
先输入采样数据的个数n(1<=n<=10000)。
然后输入n个采样数据。每个数据是一个整数(0到1000之间,包括0和1000本身)。各个数据间用空白字符(空格,TAB或回车换行)分隔。
输出
输出按规则进行压缩编码后的数据,数据之间用一个空格隔开。
注意,最后一个输出数据之后,没有空格,而是换行符。
样例输入
16
12 34 34 25 25 25 25 11 15 17 28 14 22 22 22 13
样例输出
-1 12 2 34 4 25 -5 11 15 17 28 14 3 22 -1 13
来源
2012新手选拔赛第一场
分析:模拟,处理最后一位时的技巧
#include<cstdio>#include<vector>#include<cstring>#include<algorithm>using namespace std;const int INF=0x3f3f3f3f;const int N=1e4+5;typedef long long LL;#define mem(a,n) memset(a,n,sizeof(a))int a[N],b[N];vector<int>vec;int main(){ int n; while(~scanf("%d",&n)) { vec.clear(); mem(a,INF); for(int i=0; i<n; i++) scanf("%d",&a[i]); n++,a[n]=a[n-1]; int tmp=a[0],cnt; for(int i=1; i<n;) { cnt=0; if(tmp==a[i]) { cnt++; while(i<n&&tmp==a[i]) { tmp=a[i]; cnt++,i++; } vec.push_back(cnt); vec.push_back(tmp); tmp=a[i]; cnt=0,i++; } else { while(i<n&&tmp!=a[i]) { b[cnt]=tmp; tmp=a[i]; cnt++,i++; } vec.push_back(-cnt); for(int i=0; i<cnt; i++) vec.push_back(b[i]); } } printf("%d",vec[0]); for(int i=1; i<vec.size(); i++) printf(" %d",vec[i]); printf("\n"); } return 0;}
阅读全文
0 0
- (hnust 1520) 压缩编码 (技巧模拟)
- HNUST 1520: 压缩编码
- HNUST 辅导上机(模拟)
- HNUST 1695: 跳格子(简单模拟)
- Hnust 1071 赫夫曼编码
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- HNUST 1641 罚时计算器(模拟) 湖南科技大学2014新生选拔赛
- (hnust 1586)Maximum Product
- HNUST 1231:猜牌术(水....)
- HNUST二队练习赛BNU I、编码
- 8.14
- tensorflow之axis
- C++基础-string截取、替换、查找子串函数
- 关于Android studio升级问题
- JNI 实战全面解析
- (hnust 1520) 压缩编码 (技巧模拟)
- 多线程优点
- NIO 之 ByteBuffer详解
- Xmlns与targetNamespace 的区别
- tensorflow函数 tf.nn.xw_plus_b
- POJ 2251 Dungeon Master(BSF)
- Nginx+Tomcat搭建高性能负载均衡集群
- React Native调试技巧与心得
- 为QLC保驾护航 | 慧荣科技(SMI) 亮出最新LDPC纠错技术