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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

秀姿势(jzoj 3464)

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 秀姿势(jzoj 3464) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

秀姿勢

jzoj 3464

題目大意

有n個數,每個數都有一個分組,現在問你最多去掉k個分組后,做多有多少個數是連續的同組的

輸入樣例

9 1 2 7 3 7 7 3 7 5 7

輸出樣例

4

樣例解釋

總共有9個學生,最多只能刷一次學生。
若不刷,最長完美學生連續子序列長度為2
若刷掉考第3門考得好的學生,則學生序列變成2 7 7 7 7 5 7,最長完美學生連續子序列長度為4.

數據范圍

對于10%的數據:n?10n\leqslant 10n?10
對于30%的數據:n?1000n\leqslant 1000n?1000
對于100%的數據:1?n?1000001\leqslant n\leqslant 1000001?n?100000

解題思路

題目就是找一個連續的子串里面包含的組數不超過k+1,這樣刪去k個后還剩一個,然后找這些子串中出現的最多的數出現的次數
我們從一開始讓數字進隊,當組數大于k+1時就從隊尾出,直到符合為止

代碼

#include<map> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long using namespace std; int n, m, s, x, ans, a[100010]; map < int , int > p; int main() {scanf("%d%d", &n, &m);m += 1;x = 1;for (int i = 1; i <= n; ++i){scanf("%d", &a[i]);if (!p[a[i]]) s++;//新的組p[a[i]]++;while (s > m){p[a[x]]--;if (!p[a[x]]) s--;//這個組沒了x++;}ans = max(ans, p[a[i]]);//求最大值}printf("%d", ans);return 0; }

總結

以上是生活随笔為你收集整理的秀姿势(jzoj 3464)的全部內容,希望文章能夠幫你解決所遇到的問題。

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