Problem Statement
- Jiro picks one of the three colors and pushes the stamp into ink of the chosen color C.
- Jiro picks a segment of L contiguous cells such that each of them is either uncolored or already has the color C. The segment must be completely inside the board. That is, the leftmost cell of the segment must be one of the cells 0 through N-L.
- Jiro pushes the stamp onto the chosen segment of cells. All the cells now have color C.
Definition
- Class:
- Stamp
- Method:
- getMinimumCost
- Parameters:
- String, int, int
- Returns:
- int
- Method signature:
- int getMinimumCost(String desiredColor, int stampCost, int pushCost)
- (be sure your method is public)
Constraints
- desiredColor will contain between 1 and 50 characters, inclusive.
- Each character of desiredColor will be either 'R' or 'G' or 'B' or '*'.
- stampCost will be between 1 and 100,000, inclusive.
- pushCost will be between 1 and 100,000, inclusive.
Examples
"RRGGBB"
1
1
Returns: 5
The optimal solution is to choose L=2 and then stamp three times: using red color for cells [0,1], green for [2,3], and blue for [4,5]. The stamp costs 2*1 = 2, each of the three uses costs 1, so the total costs is 2*1 + 3*1 = 5.
"R**GB*"
1
1
Returns: 5
The optimal solution is the same as in the previous example. Note that you must color all the cells, so choosing L=1 and then using the stamp three times is not a valid solution.
"BRRB"
2
7
Returns: 30
Also, note that once a cell is colored, you are not allowed to stamp over it using a different color. Therefore, you can only choose L=1 in this case.
"R*RR*GG"
10
58
Returns: 204
It is allowed to stamp the same cell multiple times if all of those stamps use the same color.
"*B**B**B*BB*G*BBB**B**B*"
5
2
Returns: 33
"*R*RG*G*GR*RGG*G*GGR***RR*GG"
7
1
Returns: 30
"R"
123
234
Returns: 357
"*"
987
876
Returns: 1863
"RR*GG"
1
100000
Returns: 300002
"RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*GG"
1
100000
Returns: 2500002
"RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*GG*BB*RR*"
1
100000
Returns: 1600003
"R**G**B**R**G**B**R**G**B**R**G**B**R**G**B**R*"
1
100000
Returns: 2400002
"*R**G**B**R**G**B**R**G**B**R**G**B**R**G**B**R"
1
100000
Returns: 2400002
"*********R*********G*********R*********B*********"
1
100000
Returns: 500010
"************************B************************"
1
100000
Returns: 100049
"RGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRG"
100000
100000
Returns: 5100000
"**************************************************"
100000
100000
Returns: 1500000
"**************************************************"
10000
40000
Returns: 290000
"**************************************************"
10000
70000
Returns: 380000
"*************************************************"
100
151
Returns: 1755
"*************************************************"
100
150
Returns: 1750
"R************************************************G"
100000
100000
Returns: 1500000
"*****R**********G**********B*****R***************G"
10000
100000
Returns: 600000
"*****R**********G**********B*****R***************G"
100000
100000
Returns: 1500000
"RRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGG"
1
100000
Returns: 300024
"G"
89113
79630
Returns: 168743
"RB"
47185
16261
Returns: 79707
"GGBBRR"
75529
91787
Returns: 426419
"BBRRGGBB"
47574
53214
Returns: 308004
"RRRBBBGGGRRRBBB"
24969
20906
Returns: 179437
"*****"
85934
3191
Returns: 101889
"**B***"
52636
27801
Returns: 188675
"B*****R"
33491
48378
Returns: 245607
"RRRGGBBBB"
2431
608
Returns: 7902
"RRRGGBBBB"
2431
607
Returns: 7894
"RRR*RR*RRRRRR*RRBBBBBB*B*BBBBBB*G*GG*GG*GG*GGGGG"
89322
89202
Returns: 1249788
"GG****G*****G*G*BBBB*B****BBBBB**RRR*R***R*R**RR"
91259
77666
Returns: 1196068
"**R****RR*R*RR***B*B******B*B*BB***GGGGGGG****GG"
67617
63581
Returns: 918386
"**GG*GG*GGGGGGGG*GGGGGG*GGGGGGGGGGG**G*G*GGGGGG"
18541
45191
Returns: 403256
"RRRRR**R*RRRRR**RR***RRR*RRR****RR*RRR*R*RR*RRR"
76962
93536
Returns: 1176912
"R*RR*RR**R****R*RR*R**R**R*R*R**RRR*R***R**R*RR"
76733
19856
Returns: 545204
"R*RR*RRB*BBB*BGGG*G***RR*R*RBB*BB**GGGGGGGRRRRRRR"
20379
21843
Returns: 295554
"R**R**RB*BBBBB*GGGG*GRR**RR*B*BBBBBGG*GGGG**RRR*R"
99687
97099
Returns: 1377502
"***G*GG*BBB*BBR*R***R******G**B******R***R*G*GGG*"
56435
49338
Returns: 740411
"*RR*R*RR*RRRRR**RRRR*RR*GGGGG*GGGGG*G**GGG*GG*"
52922
60897
Returns: 788758
"G*G**GGG*GG*GG***GGG**GR*RRR*RRRR*R***R*RRRR**"
35667
36890
Returns: 506676
"*G*G***********G*GGG***RR*RRR**RRRR**RRRR*R*R*"
18414
29955
Returns: 327042
"B*RRGGB**RGG*BRRGGBBRRGGB**RG*BB**GGBB*RG*BBRRGG"
12524
48143
Returns: 1180480
"*B*R***BR*GGB*R*G***R*GG**R*G**B*R*GB**R*GBB****"
16490
12745
Returns: 338860
"**GGBB*R*******G****G*BB*R***BR****B*R**B**R**B*"
62615
99861
Returns: 1885482
"*********B**R***************************G*********"
57169
20171
Returns: 487555
"*B***********************G**RB******************R"
26694
94313
Returns: 1683403
"****R********GB*************G**R*R*B************"
7245
51166
Returns: 547885
"*********B**G**R*******G********R****B*********"
42925
5343
Returns: 214082
"*******G*B******R****G*RB***R***G*G*R******B**B"
95614
32088
Returns: 961340
"BR*R*R**B***R***BRG***G*BB*G***G****G*R***GB***"
13610
7350
Returns: 359060
"RR****BBBB****R***R*R*G**GR**BGG**B*GB*GRRBG**G"
76223
87458
Returns: 4186749
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
138
7
Returns: 458
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
138
6
Returns: 432
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
1115
49
Returns: 3504
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
1115
48
Returns: 3467
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
5
4
Returns: 67
"RRRRRRRRRRRRRGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB"
5
3
Returns: 58
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
1385
58
Returns: 4278
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
1385
57
Returns: 4235
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
1351
2027
Returns: 24996
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
1351
2026
Returns: 24990
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
2887
722
Returns: 20934
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGG"
2887
721
Returns: 20918
"RRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGBBBB"
919
184
Returns: 6068
"RRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGBBBB"
919
183
Returns: 6051
"RRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGBBBB"
1481
186
Returns: 7791
"RRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGBBBB"
1481
185
Returns: 7772
"****RRRRR***B*BBB***GGGG*GGGBBB**BBGGGG***RR*RR*RR"
48
52
Returns: 804
"R*****"
1
100000
Returns: 100006
"R**GGBBB"
5
10
Returns: 60
"*R*G*B*"
11
100
Returns: 422
"R*G*B*R*G*B*R*G*B*R*G*B*R*G*B*R*G*B*R*G*B*R*G*B*RB"
13
3
Returns: 163
"RRR***G"
5
10
Returns: 45
"*R*RG*G*GR*RGG*G*GG****R***RRGGGRRRR*G**G"
35
142
Returns: 2377
"RBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRBGRGBRG"
100000
100000
Returns: 5100000
"****B*GB****R"
10000
1
Returns: 10013
"*********R**********B*********G***********R*******"
3
5
Returns: 55
"RR*BB"
100
10000
Returns: 30200
"***"
10000
1
Returns: 10003
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
1
100000
Returns: 100050
"**************************************"
12
6
Returns: 108
"**R***BG**G*R**B*G*G***RB**G****"
1
20
Returns: 263
"RR*B"
1
5
Returns: 12
"R***G"
1
100
Returns: 302
"*R*RG*G*GR*RGG*G*GGR***RR*GG*R*RG****GR***RR*GG"
43
54
Returns: 1101
"R************************GB***********************"
1
20
Returns: 93
"******B***R***R*B**"
2
7
Returns: 43
"GG*RR"
1
1000
Returns: 3002
"G****BR**B"
25142
76188
Returns: 431224
"RR*GGBBB"
1
10
Returns: 52
"G**RB*R*B*BG*B*B*B******R*R*****BG**"
14
1
Returns: 47
"**RR*GGGRRR***********BB***R"
66576
2671
Returns: 141364
"R*G"
1
100000
Returns: 300001
"RRRRRR"
1
1000
Returns: 1006
"**************************************************"
986
34123
Returns: 83423
"RRRRRR"
1
100000
Returns: 100006
"**RR*R**R*G****RRBB****BB****R*G*G*GG****BBBBB***"
20
30
Returns: 500
"R*BGGRRBB"
1
100000
Returns: 900001
"RG"
100000
100000
Returns: 300000
"R*B"
1
100
Returns: 301
"RR**R**BB"
1
1000
Returns: 3003
"R*****G"
1
100000
Returns: 300003
"**************************************************"
1
1
Returns: 15
"******"
1
100
Returns: 106
"R"
1
2
Returns: 3
"***********************************************RGR"
10000
1
Returns: 10050
"*************B*********G************GG"
4
10
Returns: 80
"R****BGGGG"
1
999
Returns: 3999
"G*GR**B*BRBG*RRBG*RGGR**"
79052
13175
Returns: 395252
"BR*B*"
98
513
Returns: 2663
"R*G"
1
100
Returns: 301
"****************G*********************************"
1000
1000
Returns: 15000
"RRRRRRRRRRRRRRRRRRRRRRRGRRRRRRRRRRRRRRRRRRRRRRRRRR"
10000
10000
Returns: 510000
"RGBRGBRGB"
65536
65536
Returns: 655360
"RRRRRRRRRRBRRRRRRRRRR"
7
98744
Returns: 2073631
"*"
1
1
Returns: 2
"RR*R*B***"
12190
25377
Returns: 124891
"************************************R*************"
11
12
Returns: 170
"B*G"
1
10000
Returns: 30001
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
1
50000
Returns: 50050
"R*G"
1
10000
Returns: 30001
"RRR*GGG"
1
100000
Returns: 300003
"R**RRRR***GGGGG"
13
19
Returns: 122
"*****************************************RR**GR*G*"
100000
100000
Returns: 2700000
"**"
1
100
Returns: 102
"*RGB*"
4
4
Returns: 24
"RRRBBBBGGGGRRRRBBBB"
1
10000
Returns: 90003
"*GG*B**B**B*BB*G*BBB**B**B**B**B**B*BB*G*BBB**B**B"
7
1
Returns: 38
"RRRR"
2
1000
Returns: 1008
"RRBRR"
1
100
Returns: 501
"R*B"
3
100
Returns: 303
"*R*G*RGG*RRB*B***B**R**G**R**R**R**RGGG*R*G*BG*GR*"
100000
100000
Returns: 2900000
"BB*R*G*BBR*GRR*"
39197
70687
Returns: 1099502
"**************************************************"
1
100000
Returns: 100050
"RR**GRRRR*"
1
1
Returns: 8
"R***B"
1
1000
Returns: 3002
"*************"
1
1
Returns: 8
"BRR***BBRR***GGG**RR**BBB****RRR"
1
1
Returns: 33
"**************************************************"
4
7
Returns: 75
"*R*G*B*GR*B*RG*B"
1
1867
Returns: 29873