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

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

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

      哈希亂搞:CF1418G Three Occurrences

      這道題看起來(lái)并不是那么好做,看到題解神秘做法,記錄下來(lái)。

      考慮枚舉右端點(diǎn),統(tǒng)計(jì)符合條件的左端點(diǎn)數(shù)量。

      發(fā)現(xiàn) 3 這個(gè)數(shù)字很小,發(fā)現(xiàn)區(qū)間中的數(shù)我們僅僅需要知道它 %3 的值。

      我們?nèi)绻梢杂涗浺粋€(gè)位置前綴中所有值的出現(xiàn)情況就好了,但是明顯不現(xiàn)實(shí),整個(gè)數(shù)據(jù)是 \(n^2\) 級(jí)別的。

      就算我們搞一棵主席樹,似乎也沒(méi)有什么可以快速確定左端點(diǎn)的方式。

      如果我們可以把一大堆數(shù)的出現(xiàn)次數(shù)壓成一坨,并且這一坨還可差分就好了。

      想到了集合哈希。

      我們給每一個(gè)數(shù)一個(gè)隨機(jī)值,每個(gè)位置的哈希值就是出現(xiàn)次數(shù) %3 乘上隨機(jī)值。

      不難發(fā)現(xiàn)兩個(gè)位置如果哈希值是相等的,那么區(qū)間就是合法的。

      但是這個(gè)辦法有一個(gè)問(wèn)題:沒(méi)有辦法保證恰好出現(xiàn)了 3 次。

      我們考慮雙指針,每次向右移動(dòng)右端點(diǎn),維護(hù)左端點(diǎn),顯然左端點(diǎn)只會(huì)向右。

      就沒(méi)有了↓

      點(diǎn)擊查看代碼
      #include <bits/stdc++.h>
      #define int long long
      #define ull unsigned long long
      using namespace std;
      const int MN=1e6+116;
      int n, a[MN], cnt[MN], ans=0;
      unordered_map <int, ull> trans;
      map <ull, int> mp;
      ull hashed[MN];
      signed main(){
      	mt19937_64 rnd(114514);
      	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
      	cin>>n; for(int i=1; i<=n; ++i) trans[i]=rnd();
      	for(int i=1; i<=n; ++i){
      		hashed[i]=hashed[i-1]; cin>>a[i];
      		hashed[i]-=cnt[a[i]]*trans[a[i]];
      		++cnt[a[i]]; cnt[a[i]]%=3;
      		hashed[i]+=cnt[a[i]]*trans[a[i]];
      	}
      	mp[0]=1; memset(cnt,0,sizeof(cnt));
      	for(int i=1,j=0; i<=n; ++i){
      		++cnt[a[i]];
      		while(cnt[a[i]]>3){
      			--cnt[a[j]];
      			if(j) --mp[hashed[j-1]];
      			++j;
      		}
      		ans+=mp[hashed[i]];
      		++mp[hashed[i]];
      	}
      	cout<<ans<<'\n';
      	return 0;
      }
      
      posted @ 2025-10-16 14:46  BaiBaiShaFeng  閱讀(4)  評(píng)論(0)    收藏  舉報(bào)
      Sakana Widget右下角定位
      主站蜘蛛池模板: 免费视频爱爱太爽了| 白嫩少妇激情无码| 中文字幕日韩一区二区不卡| 91福利国产成人精品导航| 国产成人精品亚洲午夜| 亚洲国产午夜精品理论片在线播放| 亚洲免费视频一区二区三区| 国产精品九九九一区二区| 亚洲欧美在线综合一区二区三区| 国产精品欧美福利久久| 亚洲中文字幕人成影院| 极品少妇被后入内射视| 国产无遮挡猛进猛出免费软件| 激情综合网激情国产av| 成人无码h真人在线网站| 久久香蕉国产线看观看猫咪av| 久久精品国产午夜福利伦理| 中文字幕人妻中文AV不卡专区| 国产一区| 四虎国产精品成人免费久久| 人人妻人人做人人爽夜欢视频| 国产成人精品日本亚洲网站| 日韩一区二区三区在线观院| 大胸美女被吃奶爽死视频| 国产精品亚洲五月天高清| 国产成人精彩在线视频| 亚洲精品男男一区二区| 国产精品亚洲av三区色| 国产乱子伦农村xxxx| 视频一区视频二区亚洲视频| 中文字幕一卡二卡三卡| 亚洲国产高清aⅴ视频 | 精品精品亚洲高清a毛片| 人妻少妇久久久久久97人妻| 国产欧美性成人精品午夜| 色综合色综合综合综合综合| 国产成人精品无码播放| 国产精品免费中文字幕| 国产精品疯狂输出jk草莓视频| 97av麻豆蜜桃一区二区| 少妇办公室好紧好爽再浪一点|