Algorithm/λ°±μ€€

λ°±μ€€ 11660번 - ꡬ간 ν•© κ΅¬ν•˜κΈ° 5

giraffe_ 2022. 8. 6. 00:43

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

 

11660번: ꡬ간 ν•© κ΅¬ν•˜κΈ° 5

첫째 쀄에 ν‘œμ˜ 크기 Nκ³Ό 합을 ꡬ해야 ν•˜λŠ” 횟수 M이 μ£Όμ–΄μ§„λ‹€. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” ν‘œμ— μ±„μ›Œμ Έ μžˆλŠ” μˆ˜κ°€ 1ν–‰λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ μ£Όμ–΄μ§„λ‹€. λ‹€μŒ M개의 μ€„μ—λŠ” λ„€

www.acmicpc.net

 

 

 

 

 

μ—΄μ‹¬νžˆ 쒅이에 κ·Έλ €κ°€λ©΄μ„œ κ΅¬ν•˜λ €κ³  ν–ˆλŠ”λ° λ„ˆλ¬΄ λ³΅μž‘ν•˜κ²Œ μƒκ°ν•œ 탓인지 λͺ»ν’€μ—ˆλ‹€. κ²°κ΅­ 해섀을 λ“£κ³  μ•Œκ²Œλ˜μ—ˆλŠ”λ°, λ‚΄κ°€ μ²˜μŒμ— 잠깐 μƒκ°ν•œ 'ν–‰λ³„λ‘œ λˆ„μ ν•© κ΅¬ν•΄μ„œ λ”ν•˜κΈ°'κ°€ λ§žμ•˜λ‹€. μ‹œκ°„μ΄ˆκ³Όλ‚  것 κ°™μ•„μ„œ μ•ˆν•΄λ΄€λŠ”λ°..

 

μ‹œκ°„μ΄ˆκ³Ό κ°μ˜€ν•˜κ³  μ‹œλ„ν•΄λ³΄λŠ” 것도 쒋을 것 κ°™λ‹€λΌλŠ” 생각이 λ“€μ—ˆλ‹€. 괜히 μ‹œκ°„μ΄ˆκ³Ό λ‚  것 κ°™λ‹€κ³  λ‹€λ₯Έ 방법 μƒκ°ν•˜λ‹€κ°€ 더 λ³΅μž‘ν•˜κ²Œ μƒκ°ν•˜κ³  μ‹œκ°„λ§Œ 더 κΉŒλ¨Ήμ—ˆλ‹€.

 

 

 

 

 

μ½”λ“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		int[][] dp = new int[N + 1][N + 1];
		
		for(int i = 1; i < N + 1; i++) { //행별 λˆ„μ  ν•© μ €μž₯
			st = new StringTokenizer(br.readLine());
			
			dp[i][1] = Integer.parseInt(st.nextToken());
			
			for(int j = 2; j < N + 1; j++) {
				dp[i][j] = dp[i][j - 1] + Integer.parseInt(st.nextToken());
			}
		}
		
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < M; i++) {
			st = new StringTokenizer(br.readLine());
		
			int x1 = Integer.parseInt(st.nextToken());
			int y1 = Integer.parseInt(st.nextToken());
			int x2 = Integer.parseInt(st.nextToken());
			int y2 = Integer.parseInt(st.nextToken());
		
			int sum = 0;
			for(int j = x1; j <= x2; j++) {
				sum += dp[j][y2] - dp[j][y1 - 1];
			}
			
			sb.append(sum + "\n");
		}
		
		System.out.println(sb);
	}

}

 

 

 

 

 

κ²°κ³Ό