1. 程式人生 > >鄭大第九屆校賽正式賽(1812: sort)

鄭大第九屆校賽正式賽(1812: sort)

1812: sort

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 155  Solved: 28

SubmitStatusWeb Board

Description

想必大家對排序已經很熟悉了,但是spy好像對排序不太熟悉,有一天,他看到這樣一個關於排序的題目:

對於 k 個用空格分隔開的整數,依次為 n1, n2 … nk。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行升序排列,此外,將餘下下標能被 3 整除的數在這些數字原有的位置上進行降序排列。

spy想了半天不知道怎麼排序,你可以幫助他麼?

Input

多組資料,每組資料一行,為k個小於1000的

正整數,依次為 n1, n2 … nk。(1 <= k <= 100000)

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畫素的照片,"."表示海洋、"#"表示陸地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼