• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            微軟2014實習生及秋令營技術類職位在線測試


            1.String reorder

            Time Limit: 10000ms
            Case Time Limit: 1000ms
            Memory Limit: 256MB

             

            Description

            For this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a’, ‘z’).

            Your program should reorder and split all input string characters into multiple segments, and output all segments as one concatenated string. The following requirements should also be met,
            1. Characters in each segment should be in strictly increasing order. For ordering, ‘9’ is larger than ‘0’, ‘a’ is larger than ‘9’, and ‘z’ is larger than ‘a’ (basically following ASCII character order).
            2. Characters in the second segment must be the same as or a subset of the first segment; and every following segment must be the same as or a subset of its previous segment.

            Your program should output string “<invalid input string>” when the input contains any invalid characters (i.e., outside the '0'-'9' and 'a'-'z' range).

             

            Input

            Input consists of multiple cases, one case per line. Each case is one string consisting of ASCII characters.

             

            Output

            For each case, print exactly one line with the reordered string based on the criteria above.

             

            Sample In

            aabbccdd
            007799aabbccddeeff113355zz
            1234.89898
            abcdefabcdefabcdefaaaaaaaaaaaaaabbbbbbbddddddee


            Sample Out

            abcdabcd
            013579abcdefz013579abcdefz
            <invalid input string>
            abcdefabcdefabcdefabdeabdeabdabdabdabdabaaaaaaa


            代碼:
             1#include <cstdio>
             2#include <cstring>
             3
             4using namespace std;
             5
             6typedef  long long  Lint;
             7
             8#define  L  256
             9Lint cnt[ L ];
            10Lint tot;
            11
            12#define  INVALID  "<invalid input string>"
            13
            14int main() {
            15        int ch = 1;
            16        int i;
            17        int invalid;
            18        while ( EOF != ch ) {
            19                memset( cnt, 0sizeof(cnt) );
            20                for ( ch = getchar(); (EOF != ch) && ('\n' != ch); ch = getchar() ) {
            21                        ++cnt[ ch ];
            22                        ++tot;
            23                }

            24                invalid = 0;
            25                for ( i = 0; i < L; ++i ) {
            26                        if (    (0 < cnt[ i ]) && 
            27                                (!      (       ( ('0' <= i) && ('9' >= i)
            28                                                ) || 
            29                                                ( ('a' <= i) && ('z' >= i)
            30                                                )
            31                                        )
            32                                )
            33                        ) {
            34                                invalid = 1;
            35                                break;
            36                        }

            37                }

            38                if ( invalid ) {
            39                        puts( INVALID );
            40                        continue;
            41                }

            42
            43                while ( 0 < tot ) {
            44                        for ( i = 0; i < L; ++i ) {
            45                                if ( 0 < cnt[ i ] ) {
            46                                        putchar( i );
            47                                        --cnt[ i ];
            48                                        --tot;
            49                                }

            50                        }

            51                }

            52                puts( "" );
            53        }

            54        return 0;
            55}

            56




            2.K-th string

            Time Limit: 10000ms
            Case Time Limit: 1000ms
            Memory Limit: 256MB

             

            Description

            Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and output the K-th string according to the dictionary order. If s​uch a string doesn’t exist, or the input is not valid, please output “Impossible”. For example, if we have two ‘0’s and two ‘1’s, we will have a set with 6 different strings, {0011, 0101, 0110, 1001, 1010, 1100}, and the 4th string is 1001.


            Input

            The first line of the input file contains a single integer t (1 ≤ t ≤ 10000), the number of test cases, followed by the input data for each test case.
            Each test case is 3 integers separated by blank space: N, M(2 <= N + M <= 33 and N , M >= 0), K(1 <= K <= 1000000000). N stands for the number of ‘0’s, M stands for the number of ‘1’s, and K stands for the K-th of string in the set that needs to be printed as output.


            Output

            For each case, print exactly one line. If the string exists, please print it, otherwise print “Impossible”.


            Sample In

            3
            2 2 2
            2 2 7
            4 7 47

            Sample Out

            0101
            Impossible
            01010111011


            代碼:
             1#include <cstdio>
             2#include <cstring>
             3
             4using namespace std;
             5
             6#define  IMP  "Impossible"
             7
             8typedef  long long  Lint;
             9
            10#define  L  35
            11
            12Lint c[ L ][ L ];
            13char ans[ L+L ];
            14
            15void init() {
            16        int i, j;
            17        memset( c, 0sizeof(c) );
            18        c[ 0 ][ 0 ] = 1;
            19        for ( i = 1; i < L; ++i ) {
            20                c[ i ][ 0 ] = c[ i ][ i ] = 1;
            21                for ( j = 1; j < i; ++j ) {
            22                        c[ i ][ j ] = c[ i-1 ][ j-1 ] + c[ i-1 ][ j ];
            23                }

            24        }

            25}

            26
            27static int solve_i( int n0, int n1, int idx, int off ) {
            28        if ( (0 == n0) && (0 == n1) && (0 == idx) ) {
            29                return 1;
            30        }

            31
            32        if ( ((1 > n0) || (1 > n1)) && (1 != idx) ) {
            33                return 0;
            34        }

            35
            36        if ( 1 == idx ) {
            37                for ( int i = 0; i < n0; ++i ) {
            38                        ans[ off + i ] = '0';
            39                }

            40                for ( int i = 0; i < n1; ++i ) {
            41                        ans[ off + n0 + i ] = '1';
            42                }

            43                return 1;
            44        }

            45
            46        int i = 0;
            47        while ( c[n1+i-1][i] < idx ) {
            48                idx -= c[n1+i-1][i];
            49                ++i;
            50        }

            51        for ( int j = 0; j < n0 - i; ++j ) {
            52                ans[ off + j ] = '0';
            53        }

            54        ans[ off + n0 - i ] = '1';
            55        return solve_i( i, n1-1, idx, off + n0 - i + 1 );
            56}

            57
            58/*
            59n0=n=4, n1=m=7, idx=k=47
            60
            61i   n0      n1
            62
            630   0000    1??????     c[6][0] = 1
            641   0001    ???????     c[7][1] = 7
            652   001?    ???????     c[8][2] = 28
            663   01??    ???????     c[9][3] = 84
            674   1???    ???????     c[10][4]
            68
            69*/

            70
            71int solve( int n, int m, int k ) {
            72        if ( c[n+m][n] < k ) {
            73                return 0;
            74        }

            75        memset( ans, 0sizeof(ans) );
            76        return solve_i( n, m, k, 0 );
            77}

            78
            79int main() {
            80        int tot_case;
            81        int n, m, k;
            82
            83        init();
            84
            85        scanf( "%d"&tot_case );
            86        while ( 0 < tot_case-- ) {
            87                scanf( "%d%d%d"&n, &m, &k );
            88
            89                if ( solve( n, m, k ) ) {
            90                        puts( ans );
            91                }

            92                else {
            93                        puts( IMP );
            94                }

            95        }

            96
            97        return 0;
            98}

            99




            3.Reduce inversion count

            Time Limit: 10000ms
            Case Time Limit: 1000ms
            Memory Limit: 256MB

            Description

            Find a pair in an integer array that swapping them would maximally decrease the inversion count of the array. If such a pair exists, return the new inversion count; otherwise returns the original inversion count.

            Definition of Inversion: Let (A[0], A[1] ... A[n]) be a sequence of n numbers. If i < j and A[i] > A[j], then the pair (i, j) is called inversion of A.

            Example:
            Count(Inversion({3, 1, 2})) = Count({3, 1}, {3, 2}) = 2
            InversionCountOfSwap({3, 1, 2})=>
            {
              InversionCount({1, 3, 2}) = 1 <-- swapping 1 with 3, decreases inversion count by 1
              InversionCount({2, 1, 3}) = 1 <-- swapping 2 with 3, decreases inversion count by 1
              InversionCount({3, 2, 1}) = 3 <-- swapping 1 with 2 , increases inversion count by 1
            }


            Input

            Input consists of multiple cases, one case per line.Each case consists of a sequence of integers separated by comma.

            Output

            For each case, print exactly one line with the new inversion count or the original inversion count if it cannot be reduced.


            Sample In

            3,1,2
            1,2,3,4,5

            Sample Out

            1
            0


            解法:
            窮舉兩元素交換,使用修改的歸并排序求逆序對數,時間復雜度O(n*n*n*logn)。



            4.Most Frequent Logs
            不會。










            posted on 2014-04-13 19:11 coreBugZJ 閱讀(3738) 評論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithm

            久久er热视频在这里精品| 97精品伊人久久大香线蕉| 91久久精一区二区三区大全| 99久久99久久| 中文成人无码精品久久久不卡| 精品综合久久久久久97| 青青草原综合久久大伊人精品| 一本久久免费视频| www.久久热| 亚洲午夜久久久久久久久电影网| 狠色狠色狠狠色综合久久| 亚洲国产日韩综合久久精品| 国产成人久久激情91| 7777久久久国产精品消防器材| 激情综合色综合久久综合| 国产精品99精品久久免费| 亚洲欧美日韩久久精品第一区| 久久人人爽人人爽AV片| 亚洲国产精品一区二区久久| 无码伊人66久久大杳蕉网站谷歌| 亚洲精品无码专区久久同性男| 亚洲精品高清国产一久久| 狠狠88综合久久久久综合网 | 久久精品一区二区国产| 99久久免费国产精品特黄| 久久综合久久鬼色| 99久久精品九九亚洲精品| 久久综合欧美成人| 69SEX久久精品国产麻豆| 色偷偷偷久久伊人大杳蕉| 精品国产乱码久久久久久人妻| 久久亚洲国产成人影院网站| 99热精品久久只有精品| 国产精品99久久久久久猫咪| 久久播电影网| 久久亚洲欧洲国产综合| 一本久久精品一区二区| 伊人久久大香线焦AV综合影院 | 国产成人无码精品久久久久免费 | 人妻精品久久无码专区精东影业| 久久久国产精华液|