题目1.货车拉货物
【题目描述】
有若干辆具有一定最大承载量(体积)的货车,若干件一定体积的货物。每辆货车只能装载体积小于自己最大承载量的货物,且每辆车最多装一件。要求求出所有货车都运一次货物后,所有被运输货物体积之和的最大可能值。
例:货车的最大承载量数组:1,2,5,20,40。
货物体积:1,3,9,9,9,27,81,1000。
则最大运货体积为40。private static int findMaxDeliveryExpress(int[] packs, int[] goods) { Arrays.sort(packs); Arrays.sort(goods); int res = 0; if (goods[0] > packs[packs.length - 1]) { return res; } for (int i = packs.length - 1, j = goods.length - 1; i >= 0 && j >= 0; j--) { if (packs[i] >= goods[j]) { res += goods[j]; i--; } } return res; }
题目3.基站信号地图
题目描述 视一片区域为一个 rows * cols 的矩阵(行列编号皆从 1 开始),初始有一批基站分布在某些单元格内(位置无重复)。现对这片区域进行改造,涉及两种操作: 假设每个基站的信号覆盖范围为上、下、左、右、对角的相邻单元格;每存在一个基站,覆盖范围内的每个单元格的信号强度增加 1 。 改造完成后,请统计最终矩阵各单元格(不含基站位置)的信号强度之和。 输入 l 首行两个整数rows cols,表示矩阵的行数和列数,取值范围均为[1,100]。 l 第二行是一个整数 baseStationCnt,表示初始基站的个数,取值范围[0,100]; l 然后一行是一个整数 cmdCnt,表示改造操作的个数,取值范围:[0,100]。 输出 一个整数,表示最终矩阵各单元格(不含基站位置)的信号强度之和。 样例 输入样例 1 4 6 3 2 2 3 3 4 4 3 delete 4 3 add 1 2 delete 2 5 输出样例 1 11 提示样例 1 如下图所示: delete 4 3 操作:清除单元格[4,3]周边范围内的两个基站 add 1 2 操作:在单元格[1,2]中添加基站 delete 2 5 操作:单元格[2,5]周边范围内没有基站,因此该操作不改变矩阵内的基站。 最后存在2个基站,如右边矩阵所示:绿框表示基站[1,2]的信号覆盖范围,蓝框表示基站[2,2]的信号覆盖范围。 最终矩阵每个单元格(不含基站位置)的信号强度为图中数字,和为11。 输入样例 2 1 1 0 0 输出样例 2 0 |
public class Main {
// 基站存在标识
private static final int STATION_FLAG_ON = 1;
private static final int STATION_FLAG_OFF = 0;
static class Command {
private final String cmd;
private final int row;
private final int col;
Command(String inputStr) {
String[] inputArray = inputStr.split(" ");
this.cmd = inputArray[0];
this.row = Integer.parseInt(inputArray[1]);
this.col = Integer.pars