鄭大第九屆校賽正式賽(1812: sort)
1812: sort
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 155 Solved: 28
SubmitStatusWeb Board
Description
想必大家對排序已經很熟悉了,但是spy好像對排序不太熟悉,有一天,他看到這樣一個關於排序的題目:
對於 k 個用空格分隔開的整數,依次為 n1, n2 … nk。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行升序排列,此外,將餘下下標能被 3 整除的數在這些數字原有的位置上進行降序排列。
spy想了半天不知道怎麼排序,你可以幫助他麼?
Input
多組資料,每組資料一行,為k個小於1000的
Output
對於每組資料,輸出排序後的結果。
題解: 噁心題,題目沒有給出有幾個數的。。。
AC程式碼:
import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.*; public class Main{ static Scanner cin = new Scanner(System.in); static PrintWriter out = new PrintWriter(System.out); public static void main(String[] args) throws IOException{ PriorityQueue<Integer> qt1 = new PriorityQueue<Integer>(); PriorityQueue<Integer> qt2 = new PriorityQueue<Integer>(10,Collections.reverseOrder()); Integer a[] = new Integer[100005]; while(cin.hasNext()) { String s = cin.nextLine(); s.trim(); String ret = "\\d*"; Pattern pt = Pattern.compile(ret); Matcher m = pt.matcher(s); int k = 1; while(m.find()) { if(!"".equals(m.group())) { if(k % 3 != 0 && k % 2 == 0) qt1.add(sum(m.group())); else if(k % 3 == 0) qt2.add(sum(m.group())); else a[k] = sum(m.group()); k++; } } boolean ok = false; for(int i = 1; i < k; i++) { if(ok) System.out.print(' '); else ok = true; if(i % 3 != 0 && i % 2 == 0) System.out.print(qt1.remove()); else if(i % 3 == 0) System.out.print(qt2.remove()); else System.out.print(a[i]); } System.out.println(); } } public static int sum(String a) { int s = 0; for(int i = 0; i < a.length(); i++) { s = s * 10 + a.charAt(i) - '0'; } return s; } }
相關推薦
鄭大第九屆校賽正式賽(1812: sort)
1812: sort Time Limit: 1 Sec Memory Limit: 128 MB Submit: 155 Solved: 28SubmitStatusWeb Board Des
十大經典排序演算法之選擇排序(Selection Sort)
選擇排序(Selection-sort)是一種簡單直觀的排序演算法。 它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。 2.1 演算法描
十大經典排序演算法之插入排序(Insertion Sort)
插入排序(Insertion-Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆
第九屆藍橋杯省賽JAVA語言 C組題解_題6 列印大X
JAVA語言 C組題解_題6 列印大X 題目 解題思路 題目 標題:列印大X 如下的程式目的是在控制檯列印輸出大X。 可以控制兩個引數:圖形的高度,以及筆寬。 用程式中的測試資料輸出效果: (如果顯示有問題,可以參
第九屆藍橋杯省賽 (7) -- 螺旋折線
標題:螺旋折線 如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。 對於整點(X, Y),我們定義它到原點的距離dis(X, Y)是從原點到(X, Y)的螺旋折線段的長度。 例如dis(0, 1)=3, dis(-2, -1)=9 給出
第九屆藍橋杯省賽(6) -- 遞增三元組
標題:遞增三元組 給定三個整數陣列 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 請你統計有多少個三元組(i, j, k) 滿足: 1. 1 <= i, j, k <= N
第九屆藍橋杯省賽(4)-- 測試次數
4.標題:測試次數 x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。 各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出一個耐摔指數來,之後才允許上市流通。 x星球有很多高聳入雲的高塔,剛好可
第九屆藍橋杯省賽C/C++A組競賽實戰感受
本來是抱著試一試的心態去的,今年是大二下,之前放了寒假,在家裡也有一些學習,參加了哈爾濱理工大學的網路演算法培訓,講了非常多的東西,比如基本的廣搜深搜動規貪心回溯當然還有最簡單的暴力,以及一些圖論基礎知識和演算法
第九屆藍橋杯省賽B組 7.螺旋折線
標題:螺旋折線 如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。 對於整點(X, Y),我們定義它到原點的距離dis(X, Y)是從原點到(X, Y)的螺旋折線段的長度。 例如dis(0, 1)=3,
第九屆藍橋杯省賽B組 2. 明碼
明碼 漢字的字形存在於字型檔中,即便在今天,16點陣的字型檔也仍然使用廣泛。 16點陣的字型檔把每個漢字看成是16x16個畫素資訊。並把這些資訊記錄在位元組中。 一個位元組可以儲存8位資訊,用32個位元組就可以存一個漢字的字形了。 把每個位
第九屆藍橋杯省賽C++A組 航班時間
標題:航班時間 【問題背景】 小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,上午十二點到達美國,於是感嘆到“現在飛機飛得真快,兩小時就能到美國了”。 小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。由於北京和美國東部有12小時時差,故飛機總共需
第九屆藍橋杯省賽C++A組 列印圖形
標題:列印圖形 如下的程式會在控制檯繪製分形圖(就是整體與區域性自相似的圖形)。 當n=1,2,3的時候,輸出如下: 請仔細分析程式,並填寫劃線部分缺少的程式碼。 #include <stdio.h> #include <stdlib.h> void
第九屆藍橋杯省賽C++A組 第幾個幸運數
標題:第幾個幸運數 到x星球旅行的遊客都被髮給一個整數,作為遊客編號。 x星的國王有個怪癖,他只喜歡數字3,5和7。 國王規定,遊客的編號如果只含有因子:3,5,7,就可以獲得一份獎品。 我們來看前10個幸運數字是: 3 5 7 9 15 21 25 27 35 45 因而第
第九屆藍橋杯省賽C++A組 星期一
標題:星期一 整個20世紀(1901年1月1日至2000年12月31日之間),一共有多少個星期一? (不要告訴我你不知道今天是星期幾) 注意:需要提交的只是一個整數,不要填寫任何多餘的內容或說明文字。 答案:5217 思路:1900年之後的日期直接用Excel求
第九屆藍橋杯省賽C++A組 分數
標題:分數 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每項是前一項的一半,如果一共有20項,求這個和是多少,結果用分數表示出來。 類似:3/2 當然,這只是加了前2項而已。分子分母要求互質。 注意: 需要提交的是已經約分過的分數,中間任何位置不能
浪潮杯第九屆山東acm程式設計賽C題 Cities
題目描述 There are n cities in Byteland, and the i city has a value a . The cost of building a bidirectional road between two cities is the
第九屆藍橋杯省賽(2)--明碼
標題:明碼 漢字的字形存在於字型檔中,即便在今天,16點陣的字型檔也仍然使用廣泛。 16點陣的字型檔把每個漢字看成是16x16個畫素資訊。並把這些資訊記錄在位元組中。 一個位元組可以儲存8位資訊,用32個位元組就可以存一個漢字的字形了。 把每個位元組轉為2進製表示,1表
第九屆藍橋杯省賽C++B組第四題
測試次數 x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。 各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出一個耐摔指數來,之後才允許上市流
第九屆藍橋杯省賽C++B組第五題
快速排序 以下程式碼可以從陣列a[]中找出第k小的元素。 它使用了類似快速排序中的分治演算法,期望時間複雜度是O(N)的。 請仔細閱讀分析原始碼,填寫劃線部分缺失的內容。 #include <st
第九屆藍橋杯省賽(9) -- 全球變暖
一.題目 標題:全球變暖 你有一張某海域NxN畫素的照片,"."表示海洋、"#"表示陸地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼