Problem Statement
Write a method named minCost that takes an int area and an int[] percent, and returns the minimum cost of cutting a disk of size area into different pieces with sizes from percent. Note that the order of the elements of percent is unimportant, as you only need to achieve the required percentages.
Definition
- Class:
- DiskCut
- Method:
- minCost
- Parameters:
- int, int[]
- Returns:
- double
- Method signature:
- double minCost(int area, int[] percent)
- (be sure your method is public)
Notes
- Your return value must have a relative or absolute error less than 1e-9.
Constraints
- area will be between 1 and 1000, inclusive.
- percent will have between 2 and 50 elements, inclusive.
- Each element in percent will be between 1 and 100, inclusive.
- The elements in percent will sum up to 100.
Examples
4
{25,25,25,25}
Returns: 12.0
The best way to cut these pieces is by first making two cuts, resulting in two 50% pieces. Then, cut each piece in half. All this costs just 12.0 units.
5
{20,20,20,20,20}
Returns: 17.0
2
{50,50}
Returns: 4.0
1
{10, 40, 30, 20}
Returns: 2.9
1
{11, 11, 11, 11, 11, 11, 11, 11, 12}
Returns: 4.22
1
{12, 12, 12, 12, 12, 12, 12, 16}
Returns: 4.0
10
{20,20,30,30}
Returns: 30.0
10
{40,10,20,10,20}
Returns: 32.0
100
{33,33,34}
Returns: 266.0
1000
{2,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,15,1,1,1,1,1,1,1,2,1,1,1,1,1,1,30,1}
Returns: 5480.0
Some random test.
100
{90,3,4,2,1}
Returns: 219.0
100
{90,4,3,2,1}
Returns: 219.0
1000
{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
Returns: 6720.0
probably largest return value
100
{33,33,34}
Returns: 266.0
example in statement
68
{9,13,34,35,9}
Returns: 213.52
52
{19,30,14,19,18}
Returns: 172.64
476
{6,21,11,24,38}
Returns: 1508.92
433
{5,8,13,12,62}
Returns: 1195.08
893
{5,26,12,35,22}
Returns: 2830.81
387
{11,35,13,7,34}
Returns: 1215.18
241
{4,36,20,27,13}
Returns: 763.97
96
{28,18,11,27,16}
Returns: 313.92
284
{35,22,35,7,1}
Returns: 860.52
47
{12,23,18,17,30}
Returns: 154.63
792
{8,30,7,28,27}
Returns: 2494.8
628
{9,5,32,11,18,25}
Returns: 2128.92
729
{20,14,38,10,18}
Returns: 2361.96
38
{30,21,14,10,9,16}
Returns: 132.62
54
{18,23,28,12,19}
Returns: 178.2
421
{23,26,6,10,5,11,19}
Returns: 1524.02
295
{13,1,8,30,48}
Returns: 834.85
872
{5,16,11,18,24,26}
Returns: 3034.56
801
{9,22,19,21,4,14,11}
Returns: 2963.7
289
{19,28,19,12,22}
Returns: 956.59
238
{9,13,7,30,6,35}
Returns: 797.3
845
{19,2,19,12,11,16,4,17}
Returns: 3253.25
253
{18,7,41,2,32}
Returns: 746.35
241
{7,8,4,23,22,2,23,9,2}
Returns: 906.16
123
{27,31,14,4,24}
Returns: 391.14
995
{3,24,2,13,3,1,21,12,5,16}
Returns: 3840.7
890
{16,4,12,16,16,11,10,4,11}
Returns: 3631.2
551
{8,3,20,4,16,13,18,16,2}
Returns: 2165.43
778
{4,15,14,3,6,4,12,12,2,20,8}
Returns: 3267.6
389
{17,11,8,11,19,7,12,3,7,5}
Returns: 1629.91
334
{10,13,3,9,11,12,6,10,6,3,12,5}
Returns: 1496.32
969
{6,20,17,15,10,20,6,6}
Returns: 3759.72
932
{13,17,9,9,9,13,4,15,11}
Returns: 3849.16
491
{31,21,1,7,30,2,8}
Returns: 1625.21
121
{15,17,17,6,3,12,11,11,8}
Returns: 494.89
1000
{2,7,6,2,10,13,13,5,12,12,4,3,11}
Returns: 4490.0
646
{9,4,9,1,15,10,12,7,8,4,7,14}
Returns: 2874.7
606
{20,11,14,6,2,2,11,14,1,8,11}
Returns: 2533.08
477
{16,3,2,12,1,21,22,10,9,4}
Returns: 1884.15
680
{4,8,9,4,6,2,7,6,7,4,10,6,1,9,3,2,8,4}
Returns: 3427.2
789
{7,4,5,9,10,8,6,2,9,5,4,3,6,4,4,6,7,1}
Returns: 3992.34
178
{4,4,14,26,25,27}
Returns: 587.4
461
{17,50,3,3,4,16,7}
Returns: 1456.76
205
{9,3,2,15,21,1,6,2,7,1,12,21}
Returns: 838.45
288
{3,4,8,8,2,3,10,4,3,7,8,6,5,5,8,2,8,6}
Returns: 1460.16
199
{10,10,11,11,12,7,13,10,12,4}
Returns: 857.69
607
{14,5,10,16,2,4,12,14,1,1,9,1,11}
Returns: 2628.31
370
{18,27,13,23,1,18}
Returns: 1280.2
147
{7,3,3,6,3,9,6,6,8,2,3,7,6,5,7,8,7,4}
Returns: 748.23
195
{9,4,3,6,5,6,7,7,2,7,3,6,4,4,6,4,5,2,2,4,4}
Returns: 1035.45
515
{17,12,2,11,9,2,11,10,17,9}
Returns: 2147.55
923
{40,6,4,8,31,11}
Returns: 2925.91
158
{1,3,3,7,3,1,6,6,6,1,3,2,6,5,6,4,3,2,6,6,3,7,3,7}
Returns: 854.78
885
{5,6,3,5,2,1,8,4,5,4,7,2,3,3,1,8,4,1,7,8,4,3,1,5}
Returns: 4779.0
882
{4,2,5,7,5,10,8,10,2,3,6,8,1,4,8,6,11}
Returns: 4348.26
826
{3,4,4,4,2,3,4,3,7,4,5,4,5,2,2,3,1,1,2,2,3,6,2,6,2,5,4,5,2}
Returns: 4749.5
854
{8,9,7,8,5,5,5,2,6,1,8,7,4,1,1,6,8,9}
Returns: 4278.54
976
{3,5,4,3,3,1,5,3,4,1,4,2,4,3,3,3,1,4,5,3,4,3,5,2,5,2,4,2,4,5}
Returns: 5690.08
485
{1,6,5,5,2,5,2,2,2,4,2,4,6,3,3,5,5,1,3,5,3,4,3,4,3,4,3,5}
Returns: 2774.2
870
{1,3,4,4,3,6,4,1,2,6,2,5,6,2,3,2,6,1,4,4,2,5,3,2,1,2,5,3,5,3}
Returns: 5011.2
197
{6,19,6,8,5,1,3,17,21,7,7}
Returns: 819.52
990
{4,4,1,6,1,2,6,2,6,8,8,3,4,6,4,4,3,5,4,4,3,6,5,1}
Returns: 5395.5
271
{2,6,6,5,4,4,2,3,4,5,5,4,4,2,5,2,5,4,4,2,1,4,2,2,6,3,4}
Returns: 1539.28
498
{4,3,3,4,4,3,5,5,3,3,2,6,3,5,5,3,3,5,3,4,3,2,1,4,5,2,2,5}
Returns: 2868.48
217
{2,4,2,3,4,4,3,2,4,3,3,3,5,3,3,2,4,2,5,3,7,5,4,1,5,5,6,2,1}
Returns: 1249.92
567
{10,6,13,13,13,10,3,4,5,2,8,6,7}
Returns: 2579.85
739
{2,12,8,1,11,12,9,3,9,1,7,3,5,10,7}
Returns: 3451.13
751
{8,4,2,2,8,1,6,8,4,6,5,7,7,5,7,4,2,2,2,2,1,7}
Returns: 3965.28
554
{7,1,2,4,7,2,4,6,3,8,7,4,6,5,1,4,2,1,8,4,7,7}
Returns: 2930.66
368
{3,3,1,2,3,3,1,2,2,1,1,2,6,1,4,3,4,5,5,3,2,4,4,3,2,3,3,2,4,3,1,2,6,2,1,3}
Returns: 2219.04
100
{1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8 }
Returns: 562.0
1000
{3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2 }
Returns: 6560.0
1
{10, 40, 20, 30 }
Returns: 2.9
100
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Returns: 507.0
1
{10, 40, 30, 20 }
Returns: 2.9
15
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }
Returns: 100.8
1000
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51 }
Returns: 4790.0
40
{5, 5, 5, 5, 7, 5, 8, 60 }
Returns: 124.8
1
{5, 5, 6, 6, 39, 39 }
Returns: 3.05
1000
{3, 5, 7, 9, 6, 30, 40 }
Returns: 3280.0
39
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51 }
Returns: 186.81
1
{1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1 }
Returns: 4.74
1
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6 }
Returns: 6.3