hihocoder_#1051 : 補(bǔ)提交卡(貪心+枚舉)

描述
小Ho給自己定了一個(gè)宏偉的目標(biāo):連續(xù)100天每天堅(jiān)持在hihoCoder上提交一個(gè)程序。100天過去了,小Ho查看自己的提交記錄發(fā)現(xiàn)有N天因?yàn)樨澩嫱浱峤涣?。于是小Ho軟磨硬泡、強(qiáng)忍著小Hi鄙視的眼神從小Hi那里要來M張"補(bǔ)提交卡"。每張"補(bǔ)提交卡"都可以補(bǔ)回一天的提交,將原本沒有提交程序的一天變成有提交程序的一天。小Ho想知道通過利用這M張補(bǔ)提交卡,可以使自己的"最長連續(xù)提交天數(shù)"最多變成多少天。
輸入
第一行是一個(gè)整數(shù)T(1 <= T <= 10),代表測試數(shù)據(jù)的組數(shù)。
每個(gè)測試數(shù)據(jù)第一行是2個(gè)整數(shù)N和M(0 <= N, M <= 100)。第二行包含N個(gè)整數(shù)a1, a2, ... aN(1 <= a1 < a2 < ... < aN <= 100),表示第a1, a2, ... aN天小Ho沒有提交程序。
輸出
對于每組數(shù)據(jù),輸出通過使用補(bǔ)提交卡小Ho的最長連續(xù)提交天數(shù)最多變成多少。
樣例輸入
3
5 1
34 77 82 83 84
5 2
10 30 55 56 90
5 10
10 30 55 56 90
樣例輸出
76
59
100

涉及枚舉的貪心問題,又讓我想到了今年剛結(jié)束的藍(lán)橋杯的一道貪心題,思路都差不多(后續(xù)題目官方發(fā)布后更新題解),涉及(枚舉·尺取·二分..)的貪心問題基本思路較為清晰,基本可以一遍AC
貪心+枚舉思路:根據(jù)補(bǔ)交卡的個(gè)數(shù),順序枚舉相鄰的缺勤天數(shù),記錄最大值
Java·AC代碼

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();//測試組數(shù)
        int[] ans = new int[T];
        for(int i = 0; i < T; i++) {
            int n = sc.nextInt();//n天忘記提交
            int m = sc.nextInt();//m張補(bǔ)交卡
            int max = 0;
            int[] forget_days = new int[n];//遺忘天數(shù)
            for(int j = 0; j < n; j++)
                forget_days[j] = sc.nextInt();
            //Arrays.sort(forget_days);//題目已經(jīng)給出有序條件
            if(m >= n)//全補(bǔ)
                ans[i] = 100;
            else {//不能全補(bǔ),采用以上思路
                for(int k = 0; k < n - m + 1; k++) {
                    if(k == 0) {//第一個(gè)天數(shù)的特殊處理
                        max = forget_days[k + m] - 1;
                        continue;
                    }
                    if(k < n - m) {//不涉及到消除最后一天
                        max = Math.max(forget_days[k + m] - 
                                forget_days[k - 1] - 1, max);
                    }else if(k == n - m) {//涉及100的處理
                        max = Math.max(100 - forget_days[k - 1], max);
                    }
                }
                ans[i] = max;
            }
        }
        for (int i : ans) {
            System.out.println(i);
        }

    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容