牛客OI周賽7 普及組 數糖紙(暴力列舉)

2021-09-11 07:16:29 字數 876 閱讀 7369

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

可能很多人要吐槽為什麼標題不是「救救blabla」了。

第一行乙個正整數 n ,表示共有 n 張糖紙。

第二行共有 n 個正整數,第 i 個正整數表示第 i 張糖紙的顏色 ci

對於20%的資料:1<=n<=100

對於40%的資料:1<=n<=1000

對於100%的資料:1<=n<=1e6,0<=ci<=1e9

乙個整數表示pm6最多能收集多少張糖紙。
示例1

5

1 2 2 3 4

3
pm6可以收集第3到第5張的糖紙,共有三張。
分析:本題題意即為查詢沒有重複元素的最長區間段,我們可以利用桶排序的思想來判斷區間段內是否有重複元素,來查詢最長無重複元素區間段。不過資料範圍是1e9,開普通陣列可能會導致陣列越界。我們就可以開乙個比較另類的bool型別陣列(長度居然可以達到1e11........),這樣就可以存放資料了。

#includeconst int m=1e6+5,xm=1e9+5;

int a[m],n,i,j,k,l,r,max,tmax;

bool b[xm];

int main()

l=1,r=1;

while(r<=n)//當末端進行區間段遍歷,直到遍歷到尾部(迴圈內最多遍歷2e6次)

else//如果該元素在區間段內已經出現過了,這個元素之前的區間段即為最大值

}} printf("%d\n",max);//輸出最終的最大值

}

牛客OI周賽7 普及組 數糖紙

可能很多人要吐槽為什麼標題不是 救救blabla 了。第一行乙個正整數 n 表示共有 n 張糖紙。第二行共有 n 個正整數,第 i 個正整數表示第 i 張糖紙的顏色 ci 對於20 的資料 1 n 100 對於40 的資料 1 n 1000 對於100 的資料 1 n 1e6,0 ci 1e9乙個整...

牛客OI周賽7 普及組

比賽鏈結 這題非常簡單,純模擬就可以過,不用解釋 如下 includeusing namespace std struct gg a 10005 int main cin m for int i 1 i m i cout 這題目看起來仍然簡單。但最開始我還以為要把所有區間全部列舉一遍。然後我打出暴力...

牛客OI周賽7 普及組 救救企鵝(暴力列舉)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 另一天,乙隻可愛的圍著圍巾的肥企鵝在路上搖搖晃晃地走著,遇上了迎面走來的打著飽嗝的pm6。小企鵝預感不妙,這不就是最近有名的惡人pm6麼!嚇得立刻扭頭就想跑。pm6...