哈理工OJ 2090 背包【思维】
| 背包 | ||||||
| ||||||
| Description | ||||||
| DS最近剛學(xué)會(huì)了背包。比如,給一個(gè)序列,問是否存在一個(gè)子集滿足元素和為?X?,?DS?會(huì)用一種方法:
xiaodao?覺得?DS?非常聰明,不過她想難為一下DS。?她給了DS一個(gè)序列,序列中有?N(N ≤107)個(gè)正整數(shù),滿足1≤A1?,Ai≤Ai+1,Ai≤109 | ||||||
| Input | ||||||
| 第一行是一個(gè)整數(shù)?T?代表數(shù)據(jù)組數(shù),以下是?T?組數(shù)據(jù)。 | ||||||
| Output | ||||||
| 對(duì)于每組數(shù)據(jù),輸出一個(gè)整數(shù)?Y?代表本組數(shù)據(jù)的最小不可構(gòu)造數(shù)。 | ||||||
| Sample Input | ||||||
| 3 3 1 2 4 2 2 100000 4 1 2 3 4 | ||||||
| Sample Output | ||||||
| 8 1 11 | ||||||
| Hint | ||||||
| 對(duì)于第一組樣例
對(duì)于第三組樣例
|
對(duì)于這個(gè)題,直接的思路就是枚舉子集,然后因?yàn)閿?shù)據(jù)量太大,一維數(shù)組根本就是RE到死,所以沒辦法、、、、最后參考了大牛的思路:是這樣的、
題目保證了數(shù)據(jù)的遞增性,所以我們這里不必要擔(dān)心要不要sort的問題,sum是一個(gè)計(jì)入總和的變量,如果sum+1<a【i】,那么sum+1是一定會(huì)空缺出來沒有任何數(shù)據(jù)的和能夠等于sum+1,根據(jù)這兩個(gè)特性,就能對(duì)應(yīng)寫出代碼:
#include <stdio.h> #include <string.h>using namespace std; int a[10000005]; int main() {int i,j,n,t;long long int sum;scanf("%d",&t);while(t--){sum = 0;scanf("%d",&n);for(i = 0;i<n;i++)scanf("%d",&a[i]);sum = 0;for(i = 0;i<n;i++){if(sum+1<a[i])break;sum+=a[i];}printf("%lld\n",sum+1);}return 0; }
總結(jié)
以上是生活随笔為你收集整理的哈理工OJ 2090 背包【思维】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全国计算机等级考试题库二级C操作题100
- 下一篇: Warning: Multiple bu