【貪心】C032_LQ_最優值(排序)

一、Problem

在這裏插入圖片描述
輸入

輸入一行包含一個整數 n。

接下來N行,每行包含一個單詞 Ai。

輸出

輸出最大價值之和。

數據範圍

對於20%的評測用例,1 ≤ n ≤ 10, 且首字母均相同。
對於另外30%的評測用例,1 ≤ n ≤ 10,單詞長度均相同。
對於80%的評測用例,1 ≤ n ≤ 1000。
對於100%的評測用例,1 ≤ n ≤ 100000,單詞長度不超過20個字符且均爲小寫字母。

5
jmcoding
lq
hello
sto
orz

867

二、Solution

方法一:貪心

  • 字符串的長度和首字母是固定的。
  • 所以只需要預處理一下字符串的 len * C 到數組 val 中,然後升序排列數組 val,因爲可以使得 len * C 儘量最大…
import java.util.*;
import java.math.*;
import java.io.*;
public class Main{
	static class Solution {
		String[] ss;
		long[] work(int N) {
			long[] val = new long[N];
			for (int i = 0; i < N; i++) {
				val[i] = ss[i].length() * (ss[i].charAt(0)-'a'+1);
			}
			return val;
		}
		void init() {
			Scanner sc = new Scanner(new BufferedInputStream(System.in));
			int N = sc.nextInt();
			ss = new String[N];
			for (int i = 0; i < N; i++) {
				ss[i] = sc.next();
			}
			long[] val = work(N);
			Arrays.sort(val);
			long sum = 0;
			for (int i = 0; i < N; i++) {
				sum += (i+1)*val[i];
			}
			System.out.println(sum);
		}
	}
    public static void main(String[] args) throws IOException {  
        Solution s = new Solution();
		s.init();
    }
}

複雜度分析

  • 時間複雜度:O(nlogn)O(nlogn)
  • 空間複雜度:O()O()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章