<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      cogimyunの小窩

      Loading...

      Luogu P8986 [北大集訓 2021] 基因編輯 題解

      我們考慮這道題目要求我們在數列 \(s\) 中找到一個一個區間 \([i,j]\) 滿足:

      • \(l\in[1,l-1],r\in [r+1,n]\)
      • \(j-i+1\) 最小化
      • 在數列 \(s\) 中找不到一個與區間 \([i,j]\) 不同的區間 \([p,q]\) (即 \(i\ne p,j\ne q\) )滿足 \(s_i=s_p,s_j=s_q\)
      • \(s_i\ne s_j\)

      我們不難發現后面兩個條件可以轉化為區間 \([i,j]\) 滿足:

      • \(\forall p\in [i,j-1]\cup [j+1,n] ,s_j\ne s_p\)
      • \(\forall q\in [1,i-1]\cup [i+1,j] ,s_i\ne s_q\)

      我們不妨在遍歷 \(j\) 的同時用一個 set 來維護所有的 \(s_i\) ,滿足 \(s_i\)\(s_1\)\(s_j\) 中僅出一次,再用桶維護從最接近 \(l\) 并且滿足上述條件的 \(i\) 開始一直到 \(n\),數列 \(s\) 里每個數出現的次數,如果當前的 \(s_j\) 出現次數為1,那么這就最佳答案,直接輸出,如果遍歷完所有 \(j\) 但沒有一個 \(j\) 滿足上述條件,則不存在一個合法方案,輸出 -1。

      CODE

      #include<bits/stdc++.h>
      using namespace std;
      #define fi first
      #define se second
      int n,l,r,s[1000005],book[1000005],id[1000005],cnt[1000005];
      set<pair<int,int> > q;
      int main(){
      	ios::sync_with_stdio(0);
      	cin.tie(0);
      	cout.tie(0);
      	cin>>n>>l>>r;
      	for(int i=1;i<=n;i++)
      		cin>>s[i];
      	for(int i=1;i<l;i++){
      		book[s[i]]++;
      		if(book[s[i]]==1){
      			id[s[i]]=i;
      			q.insert({l-i,s[i]}); 
      		}
      		else if(book[s[i]]==2){
      			auto it=q.find({l-id[s[i]],s[i]});
      			q.erase(it);
      		}
      	}
      	for(int i=l;i<=r;i++){
      		book[s[i]]++;
      		if(book[s[i]]==2&&id[s[i]]){
      			auto it=q.find({l-id[s[i]],s[i]});
      			q.erase(it);
      		}
      	}
      	auto it=q.begin();
      	pair<int,int> ttt=*it;
      	for(int i=n;i>=l-ttt.fi;i--)
      		cnt[s[i]]++;
      	for(int i=r+1;i<=n;i++){
      		book[s[i]]++;
      		if(book[s[i]]==2&&id[s[i]]){
      			auto it=q.find({l-id[s[i]],s[i]});
      			pair<int,int> ttt=*it;
      			q.erase(it);
      			auto iti=q.begin();
      			pair<int,int> kkk=*iti;
      			for(int j=l-kkk.fi;j<l-ttt.fi;j++)
      				cnt[s[j]]++; 
      		}
      		if(cnt[s[i]]==1){
      			auto it=q.begin();
      			if(it==q.end())
      				continue;
      			pair<int,int> ttt=*it;
      			cout<<(i-l+ttt.fi+1);
      			return 0;
      		}
      	}
      	cout<<-1;
      	return 0;
      } 
      
      posted @ 2025-10-30 18:26  cogimyun  閱讀(0)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人精品区一区二区| 国产精品天天在线午夜更新| 亚洲一区二区精品极品| 玩弄美艳馊子高潮无码| 国产精品免费第一区二区| 狠狠人妻久久久久久综合九色| 东乡县| 亚洲自在精品网久久一区| 久久精品国产色蜜蜜麻豆| 粗壮挺进邻居人妻无码| 国产又色又爽又黄的视频在线 | 四虎影视一区二区精品| 亚洲无线码在线一区观看| 中文字幕无线码中文字幕| 欧美日韩精品一区二区视频| 亚洲成a∨人片在线观看不卡| 国产视频 视频一区二区| 亚洲在战av极品无码| 天堂亚洲免费视频| 国产乱理伦片在线观看| 亚洲欧美日韩愉拍自拍美利坚| 色噜噜狠狠成人综合| 国产精品午夜av福利| 亚洲精品不卡av在线播放| 亚洲精品中文av在线| 亚洲精品久久一区二区三区四区| av在线播放观看国产| 亚洲欧美一区二区成人片| 亚洲欧洲日韩国内高清| 日本久久一区二区三区高清| 色偷偷久久一区二区三区| 午夜国产精品福利一二| 91福利一区福利二区| 精品无码国产一区二区三区av| 国产女人高潮视频在线观看| 乌鲁木齐县| 激情国产一区二区三区四区| 动漫av网站免费观看| 国产精品v欧美精品∨日韩| 97精品伊人久久久大香线蕉| 综合色天天久久|