矩形分割(洛谷P1324题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
矩形分割(洛谷P1324题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
用貪心做。
理由是:從行或列中優先選擇一個當前最大的,讓最大的值乘以最小的權,可以得到最小值,即最優解。
貪心需要排序,為啥選擇Integer[]而不是int[]呢?因為不然Comparator.reverseOrder()會沒法用。
AC代碼
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt()-1, m = sc.nextInt()-1;long result = 0;// 必須用這個Integer[] row = new Integer[n], line = new Integer[m];for (int i = 0; i < n; i++) {row[i] = sc.nextInt();}for (int j = 0; j < m; j++) {line[j] = sc.nextInt();}// 升序改降序Arrays.sort(row, Comparator.reverseOrder());Arrays.sort(line, Comparator.reverseOrder());long i_count = 1, j_count = 1;for (int i = 0, j = 0; i < n || j < m; ) {if (i == n) {result += i_count*line[j];j_count++;j++;} else if (j == m || row[i] > line[j]) {result += j_count*row[i];i_count++;i++;} else {result += i_count*line[j];j_count++;j++;}}System.out.println(result);sc.close();}}總結
以上是生活随笔為你收集整理的矩形分割(洛谷P1324题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go语言的并发模型
- 下一篇: 作者:邢俊峰(1985-),男,烟台中科