teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容が途中までの内容でアップロードされていたため、更新しました

2021/10/30 05:37

投稿

taka10taka12
taka10taka12

スコア7

title CHANGED
File without changes
body CHANGED
@@ -16,26 +16,93 @@
16
16
  ```標準入力
17
17
  H W
18
18
  A1,1 A1,2 ・・・ A1,W
19
- A2,1 A2,2 ・・・ A2,
19
+ A2,1 A2,2 ・・・ A2,W
20
+
21
+ AH,1 AH,2 ・・・ AH,W
20
22
  ```
21
23
 
24
+ **出力**
25
+ ```出力
26
+ B1,1 B1,2 ・・・ B1,W
27
+ B2,1 B2,2 ・・・ B2,W
28
+
29
+ BH,1 BH,2 ・・・ BH,W
30
+ ```
22
31
 
32
+ ### 自分の回答
33
+ マス(i,j)ごとにi行の合計とj列の合計を計算すると、計算量はo(HW(H+W))となる。
34
+ これでは計算量がo(10^9)となり、計算量が膨大となるため、以下の方法で回答を作成した。
35
+ ①前処理として、先にi行の合計及びj列の合計を求め、結果をメモする
36
+ ②マス(i,j)の出力として(i行の合計値)+(j列の合計値)-(マス(i,j)の値)を計算
37
+ 以上の処理を行うことで、計算量としてはo(HW)に抑えられる。
23
- ### 発生している問題・エラメッセージ
38
+ 以上の考えのもと、以下のコドを作成した。
39
+ ```C#
40
+ using System;
41
+ using System.Collections.Generic;
42
+ using System.Linq;
24
43
 
44
+ namespace AtCoder
25
- ```
45
+ {
26
- エラーメッセージ
46
+ class Problem
27
- ```
47
+ {
48
+ static void Main()
49
+ {
50
+ // Step1 入力を受け取る
51
+ // 整数H,Wを受け取る
52
+ var input = Console.ReadLine().Split(" ").Select(int.Parse).ToArray();
53
+ var H = input[0];
54
+ var W = input[1];
28
55
 
29
- ### 該当ソースコード
56
+ // H行W列配列を受け取る
57
+ int[,] nums = new int[H,W];
58
+ for(int i = 0; i < H; i++)
59
+ {
60
+ var gyou = Console.ReadLine().Split().Select(int.Parse).ToArray();
61
+ for (int j = 0; j < W; j++)
62
+ {
63
+ nums[i,j] = gyou[j];
64
+ }
65
+ }
30
66
 
67
+ // (前処理)1行ごと1列ごとに合計を求め、メモする
68
+ // 横方向の合計の計算メモを作成
69
+ int[] sumArrayH = new int[H];
70
+ // 縦方向の合計の計算メモを作成
71
+ int[] sumArrayW = new int[W];
72
+
73
+ // 縦方向と横方向の計算結果をメモに入力する
74
+ for (int i = 0; i < H; i++)
75
+ {
76
+ for (int j = 0; j < W; j++)
77
+ {
78
+ sumArrayH[i] += nums[i,j];
79
+ sumArrayW[j] += nums[i,j];
80
+ }
81
+ }
82
+
83
+ // Step3 マス(i,j)の計算を行い、結果を出力する
84
+ for (int i = 0; i < H; i++)
85
+ {
31
- ```ここに言語名を入力
86
+ var sum = 0;
32
- ソースコード
87
+ for (int j = 0; j < W; j++)
88
+ {
89
+ sum = sumArrayH[i] + sumArrayW[j] - nums[i,j];
90
+ Console.Write("{0} ", sum);
91
+ }
92
+ Console.WriteLine("");
93
+ }
94
+ }
95
+ }
96
+ }
33
97
  ```
34
98
 
35
- ### 試したこと
99
+ ### 提出結果
36
100
 
101
+ AC 14
37
- ここに問題に対して試したことを記載してください。
102
+ TLE 2 (hand04.txt、random07.txt)
38
103
 
39
- ### 補足情報(FW/ツールのバージョンなど)
40
104
 
105
+ ### 分からない点
106
+
107
+ 公式の回答も前処理を使っており、TLEとなる原因がわかりません。
41
- ここにより詳細な情報を記載しい。
108
+ 教えいたけると幸です