2017 年廣工大的程序設計決賽H題 --- tmk買禮物

真的是我遇到過的最坑的判題系統,要等兩個小時才能等到結果.(這道題阻擋了我們去電科?。。。?a target="_blank" rel="nofollow">題目在此

其實下來問了大佬,說是維護一個前綴和就可以了,當時不是太懂,后來仔細想想,就想通了,關鍵是當時比賽時我還想到了這一特點,就是沒有的深入想下去,好氣啊!!!

思路 : 就是就是維護一個前綴和,因為有一個特點,就是從1連著的數字剛好可以構成從1到這些數字相加這么多數字,所以只要維護前綴和保持規律了就可以了,否則就直接跳出來就行了!!!

//就是前綴和,后面的數字如果大于前綴和+1 說明他和區間沒有交集 前綴和+1這個數字達不到,就不連續了唄.!!!

AC代碼:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=1e5+5;
int a[maxn];
int main()
{
    int t;
    scanf("%d",&t);   //人笨啊!!!
    while(t--){
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        sort(a,a+n);
        ll ans=0;   //要用long long 才行,否則要WA.
        for(int i=0;i<n;i++){
            if(a[i]<=ans+1)   //維護前綴和保持為小于和+1就可以,否則就直接跳出來!!!
                ans+=a[i];
            else
                break;
            //printf("%d\n",ans);
        }
        printf("%lld\n",ans);
    }
}

記住這些水題的做法啊!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • 舊夢依稀 往事迷離 春花秋月里 Old dreams still Old things misted Those ...
    cab1675閱讀 418評論 0 0
  • 一、人生要去做那些重要不緊急的事! 人生不在于做多少事,在于把重要的事做到極致!要首先做,用心做,然后我們就能聚焦...
    玉如于成閱讀 320評論 1 4