java
package jz.bm;
import java.util.ArrayList;
import java.util.Arrays;
public class bm10 {
/**
* BM95 分糖果问题
*/
public int candy (int[] arr) {
int res = 0;
int n = arr.length;
int[] nums = new int[n];
//每个人都分配一个糖果
for (int i = 0; i < n; i++) {
nums[i] = 1;
}
//从左到右递增则加1
for (int i = 1; i < n; i++) {
if (arr[i] > arr[i - 1]) {
nums[i] = nums[i - 1] + 1;
}
}
res = nums[n - 1];
//从右到左增加则加1
for (int i = n - 2; i >= 0; i--) {
if (arr[i] > arr[i + 1] && nums[i] <= nums[i + 1]) {
nums[i] = nums[i + 1] + 1;
}
res += nums[i];
}
return res;
}
/**
* BM96 主持人调度(二)
*/
public int minmumNumberOfHost (int n, int[][] startEnd) {
int[] start = new int[n];
int[] end = new int[n];
for (int i = 0; i < n; i++) {
start[i] = startEnd[i][0];
end[i] = startEnd[i][1];
}
Arrays.sort(start);
Arrays.sort(end);
int res = 0;
int j = 0;
for (int i = 0; i < n; i++) {
//新开始的节目大于上一轮结束的时间,主持人不变
if (start[i] >= end[j]) {
j++;
} else
res++;
}
return res;
}
}