02
09

 

https://www.acmicpc.net/problem/31418

 

BFS๋กœ ์ฒ˜์Œ์— ์ ‘๊ทผํ–ˆ์œผ๋‚˜, W, H, T๊ฐ€ ์ตœ๋Œ€ 10^6์ธ๊ฑธ ํ™•์ธํ•˜๊ณ  ์™„์ „ํƒ์ƒ‰์ด ์•„๋‹Œ ๊ฑธ ์•Œ์•˜๋‹ค... 


ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ •

java
์ ‘๊ธฐ
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static long w, h, k, t;
static int[] di = {-1, -1, 0, 1, 1, 1, 0, -1};
static int[] dj = {0, 1, 1, 1, 0, -1, -1, -1};
static long mod = 998244353;
static long ans;
public static void main(String[] args) throws IOException {
// System.setIn(new FileInputStream("res/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
w = Long.parseLong(st.nextToken());
h = Long.parseLong(st.nextToken());
k = Long.parseLong(st.nextToken());
t = Long.parseLong(st.nextToken());
ans = 1;
for (int i = 1; i <= k; i++) {
st = new StringTokenizer(br.readLine(), " ");
// i๋ฒˆ์งธ ๋ฐ”์ด๋Ÿฌ์Šค ์œ„์น˜
long x = Long.parseLong(st.nextToken());
long y = Long.parseLong(st.nextToken());
go(x, y);
}
System.out.println(ans);
}
public static void go(long x, long y) {
long wCase = Math.min(w, x + t) - Math.max(1, x - t) + 1;
long hCase = Math.min(h, y + t) - Math.max(1, y - t) + 1;
ans = (ans * wCase) % mod;
ans = (ans * hCase) % mod;
}
}

๋ง์ด ์ข€ ์–ด๋ ต๋‹ค.

๋Œ€๊ฐ์„ ๋„ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, t์ดˆ์ผ ๋•Œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋Š” ์ •์‚ฌ๊ฐํ˜•์ด ๋œ๋‹ค. ๋˜ํ•œ ๊ฐ ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋ฐ”์ด๋Ÿฌ์Šค์˜ ์ด๋™ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๊ฐ๊ฐ ๊ณฑํ•ด๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค.

 

์ด๋™ ๋ฒ”์œ„๊ฐ€ ๊ณง ์ด๋™ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋˜๋ฏ€๋กœ, ๊ฐ€๋กœ์™€ ์„ธ๋กœ ์ด๋™๋ฒ”์œ„๋ฅผ ์‚ฌ๊ฐํ˜• ํ˜•ํƒœ๋กœ ๊ณฑํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

๊ฐ€๋กœ ์ด๋™๋ฒ”์œ„๋Š” [max(1,xโˆ’T),min(W,x+T)](์™ผ์ชฝ๋์—์„œ ์˜ค๋ฅธ์ชฝ ๋๊นŒ์ง€) ์„ธ๋กœ ์ด๋™๋ฒ”์œ„๋Š” [max(1,yโˆ’T),min(H,y+T)] (๋งจ ์œ„์—์„œ ๋งจ ์•„๋ž˜๊นŒ์ง€) ๋‹ค.

 

์ด ๋‘ ์ด๋™๋ฒ”์œ„๋ฅผ ๊ณฑํ•˜๋ฉด ํ•ด๋‹น ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ์ฝ์—ˆ์„ ๋•Œ ๋ถ„ํฌ์˜ ๊ฐœ๋…์ด ์ด๊ฑฐ๋ผ๋Š” ๊ฒŒ ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๋˜์ง€์•Š์•„ ๋” ์–ด๋ ค์› ๋‹ค.

 

max, min์„ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” W, H๋ฅผ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ํ•ด์•ผ๋˜๋‹ˆ๊นŒ ์œ ํšจ์„ฑ ์ฒดํฌ ๊ฐœ๋…์œผ๋กœ ๋„ฃ์–ด๋’€๋‹ค.

 

ans์—๋Š” ๋ˆ„์ ๊ณฑ์„ ํ•ด์•ผ๋˜๋Š”๋ฐ, ๋ฌธ์ œ์—์„œ mod ๊ฐ’์„ ์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ๊ณฑํ•  ๋•Œ๋งˆ๋‹ค mod๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.

 

์ด๊ฒŒ ์กฐํ•ฉ์ธ ๊ฑธ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ์•„์˜ˆ ๋ชปํ’€์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”!

 

๋ฐ˜์‘ํ˜•
COMMENT