日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯第七届省赛JAVA真题----压缩变换

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯第七届省赛JAVA真题----压缩变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
壓縮變換

小明最近在研究壓縮算法。
他知道,壓縮的時候如果能夠使得數值很小,就能通過熵編碼得到較高的壓縮比。
然而,要使數值很小是一個挑戰。
最近,小明需要壓縮一些正整數的序列,這些序列的特點是,后面出現的數字很大可能是剛出現過不久的數字。對于這種特殊的序列,小明準備對序列做一個變換來減小數字的值。

變換的過程如下:
從左到右枚舉序列,每枚舉到一個數字,如果這個數字沒有出現過,剛將數字變換成它的相反數,如果數字出現過,則看它在原序列中最后的一次出現后面(且在當前數前面)出現了幾種數字,用這個種類數替換原來的數字。

比如,序列(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,否則按無效代碼處理。

理解:藍橋杯的題干長而復雜,要完全理解其中的意思貌似需要花些功夫,但其實我們不需要完全理解,只要從中梳理出解題的思路就可以了。這個題目簡單來說就是給定一串數,對于其中的每個數x,如果x在它前面一系列數字中沒有出現過,那么x變成-x;反之,如果出現了,那么找到最近一次出現的位置b,在 [b--x] 之間統計出現了幾個不同的數字,將x變成這個值。

思路1:當看到這個題目出現統計出現次數時,我首先想到用java中的Set,但是不巧的是這需要多次進行遍歷,嵌套了四層循環之后,雖然實現了代碼,當上當數據到50%左右時,就爆了。當然set也可以使用記憶化,將串中的所有數字在它之前出現的位置記錄。(不過由于set不能得到最近一次的位置,所以記憶化不太好實現)。

思路2:之后參考了網上的代碼,用Map做的,這是第一次感受到Map的魅力,原來還能這么做,利用Map的put()方法會不斷更新一個鍵的值為最新的(一個鍵只能有一個值),這剛好可以用來某個數找到最近一次出現的位置,實現了記憶化。

完整代碼如下:

Set結構:

import java.util.HashSet; import java.util.Scanner; import java.util.Set;public class Main {static int[] a, b;static int n;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new int[n + 1];b = new int[n + 1];for (int i = 0; i < a.length-1; i++) {a[i] = in.nextInt();if (i == 0) {b[i] = -1 * a[i];}}Set<Integer> set = new HashSet<Integer>();for (int i = 1; i < a.length; i++) {set.clear();for (int j = 0; j < i; j++) {set.add(a[j]);}if (!set.contains(a[i])) {b[i] = -1 * a[i];} else {for (int k = i-1; k >= 0; k--) {if (a[k] == a[i]) {set.clear();for (int l = k+1; l < i; l++) {set.add(a[l]);}break;}}b[i] = set.size();}}for (int i = 0; i < b.length-2; i++) {System.out.print(b[i] + " ");}System.out.print(b[b.length-2]);}}

Map結構:

import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main { static int[] a, b;static int n;static boolean[] flag;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new int[n + 1];b = new int[n + 1];flag = new boolean[n + 1];for (int i = 0; i < a.length-1; i++) {a[i] = in.nextInt();if (i == 0) {b[i] = -1 * a[i];}}Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 1; i < a.length; i++) {if (!map.containsKey(a[i])) {b[i] = -a[i];map.put(a[i], i);flag[i] = true;} else {int last = map.get(a[i]);b[i] = cnt(last+1, i);flag[last] = false;map.put(a[i], i);flag[i] = true;}}for (int i = 0; i < b.length-2; i++) {System.out.print(b[i] + " ");}System.out.print(b[b.length-2]);}private static int cnt(int l, int r) {// TODO Auto-generated method stubint sum = 0;for (int i = l; i < r; i++) {if (flag[i] == true) {sum++;}}return sum;} }

總結

以上是生活随笔為你收集整理的蓝桥杯第七届省赛JAVA真题----压缩变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一级一级片 | 夜夜干夜夜 | 99国内揄拍国内精品人妻免费 | 97超碰伊人| sese欧美| 色就是色av| 五月综合激情网 | 少妇一级淫片免费放 | 成年人看的网站 | 日本人极品人妖高潮 | 综合精品在线 | 国产裸体视频网站 | 欧美天天性 | 国产精品无码午夜福利 | 欧美最猛性xxxxx(亚洲精品) | 白浆在线播放 | 日韩性在线 | 6080黄色 | 欧美一区不卡 | 久久精品国产99精品国产亚洲性色 | 日韩在线一卡 | 热九九精品 | 久久不射影院 | 在线人成 | 一区二区免费在线观看视频 | 翔田千里x88aⅴ | 国产精品一卡二卡在线观看 | 生活片av| a v视频在线观看 | 日韩高清国产一区在线 | 人人爽人人做 | 国产又好看的毛片 | 欧美性受xxxx黑人 | 日韩无遮挡 | 久久久久久久久久一区二区 | 国产伦精品一区二区三区四区视频 | 久久久久一区二区三区四区 | 色妞欧美 | 国产传媒av在线 | 亚洲一区和二区 | 成人黄色在线播放 | 91在线视频国产 | 在线观看视频一区 | 亚洲色图二区 | 欧美色吊丝 | 97在线观看视频免费 | 中文字幕综合网 | 亚洲29p| 久久伊人色 | 国产在线观看网站 | 亚洲国产精品久久精品怡红院 | 国产精品三级在线 | 国产又黄又猛又粗又爽 | 精品一区二区三区无码按摩 | 曰本三级日本三级日本三级 | 中文字幕无产乱码 | 成人第四色 | 亚洲1024 | 日韩电影网址 | 久久久久久在线观看 | 蕾丝视频污 | av动漫天堂 | 成人免费网站在线观看 | 欧美三级影院 | 午夜国产在线 | 波多野结衣在线免费观看视频 | 日韩精品一区二区三区视频 | 久久在线免费观看视频 | 中文字幕在线观看免费 | 欧美精品一区二区成人 | 日韩性生活大片 | 男人久久久 | 中出精品| 亚洲av乱码久久精品蜜桃 | 高清乱码免费网 | 亚洲国产一区在线观看 | 精彩视频一区二区三区 | 性色视频在线 | www.com日本| av播播 | 隣の若妻さん波多野结衣 | 男人天堂导航 | 男生插女生视频在线观看 | 日本精品在线观看视频 | 国产永久免费无遮挡 | 97视频久久久 | 亚洲最大av | 中文成人无字幕乱码精品区 | 亚洲香蕉久久 | 国产精品va无码一区二区三区 | 免费a级片在线观看 | 亚洲人成人无码网www国产 | 最近中文字幕在线中文视频 | 波多野结衣视频免费在线观看 | 免费高清成人 | 俄罗斯av片| 神马午夜我不卡 | 西西人体高清44rt·net | 丁香花高清在线 |