2018第9回JavaグループBブルーブリッジカップ州大会本当の質問

ブルーブリッジカップの長年にわたるトピックコラムです。更新され、前年度からの実際の質問と回答が公開されます。友達を歓迎して私に注意を払ってください。あなたの好きなものと注意が私にとって最高の動機です!
毎日1つの本当の質問を更新するので、お楽しみに

Lanqiaoカップの過去の論文と詳細な回答


質問1:最初の数日

タイトル
は、その年の最初の日である2000年1月1日を説明しています。
では、2000年5月4日、その年は何日でしたか?

注:送信する必要があるのは整数です。余分なコンテンツは入力しないでください。
トピック分析
トピックコード



質問2:正方形を数える

タイトルの説明
図p1.pngに示すように、2次元平面には無数の1x1の小さな正方形があります。
ここに画像の説明を挿入
小さな正方形の頂点を中心に半径1000の円を描きます。
この円の中に完全な小さな正方形がいくつあるか計算できますか?
トピック分析
トピックコード



3番目の質問:複雑な力

タイトルの説明
私を虚数単位とします。任意の正の整数nの場合、(2 + 3i)^ nの実数部と虚数部は両方とも整数です。
(2 + 3i)^ 123456はどのくらいですか?これは(2 + 3i)の123456の累乗です。この数値は非常に大きく、正確な表現が必要です。

答えは「実数部±虚数部i」の形式で書かれています。実数部と虚数部はどちらも整数であり(科学的記数法では表現できません)、中央にスペースは追加されず、前に正符号は追加されません。本当の部分はポジティブです。(2 + 3i)^ 2は次のように記述されます:-5 + 12i、
(2 + 3i)^ 5は次のように記述されます:122-597i
質問分析
質問コード



質問4:テストの数

タイトルには
、惑星Xの住人の気性が悪いと書かれていますが、幸いなことに、彼らが怒っているときの唯一の異常な行動は、携帯電話を落とすことです。
大手メーカーもさまざまな落下防止携帯電話を発売しています。プラネットXの品質監督局は、携帯電話を販売する前に、落下抵抗試験を実施し、落下抵抗指数を評価する必要があると規定しています。

プラネットXには、落下抵抗テストに使用できる多くのそびえ立つ塔があります。タワーの各階の高さは同じですが、地球と少し違うのは、1階が地面ではなく、2階に相当することです。

電話が第7層から投げ出され、壊れていないが、第8層が壊れている場合、携帯電話はindex = 7に耐えます。
特に、携帯電話が第1層から壊れた場合、落下抵抗指数は= 0になります。
タワー最上階のn階が壊れていない場合、落下抵抗指数= n

テストの回数を減らすために、各メーカーの携帯電話3台を試してテストに参加してください。

あるテストの塔の高さは1000階建てですが、常に最善の戦略を採用する場合、最悪の運の下で電話の落下抵抗指数を決定するために、最大で何回テストする必要がありますか?

この最大数のテストを入力してください。
トピック分析
トピックコード



質問5:クイックソート

タイトルの説明
次のコードは、配列a []からk番目に小さい要素を見つけることができます。
クイックソートと同様の分割統治アルゴリズムを使用し、予想される時間計算量はO(N)です。
ソースコードをよく読んで分析し、下線部分に不足している内容を記入してください。

import java.util.Random;
public class Main{
    
    
public static int quickSelect(int a[], int l, int r, int k) {
    
    
Random rand = new Random();
int p = rand.nextInt(r - l + 1) + l;
int x = a[p];
int tmp = a[p]; a[p] = a[r]; a[r] = tmp;
int i = l, j = r;
while(i < j) {
    
    
                while(i < j && a[i] < x) i++;
                if(i < j) {
    
    
                        a[j] = a[i];
                        j--;
                }
                while(i < j && a[j] > x) j--;
                if(i < j) {
    
    
                        a[i] = a[j];
                        i++;
                }
        }
        a[i] = x;
        p = i;
        if(i - l + 1 == k) return a[i];
        if(i - l + 1 < k) return quickSelect( _________________________________ ); //填空
        else return quickSelect(a, l, i - 1, k);
}
public static void main(String args[]) {
    
    
int [] a = {
    
    1, 4, 2, 8, 5, 7};
System.out.println(quickSelect(a, 0, 5, 4));
}
}

トピック分析
トピックコード



質問6:インクリメンタルトリプル

タイトルの説明
3つの整数配列
A = [A1、A2、…AN]、
B = [B1、B2、…BN]、
C = [C1、C2、…CN]がある場合、
トリプルがいくつあるかを数えてください(i、j 、k)は以下を満たします:

  1. 1 <= i、j、k <= N
  2. Ai <Bj <Ck

【入力形式】
1行目に整数Nが含まれています。
2行目には、N個の整数A1、A2、…ANが含まれています。
3行目には、N個の整数B1、B2、…BNが含まれています。
4行目には、N個の整数C1、C2、…CNが含まれています。

30%データの場合、1 <= N <= 100
60%データの場合、1 <= N <= 1000
100%データの場合、1 <= N <= 100000 0 <= Ai、Bi、Ci <= 100000

【出力形式】
整数は答えを表します

[入力例]
3
1 1 1
2 2 2
3 3 3

【サンプル出力】
27

リソース合意:
ピークメモリ消費量(仮想マシンを含む)<256MCPU
消費量<1000ms
トピック分析
トピックコード



質問7:スパイラルポリライン

タイトルの説明
図p1.pgnに示されているらせん状の破線は、平面上のすべての点を1回だけ通過します。
ポイント全体(X、Y)について、原点dis(X、Y)までの距離を、原点から(X、Y)までのスパイラルポリラインセグメントの長さとして定義します。
ここに画像の説明を挿入
たとえば、dis(0、1)= 3、dis(-2、-1)= 9

ポイント座標全体(X、Y)が与えられた場合、dis(X、Y)を計算できますか?

【入力フォーマット】
X、Y

40%データの場合、-1000 <= X、Y <= 1000
70%データの場合、-100,000 <= X、Y <= 100000
100%データの場合、-1000000000 <= X、Y <= 1000000000

【出力フォーマット】
outputdis(X、Y)

【入力例】
01

【サンプル出力】

3

リソース合意:
ピークメモリ消費量(仮想マシンを含む)<256MCPU
消費量<1000ms
トピック分析
トピックコード



質問8:ログ統計

タイトルの説明
XiaoMingは、プログラマーフォーラムを維持しています。現在、彼は合計N行の「いいね」ログを収集しました。各行の形式は次のとおりです。

ts id

ts時に投稿番号が付けられたIDが「いいね」を受け取ったことを示します。

Xiao Mingは、かつて「ホットな投稿」だった投稿を数えたいと考えています。投稿が長さDの任意の期間にK以上のいいねを受け取った場合、XiaoMingはその投稿がかつて「ホット投稿」であったと考えます。

具体的には、[T、T + D)の期間中に投稿がK件以上のいいねを受け取ることを満足する特定のモーメントTがある場合(左が閉じて右が開いていることに注意)、投稿はかつて「ホットポスト」。

ログがあれば、XiaoMingがかつて「ホットな投稿」だったすべての投稿番号を数えるのを手伝ってください。

【入力形式】
1行目にはN、D、Kの3つの整数が含まれています。
次のN行には、1行に1つのログがあり、2つの整数tsとidが含まれています。

データの50%の場合、1 <= K <= N <= 1000
データの100%の場合、1 <= K <= N <= 100000 0 <= ts <= 100000 0 <= id <= 100000

【出力形式】
ホットポストIDを昇順で出力しますIDごとに1行。

【入力例】710
2
0 1
0 10
10 10
10 1
9
1100
3100 3

[サンプル出力]
1
3

リソース合意:
ピークメモリ消費量(仮想マシンを含む)<256MCPU
消費量<1000ms

トピック分析
トピックコード



質問9:地球温暖化

タイトルの説明
以下に示すように、NxNピクセルの特定の海域の写真があります。「。」は海を意味し、「#」は陸を意味します。


。##…
。##
……##。
…####。
…###。

その中で、「上、下、左、右」の4方向につながった土地が島を形成しています。たとえば、上の写真には2つの島があります。

地球温暖化により海が上昇したため、科学者たちは、今後数十年で島の端のピクセル領域が海水に沈むと予測しています。具体的には、陸のピクセルが海に隣接している場合(上下、左、右の4つの隣接するピクセルの間に海がある場合)、水没します。

たとえば、上の写真の海域は、将来的に次のようになります。

...
...
...
...
...#...
...
...

計算してください:科学者の予測によると、写真の島の数は完全に水没します。

【入力形式】
1行目に整数Nが含まれています。(1 <= N <= 1000)
次のN行とN列は、海域の写真を表しています。

この画像は、最初の行、最初の列、N番目の行、およびN番目の列のピクセルがすべて海であることを保証します。

【出力形式】
整数は答えを表します。

【入力例】
7

。##…
。##
……##。
…####。
…###。

【サンプル出力】
1

リソース合意:
ピークメモリ消費量(仮想マシンを含む)<256MCPU
消費量<1000ms
トピック分析
トピックコード



10番目の質問:ヒープ数

タイトルの説明
N個の要素を含むヒープは、N個のノードを含む完全な二分木と見なすことができます。
各ノードには重みがあります。ルートヒープが小さい場合、親ノードの重みは子ノードの重みよりも小さくする必要があります。

Nノードの重みを1〜Nとすると、ルートパイルがいくつあるかわかりますか?

たとえば、N = 4の場合、次の3つのタイプがあります。

    1 
   / \ 
  2 3 
 / 
4 

    1 
   / \ 
  3 2 
 / 
4 

    1 
   / \ 
  2~4 
 / 
3

数値が整数の範囲を超える可能性があるため、結果を1000000009で除算した余りを出力するだけで済みます。

【入力形式】
整数N。
データの40%の場合、1 <= N <= 1000
データの70%の場合、1 <= N <= 10000
データの100%の場合、1 <= N <= 100000

【出力形式】
整数は答えを表します。

【入力例】
4

【サンプル出力】
3

リソース合意:
ピークメモリ消費量(仮想マシンを含む)<256MCPU
消費量<1000ms
トピック分析
トピックコード



おすすめ

転載: blog.csdn.net/kiwi_berrys/article/details/111496426