日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVALive2678子序列

發(fā)布時(shí)間:2023/12/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVALive2678子序列 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UVALive2678

http://122.207.68.93:9090/csuacmtrain/problem/viewProblem.action?id=453§

【題目描述】:n個(gè)正整數(shù)組成的序列。給定整數(shù)S,求長度最短的連續(xù)序列,使他們的和大于等于S。

【算法分析】:

【二分】:

全是正整數(shù),保證取的連續(xù)序列長度越長,和越可能大于等于S,所以滿足二分的單調(diào)遞增的條件,而這里,我們要找的最優(yōu)解是最小的長度,就是和剛剛好大于等于S的區(qū)間長度。

【區(qū)間和優(yōu)化到O(N)】:

使用C[i]數(shù)組,做差求和。方法不細(xì)說。要求自己,以后遇到區(qū)間求和問題,自然就要想到這個(gè)。

【運(yùn)籌分析】:

決策方案:所有區(qū)間段,sigm(n+(n-1).......+1)?==?O(n^2)注意n<=10^5

限制條件:累和大于等于S

最優(yōu)評(píng)判標(biāo)準(zhǔn):區(qū)間長度最小

【完整代碼】:

1 #include<iostream> 2 3 #include<stdio.h> 4 5 #include<string.h> 6 7 #include<algorithm> 8 9 #include<stdlib.h> 10 11 #include<math.h> 12 13 #include<queue> 14 15 #include<vector> 16 17 #include<map> 18 19 #define MAXN 100000+5 20 21 #define MAXM 20000+5 22 23 #define oo 9556531 24 25 #define eps 0.000001 26 27 #define PI acos(-1.0)//這個(gè)精確度高一些 28 29 #define REP1(i,an) for(int i=0;i<=(n);i++) 30 31 #define REP2(i,n) for(int i=1;i<=(n);i++) 32 33 using namespace std; 34 35 //這道題不是dp,而是二分,一是因?yàn)閐p本身會(huì)超時(shí),二是連續(xù)的狀態(tài)是單調(diào)遞增的 36 37 int A[MAXN]; 38 39 int C[MAXN]; 40 41 int n,s; 42 43 bool isok(int l) 44 45 { 46 47 for(int i=l;i<=n;i++) 48 49 if(C[i]-C[i-l]>=s) return true;//優(yōu)化到O(n) 50 51 return false; 52 53 } 54 55 int main() 56 57 { 58 59 while(cin>>n>>s) 60 61 { 62 63 C[0]=0; 64 65 for(int i=1;i<=n;i++) 66 67 { 68 69 cin>>A[i]; 70 71 C[i]=C[i-1]+A[i]; 72 73 } 74 75 int l=1,r=n+1; 76 77 while(l<r)//邊界條件,保證能夠跳出循環(huán),找不到極值也可,畫狀態(tài)圖確定 78 79 { 80 81 int m=(l+r)/2; 82 83 if (isok(m)) r=m;else l=m+1;//根據(jù)除2取左的特點(diǎn),保證能取到極值點(diǎn) 84 85 } 86 87 if (isok(l)) cout<<l<<endl;else cout<<0<<endl; 88 89 } 90 91 return 0; 92 93 }

?

?

【關(guān)鍵詞】:二分,思維

轉(zhuǎn)載于:https://www.cnblogs.com/little-w/p/3525273.html

總結(jié)

以上是生活随笔為你收集整理的UVALive2678子序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。