[BOJ] 10163. 色紙
質問する
平面上には色の異なる矩形色紙N枚が順次並べられている.このとき色紙が斜めに置かれていない場合.すなわち、すべてのカラー紙のエッジは互いに平行であるか、互いに垂直であるか、または両方である.図-1は、1番、2番、3番の3枚の色紙の並び順を示しています.
ここで図-2に示すように、4番の色紙をもう1枚置くと、3番の色紙が完全に隠れて見えなくなります.そして、1番と2番は部分的に隠し、4番は完全に隠します.
n枚のカラーペーパーが順番に指定された位置に置かれている場合は、各カラーペーパーが見える部分の面積を求めるプログラムを作成します.
入力
入力された第1行は、カラー紙の長さを表す整数N(1≦N≦100)を与える.次に、N枚のカラー紙についての入力は、1枚のカラー紙ごとに1行ずつ与えられる.カラーペーパーが配置される平面は、横方向最大1001格子、縦方向最大1001格子からなるメッシュ形状である.メッシュの各格子は、横、縦1の面積が1の正方形です.
横6グリッドと縦6グリッドからなるグリッドを例に挙げ、各グリッドに表示される値(a,b)がそのグリッドの番号を表す.一番左下の格子は(0,0)一番右上の格子は(5,5)です.
色紙が置かれた状態は、左下隅の格子の番号、幅、高さを4つの整数で表します.例えば、上図に灰色で表示された色紙(1、4)の最左下隅、幅3、高さ2は、1、4、3 2で表される.カラーペーパーがグリッドの境界を超えている場合はありません.
しゅつりょく
入力中に所定の順序でN枚のカラー紙を平面上に置くと、入力中に所定の順序で各行に整数が出力され、各カラー紙表示部の面積は整数となる.カラーペーパーが見えない場合は整数0を出力します.
サブタスク
入力例1
2
0 0 10 10
2 2 6 6
サンプル出力1
64
36
入力例2
3
0 2 10 10
7 9 8 4
8 4 10 6
サンプル出力2
81
25
60
入力例3
4
0 2 10 10
7 9 8 4
8 4 10 6
6 0 12 10
サンプル出力3
62
24
0
120
に答える
質問タイプ:実装色紙を入力する順に、地図[]]に色紙の領域を数字で表す. 次の色紙が入ってくると、0以外の数字が格納されている場合(前に貼られた色紙の領域であれば)、その色紙の領域-1が表示され、現在の色紙の領域が表示されます. の最後のカラー紙を貼った後、出力領域の幅.
*入力時の幅と高さの入力順序が混同されていますので、エラーが発生していますのでご注意ください
コード#コード#
平面上には色の異なる矩形色紙N枚が順次並べられている.このとき色紙が斜めに置かれていない場合.すなわち、すべてのカラー紙のエッジは互いに平行であるか、互いに垂直であるか、または両方である.図-1は、1番、2番、3番の3枚の色紙の並び順を示しています.
ここで図-2に示すように、4番の色紙をもう1枚置くと、3番の色紙が完全に隠れて見えなくなります.そして、1番と2番は部分的に隠し、4番は完全に隠します.
n枚のカラーペーパーが順番に指定された位置に置かれている場合は、各カラーペーパーが見える部分の面積を求めるプログラムを作成します.
入力
入力された第1行は、カラー紙の長さを表す整数N(1≦N≦100)を与える.次に、N枚のカラー紙についての入力は、1枚のカラー紙ごとに1行ずつ与えられる.カラーペーパーが配置される平面は、横方向最大1001格子、縦方向最大1001格子からなるメッシュ形状である.メッシュの各格子は、横、縦1の面積が1の正方形です.
横6グリッドと縦6グリッドからなるグリッドを例に挙げ、各グリッドに表示される値(a,b)がそのグリッドの番号を表す.一番左下の格子は(0,0)一番右上の格子は(5,5)です.
色紙が置かれた状態は、左下隅の格子の番号、幅、高さを4つの整数で表します.例えば、上図に灰色で表示された色紙(1、4)の最左下隅、幅3、高さ2は、1、4、3 2で表される.カラーペーパーがグリッドの境界を超えている場合はありません.
しゅつりょく
入力中に所定の順序でN枚のカラー紙を平面上に置くと、入力中に所定の順序で各行に整数が出力され、各カラー紙表示部の面積は整数となる.カラーペーパーが見えない場合は整数0を出力します.
サブタスク
入力例1
2
0 0 10 10
2 2 6 6
サンプル出力1
64
36
入力例2
3
0 2 10 10
7 9 8 4
8 4 10 6
サンプル出力2
81
25
60
入力例3
4
0 2 10 10
7 9 8 4
8 4 10 6
6 0 12 10
サンプル出力3
62
24
0
120
に答える
質問タイプ:実装
コード#コード#
import java.io.*;
import java.util.*;
public class Main_bj_10163_색종이 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] map = new int[1001][1001];
int[] ans = new int[N + 1];
StringTokenizer st;
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine(), " ");
int y = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
ans[i] = w * h;
int cnt = 0;
for (int a = y; a < y + w; a++) {
for (int b = x; b < x + h; b++) {
if (map[a][b] != 0) {
cnt++;
ans[map[a][b]] -= 1;
}
map[a][b] = i;
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= N; i++)
sb.append(ans[i]).append("\n");
System.out.println(sb.toString());
br.close();
}
}
Reference
この問題について([BOJ] 10163. 色紙), 我々は、より多くの情報をここで見つけました https://velog.io/@erin_lee/BOJ-10163.-색종이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol