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+ """
2+ dp[1] = 1
3+ dp[2] = 2 (1+1, 2)
4+ dp[3] = 4 (1+1+1, 1+2(*2), 3)
5+ dp[4] = 7
6+ dp[5] = 13
7+ dp[6] = 24
8+ dp[7] = 44
9+ dp[n] = dp[n-1] + dp[n-2] + dp[n-3]
10+ """
11+ import sys
12+
13+ input = sys .stdin .readline
14+
15+
16+ dp = [0 ] * 11
17+ dp [1 ] = 1
18+ dp [2 ] = 2
19+ dp [3 ] = 4
20+
21+ for i in range (4 , 11 ):
22+ dp [i ] = dp [i - 1 ] + dp [i - 2 ] + dp [i - 3 ]
23+
24+ t = int (input ())
25+ for _ in range (t ):
26+ n = int (input ())
27+ print (dp [n ])
28+
Original file line number Diff line number Diff line change 1+ dp = [- 1 ] * 11
2+
3+ def main ():
4+ T = int (input ())
5+
6+ for i in range (T ):
7+ n = int (input ())
8+
9+ print (recursion (n ))
10+
11+
12+ def recursion (n ):
13+ if n == 0 :
14+ return 1
15+ if n < 0 :
16+ return 0
17+
18+ if dp [n ] != - 1 :
19+ return dp [n ]
20+
21+ dp [n ] = recursion (n - 1 ) + recursion (n - 2 ) + recursion (n - 3 )
22+
23+ return dp [n ]
24+
25+ if __name__ == "__main__" :
26+ main ()
Original file line number Diff line number Diff line change 1+ const fs = require ( "fs" ) ;
2+ const path = require ( "path" ) ;
3+
4+ const filePath =
5+ process . platform === "linux"
6+ ? "/dev/stdin"
7+ : path . join ( __dirname , "input.txt" ) ;
8+
9+ const input = fs
10+ . readFileSync ( filePath , "utf8" )
11+ . toString ( )
12+ . trim ( )
13+ . split ( "\n" )
14+ . map ( Number ) ;
15+
16+ function solution ( input ) {
17+ const T = input [ 0 ] ;
18+ const arr = input . slice ( 1 ) ;
19+ const result = [ ] ;
20+
21+ function dfs ( sum , target ) {
22+ if ( sum === target ) return 1 ;
23+ if ( sum > target ) return 0 ;
24+
25+ return dfs ( sum + 1 , target ) + dfs ( sum + 2 , target ) + dfs ( sum + 3 , target ) ;
26+ }
27+
28+ for ( let i = 0 ; i < T ; i ++ ) {
29+ const n = arr [ i ] ;
30+ result . push ( dfs ( 0 , n ) ) ;
31+ }
32+
33+ return result ;
34+ }
35+
36+ console . log ( solution ( input ) . join ( "\n" ) ) ;
Original file line number Diff line number Diff line change 1+ import sys
2+
3+ input = sys .stdin .readline
4+
5+ n = int (input ())
6+ color = [list (map (int , input ().split ())) for _ in range (n )]
7+
8+ for i in range (n - 1 ):
9+ min_cost = min (color [i ])
10+ min_idx = color [i ].index (min_cost )
11+ for j in range (3 ):
12+ if j != min_idx :
13+ color [i + 1 ][j ] += min_cost
14+ else :
15+ color [i ][min_idx ] = float ('inf' )
16+ color [i + 1 ][j ] += min (color [i ])
17+
18+ print (min (color [- 1 ]))
Original file line number Diff line number Diff line change 1+ def main ():
2+ N = int (input ())
3+ cost = [list (map (int , input ().split ())) for _ in range (N )]
4+
5+ dp = [[0 ] * 3 for _ in range (N )]
6+
7+ dp [0 ][0 ] = cost [0 ][0 ]
8+ dp [0 ][1 ] = cost [0 ][1 ]
9+ dp [0 ][2 ] = cost [0 ][2 ]
10+
11+ for i in range (1 , N ):
12+ dp [i ][0 ] = min (dp [i - 1 ][1 ], dp [i - 1 ][2 ]) + cost [i ][0 ]
13+ dp [i ][1 ] = min (dp [i - 1 ][0 ], dp [i - 1 ][2 ]) + cost [i ][1 ]
14+ dp [i ][2 ] = min (dp [i - 1 ][0 ], dp [i - 1 ][1 ]) + cost [i ][2 ]
15+
16+ print (min (dp [N - 1 ]))
17+
18+
19+ if __name__ == "__main__" :
20+ main ()
Original file line number Diff line number Diff line change 1+ const fs = require ( "fs" ) ;
2+ const path = require ( "path" ) ;
3+
4+ const filePath =
5+ process . platform === "linux"
6+ ? "/dev/stdin"
7+ : path . join ( __dirname , "input.txt" ) ;
8+
9+ const input = fs
10+ . readFileSync ( filePath , "utf8" )
11+ . toString ( )
12+ . trim ( )
13+ . split ( "\n" )
14+ . map ( ( value ) => value . split ( " " ) . map ( Number ) ) ;
15+
16+ function solution ( input ) {
17+ const N = input [ 0 ] [ 0 ] ;
18+ const costs = input . slice ( 1 ) ;
19+ const dp = [ ...costs [ 0 ] ] ;
20+
21+ for ( let i = 1 ; i < N ; i ++ ) {
22+ const temp = [ 0 , 0 , 0 ] ;
23+ for ( let j = 0 ; j < 3 ; j ++ ) {
24+ if ( j === 0 ) temp [ 0 ] = costs [ i ] [ 0 ] + Math . min ( dp [ 1 ] , dp [ 2 ] ) ;
25+ else if ( j === 1 ) temp [ 1 ] = costs [ i ] [ 1 ] + Math . min ( dp [ 0 ] , dp [ 2 ] ) ;
26+ else if ( j === 2 ) temp [ 2 ] = costs [ i ] [ 2 ] + Math . min ( dp [ 0 ] , dp [ 1 ] ) ;
27+ }
28+ dp . splice ( 0 , 3 , ...temp ) ;
29+ }
30+
31+ return Math . min ( ...dp ) ;
32+ }
33+
34+ console . log ( solution ( input ) ) ;
Original file line number Diff line number Diff line change 1+ from collections import *
2+
3+ def solution (n , edge ):
4+
5+ graph = [[] for _ in range (n + 1 )]
6+
7+ for a , b in edge :
8+ graph [a ].append (b )
9+ graph [b ].append (a )
10+
11+ visited = [0 ] * (n + 1 )
12+ visited [1 ] = 1
13+
14+ def bfs (x ):
15+ q = deque ([x ])
16+ while q :
17+ x = q .popleft ()
18+ for nei in graph [x ]:
19+ if not visited [nei ]:
20+ visited [nei ] = visited [x ] + 1
21+ q .append (nei )
22+ bfs (1 )
23+
24+ return visited .count (max (visited ))
Original file line number Diff line number Diff line change 1+ from collections import deque
2+
3+ def solution (n , edge ):
4+ graph = [[] for _ in range (n + 1 )]
5+
6+ for a , b in edge :
7+ graph [a ].append (b )
8+ graph [b ].append (a )
9+
10+ distance = [- 1 ] * (n + 1 )
11+ distance [1 ] = 0
12+
13+ queue = deque ([1 ])
14+
15+ while queue :
16+ now = queue .popleft ()
17+ for neighbor in graph [now ]:
18+ if distance [neighbor ] == - 1 :
19+ distance [neighbor ] = distance [now ] + 1
20+ queue .append (neighbor )
21+
22+ max_distance = max (distance )
23+
24+ return distance .count (max_distance )
Original file line number Diff line number Diff line change 1+ function solution ( n , edge ) {
2+ const map = Array ( n + 1 )
3+ . fill ( )
4+ . map ( ( ) => [ ] ) ;
5+ for ( let i = 0 ; i < edge . length ; i ++ ) {
6+ let a = edge [ i ] [ 0 ] ;
7+ let b = edge [ i ] [ 1 ] ;
8+ map [ a ] . push ( b ) ;
9+ map [ b ] . push ( a ) ;
10+ }
11+
12+ const visited = Array ( n + 1 ) . fill ( 0 ) ;
13+ const q = [ ] ;
14+ q . push ( 1 ) ;
15+ visited [ 1 ] = 1 ;
16+
17+ while ( q . length > 0 ) {
18+ const now = q . shift ( ) ;
19+ for ( let i = 0 ; i < map [ now ] . length ; i ++ ) {
20+ let next = map [ now ] [ i ] ;
21+ if ( visited [ next ] === 0 ) {
22+ visited [ next ] = visited [ now ] + 1 ;
23+ q . push ( next ) ;
24+ }
25+ }
26+ }
27+
28+ let max = 0 ;
29+ for ( let i = 0 ; i < visited . length ; i ++ ) {
30+ if ( visited [ i ] > max ) {
31+ max = visited [ i ] ;
32+ }
33+ }
34+
35+ let answer = 0 ;
36+ for ( let i = 0 ; i < visited . length ; i ++ ) {
37+ if ( visited [ i ] === max ) {
38+ answer ++ ;
39+ }
40+ }
41+
42+ return answer ;
43+ }
44+
45+ console . log (
46+ solution ( [
47+ [ 3 , 6 ] ,
48+ [ 4 , 3 ] ,
49+ [ 3 , 2 ] ,
50+ [ 1 , 3 ] ,
51+ [ 1 , 2 ] ,
52+ [ 2 , 4 ] ,
53+ [ 5 , 2 ] ,
54+ ] )
55+ ) ;
You can’t perform that action at this time.
0 commit comments