File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ StringTokenizer st = new StringTokenizer (br .readLine ());
9+ int N = Integer .parseInt (st .nextToken ());
10+ int M = Integer .parseInt (st .nextToken ());
11+ int [][] arr = new int [N + 1 ][N + 1 ];
12+ for (int i = 1 ; i <= N ; i ++) {
13+ st = new StringTokenizer (br .readLine ());
14+ for (int j = 1 ; j <= N ; j ++) {
15+ arr [i ][j ] = Integer .parseInt (st .nextToken ());
16+ }
17+ }
18+ int [][] d = new int [N + 1 ][N + 1 ];
19+ for (int i = 1 ; i <= N ; i ++) {
20+ for (int j = 1 ; j <= N ; j ++) {
21+ d [i ][j ] = d [i - 1 ][j ] + d [i ][j - 1 ] - d [i - 1 ][j - 1 ] + arr [i ][j ];
22+ }
23+ }
24+ int x1 , y1 , x2 , y2 ;
25+ StringBuilder sb = new StringBuilder ();
26+ for (int i = 0 ; i < M ; i ++) {
27+ st = new StringTokenizer (br .readLine ());
28+ x1 = Integer .parseInt (st .nextToken ());
29+ y1 = Integer .parseInt (st .nextToken ());
30+ x2 = Integer .parseInt (st .nextToken ());
31+ y2 = Integer .parseInt (st .nextToken ());
32+ sb .append (d [x2 ][y2 ] - d [x2 ][y1 - 1 ] - d [x1 - 1 ][y2 ] + d [x1 - 1 ][y1 - 1 ]).append ('\n' );
33+ }
34+ System .out .print (sb );
35+ }
36+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ StringTokenizer st = new StringTokenizer (br .readLine ());
9+ int N = Integer .parseInt (st .nextToken ());
10+ int S = Integer .parseInt (st .nextToken ());
11+ int M = Integer .parseInt (st .nextToken ());
12+ int [] volume = new int [N + 1 ];
13+ st = new StringTokenizer (br .readLine ());
14+ for (int i = 1 ; i <= N ; i ++) {
15+ volume [i ] = Integer .parseInt (st .nextToken ());
16+ }
17+ boolean [][] d = new boolean [N + 1 ][M + 1 ];
18+ d [0 ][S ] = true ;
19+ for (int i = 1 ; i <= N ; i ++) {
20+ for (int vol = 0 ; vol <= M ; vol ++) {
21+ // 이전에 곡에서 연주 가능한 볼륨일 경우
22+ if (d [i - 1 ][vol ]) {
23+ if (vol + volume [i ] <= M ) {
24+ d [i ][vol + volume [i ]] = true ;
25+ }
26+ if (vol - volume [i ] >= 0 ) {
27+ d [i ][vol - volume [i ]] = true ;
28+ }
29+ }
30+ }
31+ }
32+ int answer = -1 ;
33+ for (int i = M ; i >= 0 ; i --) {
34+ if (d [N ][i ]) {
35+ answer = i ;
36+ break ;
37+ }
38+ }
39+ System .out .println (answer );
40+ }
41+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ int N = Integer .parseInt (br .readLine ());
9+ int [] hp = new int [N + 1 ];
10+ int [] happy = new int [N + 1 ];
11+ int [][] d = new int [N + 1 ][101 ];
12+ StringTokenizer st1 = new StringTokenizer (br .readLine ());
13+ StringTokenizer st2 = new StringTokenizer (br .readLine ());
14+ for (int i = 1 ; i <= N ; i ++) {
15+ hp [i ] = Integer .parseInt (st1 .nextToken ());
16+ happy [i ] = Integer .parseInt (st2 .nextToken ());
17+ }
18+ for (int i = 1 ; i <= N ; i ++) {
19+ for (int j = 1 ; j <= 100 ; j ++) {
20+ if (j - hp [i ] > 0 ) {
21+ d [i ][j ] = Math .max (d [i - 1 ][j ], d [i - 1 ][j - hp [i ]] + happy [i ]);
22+ } else {
23+ d [i ][j ] = d [i - 1 ][j ];
24+ }
25+ }
26+ }
27+ System .out .println (d [N ][100 ]);
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ int N = Integer .parseInt (br .readLine ());
9+ int [][] board = new int [N ][N ];
10+ for (int i = 0 ; i < N ; i ++) {
11+ StringTokenizer st = new StringTokenizer (br .readLine ());
12+ for (int j = 0 ; j < N ; j ++) {
13+ board [i ][j ] = Integer .parseInt (st .nextToken ());
14+ }
15+ }
16+ long [][] d = new long [N ][N ];
17+ d [0 ][0 ] = 1 ;
18+ for (int i = 0 ; i < N ; i ++) {
19+ for (int j = 0 ; j < N ; j ++) {
20+ int jump = board [i ][j ];
21+ if (jump == 0 ) {
22+ continue ;
23+ }
24+ if (j + jump < N ) {
25+ d [i ][j + jump ] += d [i ][j ];
26+ }
27+ if (i + jump < N ) {
28+ d [i + jump ][j ] += d [i ][j ];
29+ }
30+ }
31+ }
32+ System .out .println (d [N - 1 ][N - 1 ]);
33+ }
34+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ int n = Integer .parseInt (br .readLine ());
9+ int [][] arr = new int [n +1 ][n +1 ];
10+ for (int i =1 ; i <=n ; i ++) {
11+ StringTokenizer st = new StringTokenizer (br .readLine ());
12+ for (int j =1 ; j <=i ; j ++) {
13+ arr [i ][j ] = Integer .parseInt (st .nextToken ());
14+ }
15+ }
16+ int [][] d = new int [n +1 ][n +1 ];
17+ for (int i =1 ; i <=n ; i ++) {
18+ for (int j =1 ; j <=i ; j ++) {
19+ d [i ][j ] = Math .max (d [i -1 ][j -1 ], d [i -1 ][j ]) + arr [i ][j ];
20+ }
21+ }
22+ int answer = arr [1 ][1 ];
23+ for (int i =1 ; i <=n ; i ++) {
24+ answer = Math .max (answer , d [n ][i ]);
25+ }
26+ System .out .println (answer );
27+ }
28+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ StringTokenizer st = new StringTokenizer (br .readLine ());
9+ int D = Integer .parseInt (st .nextToken ());
10+ int K = Integer .parseInt (st .nextToken ());
11+ for (int i =1 ; i <=K ; i ++) {
12+ int [] d = new int [D +1 ];
13+ d [1 ] = i ;
14+ for (int j =i ; j <=K ; j ++) {
15+ d [2 ] = j ;
16+ for (int k =3 ; k <=D ; k ++) {
17+ d [k ] = d [k -2 ] + d [k -1 ];
18+ }
19+ if (d [D ] == K ) {
20+ System .out .println (d [1 ]);
21+ System .out .println (d [2 ]);
22+ return ;
23+ }
24+ }
25+ }
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ import java .io .*;
2+ import java .util .*;
3+
4+ public class Main {
5+
6+ public static void main (String [] args ) throws IOException {
7+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
8+ int T = Integer .parseInt (br .readLine ());
9+ for (int tc =0 ; tc <T ; tc ++) {
10+ int N = Integer .parseInt (br .readLine ());
11+ int [][] sticker = new int [3 ][N +1 ];
12+ for (int i =0 ; i <2 ; i ++) {
13+ StringTokenizer st = new StringTokenizer (br .readLine ());
14+ for (int j =0 ; j <N ; j ++) {
15+ sticker [i ][j ] = Integer .parseInt (st .nextToken ());
16+ }
17+ }
18+ // d[0][i] = 윗줄 스티커만 뜯는 경우
19+ // d[1][i] = 아랫줄 스티커만 뜯는 경우
20+ // d[2][i] = 스티커를 떼지 않는 경우
21+ int [][] d = new int [3 ][N +1 ];
22+ d [0 ][0 ] = sticker [0 ][0 ];
23+ d [1 ][0 ] = sticker [1 ][0 ];
24+ for (int i =1 ; i <=N ; i ++) {
25+ d [0 ][i ] = Math .max (d [1 ][i -1 ], d [2 ][i -1 ]) + sticker [0 ][i ];
26+ d [1 ][i ] = Math .max (d [0 ][i -1 ], d [2 ][i -1 ]) + sticker [1 ][i ];
27+ d [2 ][i ] = Math .max (d [0 ][i -1 ], Math .max (d [1 ][i -1 ], d [2 ][i -1 ]));
28+ }
29+ System .out .println (Math .max (d [0 ][N ], d [1 ][N ]));
30+ }
31+ }
32+ }
You can’t perform that action at this time.
0 commit comments