3376. Minimum Time to Break Locks I Medium

@problem@discussion
#Array#Dynamic Programming#Backtracking#Bit Manipulation#Depth-First Search#Bitmask



1/**
2 * [3376] Minimum Time to Break Locks I
3 *
4 * Bob is stuck in a dungeon and must break n locks, each requiring some amount of energy to break. The required energy for each lock is stored in an array called strength where strength[i] indicates the energy needed to break the i^th lock.
5 * To break a lock, Bob uses a sword with the following characteristics:
6 * 
7 * 	The initial energy of the sword is 0.
8 * 	The initial factor <font face="monospace">x</font> by which the energy of the sword increases is 1.
9 * 	Every minute, the energy of the sword increases by the current factor x.
10 * 	To break the i^th lock, the energy of the sword must reach at least strength[i].
11 * 	After breaking a lock, the energy of the sword resets to 0, and the factor x increases by a given value k.
12 * 
13 * Your task is to determine the minimum time in minutes required for Bob to break all n locks and escape the dungeon.
14 * Return the minimum time required for Bob to break all n locks.
15 *  
16 * <strong class="example">Example 1:
17 * <div class="example-block">
18 * Input: <span class="example-io">strength = [3,4,1], k = 1</span>
19 * Output: <span class="example-io">4</span>
20 * Explanation:
21 * <table style="border: 1px solid black;">
22 * 	<tbody>
23 * 		<tr>
24 * 			<th style="border: 1px solid black;">Time</th>
25 * 			<th style="border: 1px solid black;">Energy</th>
26 * 			<th style="border: 1px solid black;">x</th>
27 * 			<th style="border: 1px solid black;">Action</th>
28 * 			<th style="border: 1px solid black;">Updated x</th>
29 * 		</tr>
30 * 		<tr>
31 * 			<td style="border: 1px solid black;">0</td>
32 * 			<td style="border: 1px solid black;">0</td>
33 * 			<td style="border: 1px solid black;">1</td>
34 * 			<td style="border: 1px solid black;">Nothing</td>
35 * 			<td style="border: 1px solid black;">1</td>
36 * 		</tr>
37 * 		<tr>
38 * 			<td style="border: 1px solid black;">1</td>
39 * 			<td style="border: 1px solid black;">1</td>
40 * 			<td style="border: 1px solid black;">1</td>
41 * 			<td style="border: 1px solid black;">Break 3^rd Lock</td>
42 * 			<td style="border: 1px solid black;">2</td>
43 * 		</tr>
44 * 		<tr>
45 * 			<td style="border: 1px solid black;">2</td>
46 * 			<td style="border: 1px solid black;">2</td>
47 * 			<td style="border: 1px solid black;">2</td>
48 * 			<td style="border: 1px solid black;">Nothing</td>
49 * 			<td style="border: 1px solid black;">2</td>
50 * 		</tr>
51 * 		<tr>
52 * 			<td style="border: 1px solid black;">3</td>
53 * 			<td style="border: 1px solid black;">4</td>
54 * 			<td style="border: 1px solid black;">2</td>
55 * 			<td style="border: 1px solid black;">Break 2^nd Lock</td>
56 * 			<td style="border: 1px solid black;">3</td>
57 * 		</tr>
58 * 		<tr>
59 * 			<td style="border: 1px solid black;">4</td>
60 * 			<td style="border: 1px solid black;">3</td>
61 * 			<td style="border: 1px solid black;">3</td>
62 * 			<td style="border: 1px solid black;">Break 1^st Lock</td>
63 * 			<td style="border: 1px solid black;">3</td>
64 * 		</tr>
65 * 	</tbody>
66 * </table>
67 * The locks cannot be broken in less than 4 minutes; thus, the answer is 4.
68 * </div>
69 * <strong class="example">Example 2:
70 * <div class="example-block">
71 * Input: <span class="example-io">strength = [2,5,4], k = 2</span>
72 * Output: <span class="example-io">5</span>
73 * Explanation:
74 * <table style="border: 1px solid black;">
75 * 	<tbody>
76 * 		<tr>
77 * 			<th style="border: 1px solid black;">Time</th>
78 * 			<th style="border: 1px solid black;">Energy</th>
79 * 			<th style="border: 1px solid black;">x</th>
80 * 			<th style="border: 1px solid black;">Action</th>
81 * 			<th style="border: 1px solid black;">Updated x</th>
82 * 		</tr>
83 * 		<tr>
84 * 			<td style="border: 1px solid black;">0</td>
85 * 			<td style="border: 1px solid black;">0</td>
86 * 			<td style="border: 1px solid black;">1</td>
87 * 			<td style="border: 1px solid black;">Nothing</td>
88 * 			<td style="border: 1px solid black;">1</td>
89 * 		</tr>
90 * 		<tr>
91 * 			<td style="border: 1px solid black;">1</td>
92 * 			<td style="border: 1px solid black;">1</td>
93 * 			<td style="border: 1px solid black;">1</td>
94 * 			<td style="border: 1px solid black;">Nothing</td>
95 * 			<td style="border: 1px solid black;">1</td>
96 * 		</tr>
97 * 		<tr>
98 * 			<td style="border: 1px solid black;">2</td>
99 * 			<td style="border: 1px solid black;">2</td>
100 * 			<td style="border: 1px solid black;">1</td>
101 * 			<td style="border: 1px solid black;">Break 1^st Lock</td>
102 * 			<td style="border: 1px solid black;">3</td>
103 * 		</tr>
104 * 		<tr>
105 * 			<td style="border: 1px solid black;">3</td>
106 * 			<td style="border: 1px solid black;">3</td>
107 * 			<td style="border: 1px solid black;">3</td>
108 * 			<td style="border: 1px solid black;">Nothing</td>
109 * 			<td style="border: 1px solid black;">3</td>
110 * 		</tr>
111 * 		<tr>
112 * 			<td style="border: 1px solid black;">4</td>
113 * 			<td style="border: 1px solid black;">6</td>
114 * 			<td style="border: 1px solid black;">3</td>
115 * 			<td style="border: 1px solid black;">Break 2^n^d Lock</td>
116 * 			<td style="border: 1px solid black;">5</td>
117 * 		</tr>
118 * 		<tr>
119 * 			<td style="border: 1px solid black;">5</td>
120 * 			<td style="border: 1px solid black;">5</td>
121 * 			<td style="border: 1px solid black;">5</td>
122 * 			<td style="border: 1px solid black;">Break 3^r^d Lock</td>
123 * 			<td style="border: 1px solid black;">7</td>
124 * 		</tr>
125 * 	</tbody>
126 * </table>
127 * The locks cannot be broken in less than 5 minutes; thus, the answer is 5.
128 * </div>
129 *  
130 * Constraints:
131 * 
132 * 	n == strength.length
133 * 	1 <= n <= 8
134 * 	1 <= K <= 10
135 * 	1 <= strength[i] <= 10^6
136 * 
137 */
138pub struct Solution {}
139
140// problem: https://leetcode.com/problems/minimum-time-to-break-locks-i/
141// discuss: https://leetcode.com/problems/minimum-time-to-break-locks-i/discuss/?currentPage=1&orderBy=most_votes&query=
142
143// submission codes start here
144
145impl Solution {
146    pub fn find_minimum_time(strength: Vec<i32>, k: i32) -> i32 {
147        0
148    }
149}
150
151// submission codes end
152
153#[cfg(test)]
154mod tests {
155    use super::*;
156
157    #[test]
158    fn test_3376() {
159    }
160}
161


Back
© 2025 bowen.ge All Rights Reserved.