题目描述


小明最近在研究压缩算法。
他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。
然而,要使数值很小是一个挑战。
最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。
变换的过程如下:
从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,则将数字变换成它的相反数,如果数字出现过,则看它在原序列中最后的一次出现后面(且在当前数前面)出现了几种数字,用这个种类数替换原来的数字。
比如,序列(a1, a2, a3, a4, a5)=(1, 2, 2, 1, 2)在变换过程为:
a1: 1未出现过,所以a1变为-1;
a2: 2未出现过,所以a2变为-2;
a3: 2出现过,最后一次为原序列的a2,在a2后、a3前有0种数字,所以a3变为0;
a4: 1出现过,最后一次为原序列的a1,在a1后、a4前有1种数字,所以a4变为1;
a5: 2出现过,最后一次为原序列的a3,在a3后、a5前有1种数字,所以a5变为1。
现在,给出原序列,请问,按这种变换规则变换后的序列是什么。
输入格式:
输入第一行包含一个整数n,表示序列的长度。
第二行包含n个正整数,表示输入序列。
输出格式:
输出一行,包含n个数,表示变换后的序列。
例如,输入:
5
1 2 2 1 2
程序应该输出:
-1 -2 0 1 1
再例如,输入:
12
1 1 2 3 2 3 1 2 2 2 3 1
程序应该输出:
-1 0 -2 -3 1 1 2 2 0 0 2 2
数据规模与约定
对于30%的数据,n<=1000;
对于50%的数据,n<=30000;
对于100%的数据,1 <=n<=100000,1<=ai<=10^9
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

思路分析

通过30%

代码实现

package lanqiao;import java.util.*;public class Main {public static Map<Integer,Integer> lastIndex=new HashMap<Integer, Integer>();//数字与下标的映射public static int[] data;//存储输入到每个字符public static int[] ans;//存储每个的结果public static int n;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n=scanner.nextInt();//输入序列的长度data=new int[n];ans=new int[n];for (int i = 0; i < n; i++) {int num= scanner.nextInt();data[i]=num;if(lastIndex.get(num)==null){//没有出现过ans[i]=-num;}else {//出现过//统计p_num和i之间有多少不同的数字Set<Integer> set = new HashSet<>();for(int j=lastIndex.get(num)+1;j<i;j++){set.add(data[j]);}ans[i]=set.size();}lastIndex.put(num,i);//更新}for (int i = 0; i < n; i++) {System.out.print(ans[i]+" ");}}
}

2016蓝桥杯省赛---java---A---10(压缩转换)相关推荐

  1. 2016蓝桥杯国赛 JAVA C组第五题 路径之谜

    蓝桥杯确实很暴力... 路径之谜 小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士 ...

  2. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  3. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...

    问题描述 试题 E: 迷宫 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为 ...

  4. 2021第十二届蓝桥杯省赛JAVA B组 题目+答案(复现赛)

    2021第十二届蓝桥杯省赛JAVA B组 题目+答案(复现赛) A:ASC B:卡片 C:直线 D:货物摆放 E:路径 Floyed Dijkstra F:时间显示 G:最少砝码 H:杨辉三角形 I: ...

  5. 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解

    第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...

  6. 第十二届蓝桥杯省赛 Java 大学 B 组—砝码称重—满分百分题解

    第十二届蓝桥杯省赛 Java 大学 B 组-砝码称重-满分百分题解 一.解题思路 1.解法一( Java ) 解法思路:简单模拟 ☝ArrayList 遍历 + HashSet 存储(去重) 伪代码如 ...

  7. 2015年第六届蓝桥杯 - 省赛 - Java大学B组 - A. 三角形面积

    三角形面积 如[图1]所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. Ideas 这道题跟2018年第九届蓝桥杯 - ...

  8. 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题

    2016年第七届蓝桥杯java B组省赛试题 1-3.结果填空 4-5.代码填空 6-7.结果填空 8-10.程序设计 1.煤球数目  (结果填空) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, ...

  9. 2020第十一届蓝桥杯国赛JAVA B组真题解析(带源码及解析)

    蓝桥杯历年真题及解析. 目录 蓝桥杯历年真题及解析. A: 美丽的 2 题目: 分析: AC代码: B: 扩散 题目: 分析: AC代码: C: 阶乘约数 题目: 分析: AC代码: D: 本质上升序 ...

  10. 2017第八届蓝桥杯省赛JAVA C组真题解析(带源码及解析)

    蓝桥杯历年真题及解析. 目录: 蓝桥杯历年真题及解析. A:外星日历(难度:★) 题目: 分析: 代码: B:兴趣小组(难度:★) 题目: 分析: 代码: C:纸牌三角形(难度:★★★) 题目: 分析 ...

最新文章

  1. 滴滴信控系统开放试用  鼓励行业人员进行更广泛交通研究
  2. Redhat的硬盘安装
  3. Android 数据库基本操作-2
  4. synchronized 面试五连击
  5. java的原生数据类型_Java中的8种原生数据类型(Primitive Data Types)分析
  6. android 内存分析 郭霖_android 内存泄漏(OOM)问题总结
  7. 今日恐慌与贪婪指数为91 贪婪程度与昨日持平
  8. 列转行 oracle11g,PostgreSQL 实现列转行问题
  9. 俄罗斯方块(C语言实现)
  10. 什么软件测试cpu满载,截然相反!CPU满载压力测试
  11. 小型游戏《笑傲江湖之精忠报国》全过程_01
  12. 最优传输理论与计算 ——雷娜 顾险峰 【新书发布】
  13. 使用mysql进行身份证校验
  14. 对QT5信号与槽的认识
  15. acwing 2041.干草堆
  16. 最新架构amd服务器cpu,AMD第一款ARM处理器正式发布!
  17. 无法更改edge浏览器启动页(主页)\新标签页
  18. 适应各种工控组态软件的图库,一款常用的工控图库,包括3D按钮 、箭头、对角线、多边形、鼓风机、锅炉、工厂等多种图形
  19. bim展示 java_一个用于在浏览器上展示bim模型的vue插件
  20. 旋转向量与旋转矩阵的相互转化

热门文章

  1. python适用范围_Python应用范围总结概览
  2. [2021.1.17多校省选模拟4]T1(莫比乌斯反演/组合数学/枚举倍数)
  3. P2231 [HNOI2002]跳蚤(裴蜀定理/莫比乌斯反演)
  4. [BeiJing2011][bzoj2460] 元素
  5. Acwing 232. 守卫者的挑战
  6. 牛客题霸 [两个链表的第一个公共结点] C++题解/答案
  7. [HNOI2016] 序列(线段树 + 莫队 + 倍增)
  8. [ZJOI2007] 棋盘制作(单调栈 / DP悬线法)
  9. 【学习笔记】左偏树的可持久化(【模板】k短路 / [SDOI2010]魔法猪学院)
  10. 最小代价(区间dp)(ybtoj)