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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

UOJ #578. 收集卡片

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UOJ #578. 收集卡片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】: Star計劃訂購一本將要發行的周刊雜志,但他可不是為了讀書而是集卡。已知雜志將要發行N周(也就是N期),每期都會附贈一張卡片。Star通過種種途徑,了解到N期雜志附贈的卡片種類。Star只想訂購連續的若干期, 并在這些期內收集到所有可能出現的種類的卡片。現在他想知道,最少需要訂 購多少期。【輸入描述】: 第一行一個整數 N;第二行一個長度為 N 的字符串,由大寫或小寫字母組成,第 i 個字符表示第i 期附贈的卡片種類,每種字符(區分大小寫)表示一種卡片。【輸出描述】: 輸出一行一個整數,表示 Star 最少訂購的期數。【樣例輸入】: 8 acbbbcca 【樣例輸出】: 3 【樣例說明】: 【時間限制、數據范圍及描述】: 時間:1s 空間:256M對于 30%的數據,N≤300;對于 40%的數據,N≤2000;對于 60%的數據,N≤5000;對于 80%的數據,N≤100000;對于100%的數據,N≤500000。本題直接尺取大法搞定.Code: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN=500010; char str[MAXN]; bool mark[128]; int n,m,cnt[128]; inline void init() {scanf("%d%s",&n,str);for(int i=0;i<n;i++)if(!mark[str[i]])m++,mark[str[i]]=true; } inline int solve() {int k=0,st=0,ed=0,ret=n;while(st<n){while(ed<n&&k<m)if(!(cnt[str[ed++]]++))k++;if(k==m)ret=min(ret,ed-st);if(!(--cnt[str[st++]]))k--;}return ret; } int main() {init();printf("%d\n",solve());return 0; }

轉載于:https://www.cnblogs.com/ukcxrtjr/p/11577807.html

總結

以上是生活随笔為你收集整理的UOJ #578. 收集卡片的全部內容,希望文章能夠幫你解決所遇到的問題。

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