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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[CF1082E] Increasing Frequency

發布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [CF1082E] Increasing Frequency 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

給定一個長度為 \(n\) 的數列 \(a\) ,你可以任意選擇一個區間 \([l,r]\) ,并給區間每個數加上一個整數 \(k\) ,求這樣一次操作之后數列中最多有多少個數等于 \(c\)

\(n,c,a_i\leq 10^5\)

Solution

假設當前選擇區間的右端點為 \(r\),那我們要強制將 \(a_r\) 這個元素變為 \(c\),不然可以通過讓右端點 \(-1\) 使答案變得不劣。

同理,如果我們左端點 \(l\) 的元素 \(a_l\) 也要讓其強制等于 \(a_r\),不然同樣可以通過讓左端點 \(+1\) 使答案變的不劣。

所以這個性質告訴我們選中的區間 \([l,r]\) 一定滿足 \(a_l=a_r\)

這啟發我們對于每種取值分開做

\(f(x)\) 是右端點為 \(x\) 時最多有多少個元素取到 \(c\) 。

考慮列出 \(DP\)

\(f(x)=\max \left\{pre(las-1)+count(las,x)+suf(x+1)\right\}\),其中 \(pre(i)\) 表示從 \(1\sim i\) 有多少個元素為 \(c\),同理 \(suf(i)\) 表示從 \(i\sim n\) 有多少個元素為 \(c\), \(count(l,r)\) 表示在區間 \([l,r]\) 里有多少個元素等于這個區間的端點即 \(a_r\)

發現如果拿 \(vector\) 存的話這是一個單調隊列優化 \(DP\) 的標準式子

隨便優化一下就吼了

Code

#include<bits/stdc++.h> using std::min; using std::max; using std::swap; using std::vector; typedef double db; typedef long long ll; #define pb(A) push_back(A) #define pii std::pair<int,int> #define all(A) A.begin(),A.end() #define mp(A,B) std::make_pair(A,B) const int N=5e5+5;vector<int> v[N]; int n,m,val[N],vis[N],q[N],hd; int pre[N],suf[N],tot[N],tail;int getint(){int X=0,w=0;char ch=getchar();while(!isdigit(ch))w|=ch=='-',ch=getchar();while( isdigit(ch))X=X*10+ch-48,ch=getchar();if(w) return -X;return X; }signed main(){n=getint(),m=getint();for(int i=1;i<=n;i++)val[i]=getint(),pre[i]=pre[i-1]+(val[i]==m),v[val[i]].pb(i);for(int i=n;i;i--)suf[i]=suf[i+1]+(val[i]==m);int ans=0;for(int i=1;i<=n;i++){if(!vis[val[i]]){vis[val[i]]=1;hd=1,tail=0;for(int j=0;j<v[val[i]].size();j++){while(hd<=tail and pre[ v[ val[i] ][ j ] -1 ]-j>=pre[ v[ val[i] ][ q[tail] ] -1 ]-q[tail]) tail--;q[++tail]=j;if(hd<=tail) ans=max(ans,pre[ v[ val[i] ][ q[hd] ] -1 ]+j-q[hd]+1+suf[ v[ val[i] ][ j ] +1 ]);}}} printf("%d\n",ans);return 0; }

轉載于:https://www.cnblogs.com/YoungNeal/p/10142992.html

總結

以上是生活随笔為你收集整理的[CF1082E] Increasing Frequency的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜影院入口 | 国产视频一区二区三区在线播放 | 日韩丰满少妇无码内射 | 国产精品揄拍一区二区 | 五月婷婷色综合 | 日韩精品一区二区三区不卡 | caoporn超碰97 | 亚洲乱码在线 | 色屁屁影院www国产高清麻豆 | 国产精品日韩精品欧美精品 | 精品国产乱码久久久久久免费 | 五月婷婷六月激情 | 精品无码一区二区三区的天堂 | 一级α片免费看刺激高潮视频 | 精品亚洲乱码一区二区 | jzzijzzij日本成熟少妇 | 久久久久少妇 | 人妻少妇偷人精品久久久任期 | 成人高清视频免费观看 | 国产探花一区二区 | 一本视频| 99精品视频播放 | 男女毛片视频 | av在线在线| 久久免费的精品国产v∧ | 韩国久久久久 | 精品无码在线观看 | 国产又爽又黄的激情精品视频 | 亚洲а∨天堂久久精品2021 | 国产丝袜在线 | 日韩精品久久久 | 你懂的网址在线观看 | 日韩激情影院 | 97精品人妻一区二区三区 | 免费国产在线视频 | 天天天综合网 | 男插女视频免费 | 很色的网站 | 亚洲av综合色区无码一区 | 熟妇人妻一区二区三区四区 | 激情第四色 | 国产超碰人人 | 精品国产三级a∨在线 | 人人色视频| 欧美一区二区三区激情啪啪 | 在线免费观看黄 | 中国老熟女重囗味hdxx | 偷操| 精品久久一区二区三区 | 高清国产mv在线观看 | 日本电影一区 | 亚洲第一av在线 | 中国女人内谢69xxxx免费视频 | 在线看欧美 | 亚瑟av | 一区在线免费 | 91porn九色 | 久草免费在线色站 | www.色在线观看 | missav | 免费高清av在线看 | 国产黑丝av| 国产婷婷一区二区三区久久 | 国产精品久久久久久久免费观看 | 韩国久久久久 | 成年人三级视频 | 五十路母| 久青草资源福利视频 | 俺来也在线视频 | 久久免费精品 | 中文字幕 人妻熟女 | av黄页| 日韩精品一区三区 | www夜插内射视频网站 | 中文字幕美女 | 成人wwxx免费观看 | 在线观看日韩精品 | 中文字幕乱码无码人妻系列蜜桃 | 制服丝袜一区二区三区 | 中日韩黄色片 | 成人在线观看91 | 北条麻妃一区二区三区免费 | 精品亚洲永久免费精品 | 少妇扒开粉嫩小泬视频 | 精品夜夜澡人妻无码av | 激情视频网址 | 中文字幕手机在线视频 | 欧美午夜一区 | 久久视 | 亚洲欧美日韩色 | 曰本女人与公拘交酡 | 精品一区二区在线观看 | 成人做爰69片免费看 | 黄色网址在线免费播放 | mm1313亚洲国产精品美女 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲天堂黄 | 久草视频国产 | 日本大尺度做爰呻吟舌吻 | 日韩高清中文字幕 |