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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

找连续数(HDU-5247)

發布時間:2025/3/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 找连续数(HDU-5247) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem Description

小度熊拿到了一個無序的數組,對于這個數組,小度熊想知道是否能找到一個k 的區間,里面的 k 個數字排完序后是連續的。

現在小度熊增加題目難度,他不想知道是否有這樣的 k 的區間,而是想知道有幾個這樣的 k 的區間。

Input

輸入包含一組測試數據。

第一行包含兩個整數n,m,n代表數組中有多少個數字,m 代表針對于此數組的詢問次數,n不會超過10的4次方,m 不會超過1000。第二行包含n個正整數,第 I 個數字代表無序數組的第 I 位上的數字,數字大小不會超過2的31次方。接下來 m 行,每行一個正整數 k,含義詳見題目描述,k 的大小不會超過1000。

Output

第一行輸"Case #i:"。(由于只有一組樣例,只輸出”Case #1:”即可)

然后對于每個詢問的 k,輸出一行包含一個整數,代表數組中滿足條件的 k 的大小的區間的數量。

Sample Input

6 2
3 2 1 4 3 5
3
4

Sample Output

Case #1:
2
2

思路:只有一組輸入,但有 m 個詢問,不難想出打表記錄所有情況,關鍵在于 k 個數字排序后是連續的。

k 個數字排序后連續就意味著該區間的最大值減最小值等于區間長度-1,即:maxx-minn=j-i,因此如果一個區間滿足上述情況,那么這個長度的數組值?+1?即可,此外,由于 k<=1000,因此要注意 j-i<=1000

Source Program

#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #define PI acos(-1.0) #define E 1e-6 #define MOD 16007 #define INF 0x3f3f3f3f #define N 1000001 #define LL long long using namespace std; int n,m; int a[N]; int res[N]; set<int> s; void solve(){for(int i=0;i<n;i++){int minn=a[i],maxx=a[i];s.clear();for(int j=i;j<n&&j-i<=1000;j++){minn=min(minn,a[j]);maxx=max(maxx,a[j]);s.insert(a[j]);//統計當前個數if(maxx-minn==j-i)if(s.size()==maxx-minn+1)res[s.size()]++;}} } int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&a[i]);solve();printf("Case #1:\n");while(m--){int k;scanf("%d",&k);printf("%d\n",res[k]);}return 0; }

?

總結

以上是生活随笔為你收集整理的找连续数(HDU-5247)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。