結果
| 問題 |
No.1170 Never Want to Walk
|
| コンテスト | |
| ユーザー |
nc_research
|
| 提出日時 | 2021-09-29 16:44:06 |
| 言語 | Java (openjdk 23) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,326 bytes |
| コンパイル時間 | 3,406 ms |
| コンパイル使用メモリ | 79,396 KB |
| 実行使用メモリ | 116,092 KB |
| 最終ジャッジ日時 | 2024-07-16 12:20:49 |
| 合計ジャッジ時間 | 14,906 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 TLE * 1 -- * 16 |
ソースコード
import java.util.Scanner;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
public class App
{
public static void main( String[] args )
{
// 1. 入力の受け取り
Scanner scan = new Scanner(System.in);
String first_line = scan.nextLine();
String second_line = scan.nextLine();
scan.close();
// 2. 入力から,N,A,B,x.get(i)を抽出
int n = Integer.valueOf(first_line.split(" ")[0]);
int a = Integer.valueOf(first_line.split(" ")[1]);
int b = Integer.valueOf(first_line.split(" ")[2]);
ArrayList<Integer> x = new ArrayList<Integer>();
String[] x_str = second_line.split(" ");
for(int i = 0; i < x_str.length; i++){
x.add(Integer.valueOf(x_str[i]));
}
// 3. 各駅iから1回以下で移動可能な駅リストを計算(計算量:o(N^2))
HashMap<Integer, HashSet<Integer>> can_move_from_index = new HashMap<Integer, HashSet<Integer>>();
// 3.1 0回で移動可能な駅を格納
for(int i = 0; i < x.size(); i++){
can_move_from_index.put(i, new HashSet<Integer>());
can_move_from_index.get(i).add(i);
}
// 3.2 1回で移動可能な駅を格納
for(int i = 0; i < x.size(); i++){
for(int j = i; j < x.size(); j++){
if(x.get(j) - x.get(i) < a) continue;
if(x.get(j) - x.get(i) > b) break;
can_move_from_index.get(i).add(j);
can_move_from_index.get(j).add(i);
}
}
// 4. 各駅から2回以上で移動可能な駅リストの計算(計算量o(N^2))
for(int i = 0; i < x.size(); i++){
for(int j = 0; j < x.size(); j++){
if(can_move_from_index.get(i).contains(j)){
int size_before_add = can_move_from_index.get(i).size();
can_move_from_index.get(i).addAll(can_move_from_index.get(j));
int size_after_add = can_move_from_index.get(i).size();
if(size_before_add < size_after_add){
j = 0;
}
}
}
System.out.println(can_move_from_index.get(i).size());
}
}
}
nc_research