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

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

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

      *題解:P3538 [POI 2012] OKR-A Horrible Poem

      原題鏈接

      解析

      如果你還不會利用哈希 \(O(n)\) 找循環節,那么你應該先去做 P4391

      由于我們要求的是完整周期,所以循環節長度必定為所選片段長度的因子,于是可以很輕松地得到一個 \(O(q \sqrt n)\) 的做法。

      設查詢的字符串為 \(a\)。觀察到若字符串 \(b\) 是一個完整周期,則對于所有滿足 \(k \cdot \operatorname{len}(b) \mid \operatorname{len}(a)\)\(k\),\(b^k\) 也是一個完整周期。

      \(c\) 為最短完整周期且 \(c^x=a\),很多題解到這里就直接開始對 \(x\) 分解質因數了,具體地,維護一個當前答案 \(ans\),初始為 \(\operatorname{len}(a)\),對于 \(\operatorname{len}(a)\) 的每個質因子 \(d\),判斷 \(c[1,\dfrac{ans}w0obha2h00]\) 是否是一個完整周期,如果是,則令 \(ans \gets \dfrac{ans}w0obha2h00\)

      但實際上還需要說明除的時候不會把 \(\operatorname{len}(c)\) 的質因子除掉。事實上,不存在一個字符串 \(d\) 使得 \(d\)\(a\) 的完整周期且 \(c\) 不是 \(d\) 的完整周期。使用周期引理可以輕松地證明這個命題。

      周期引理:若 \(p,q\) 是字符串 \(S\) 的兩個周期且 \(p + q \le \operatorname{len}(S) +\gcd(p,q)\),則 \(\gcd(p,q)\) 也是 \(S\) 的一個周期。

      所以如果存在這樣的 \(d\) 則必定存在一個長度為 \(\gcd(\operatorname{len}(c),\operatorname{len}(d))\) 的完整周期,原命題得證。

      在線性篩素數的同時處理出每個數的最小質因子,我們就得到了一個時間復雜度 \(O(q \log n)\) 的做法。

      代碼

      /*
      */
      #include<bits/stdc++.h>
      #define eps 0.000001
      #define mid ((l + r) >> 1)
      #define ls(x) ((x) << 1)
      #define rs(x) (((x) << 1) | 1)
      using namespace std;
      typedef unsigned long long ull;
      typedef long long ll;
      typedef pair<ll,int> pii;
      const int N = 5e5 + 5,M = 3.2e4 + 5,base = 13331;
      ull h[N],mi[N];
      vector<int> v[N];
      bool vis[N];
      vector<int> pri;
      int d[N];
      void euler(){
      	for(int i=2;i<N;i++){
      		if(!vis[i]){
      			d[i] = i;
      			pri.push_back(i);
      		}
      		for(int j=0;j<pri.size() && i * pri[j] < N;j++){
      			vis[i * pri[j]] = true;
      			d[i * pri[j]] = pri[j];
      			if(i % pri[j] == 0){
      				break;
      			}
      		}
      	}
      }
      ull get(int l,int r){
      	return h[r] - h[l - 1] * mi[r - l + 1];
      }
      bool chk(int l,int r,int k){
      	if(!k) return false;
      	return get(l,r - k) == get(l + k,r);
      }
      int calc(int l,int r){
      	int len = r - l + 1;
      	int res = len,now = len; 
      	while(now > 1){
      		if(chk(l,r,res / d[now])){
      			res /= d[now];
      		}
      		now /= d[now];
      	}
      	return res;
      }
      int main(){
      //	freopen("in.txt","r",stdin);
      //	freopen("out1.txt","w",stdout);
      	ios::sync_with_stdio(false);
      	cin.tie(0),cout.tie(0);
      	euler();
      	int n;
      	cin>>n;
      	string s;
      	cin>>s;
      	s = " " + s;
      	mi[0] = 1;
      	for(int i=1;i<s.size();i++){
      		mi[i] = mi[i - 1] * base;
      		h[i] = h[i - 1] * base + s[i];
      	}
      	int q;
      	cin>>q;
      	while(q--){
      		int a,b;
      		cin>>a>>b;
      		cout<<calc(a,b)<<'\n';
      	}
      	return 0;
      }
       
      
      posted @ 2025-08-29 18:26  yuyce  閱讀(0)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区不卡在线| 日韩国产成人精品视频| 我要看亚洲黄色太黄一级黄| 不卡一区二区国产在线| 国产亚洲色视频在线| 中文人妻av高清一区二区| 一区二区三区不卡国产| 亚洲国产激情一区二区三区| 日本久久久免费高清| 国产日本一区二区三区久久| 中文字幕在线永久免费视频| 乱码午夜-极品国产内射| 亚洲男人AV天堂午夜在| 山丹县| 国产精品无码不卡在线播放| 国产精品剧情亚洲二区| 成人免费A级毛片无码片2022| 国产热A欧美热A在线视频| 国产馆在线精品极品粉嫩| 亚洲性无码av在线| 精品久久久久久无码人妻蜜桃| 久久成人影院精品777| 四虎永久精品免费视频| 中文字幕无码免费久久99| 强奷漂亮人妻系列老师| 人人做人人澡人人人爽| 亚洲熟少妇一区二区三区| 婷婷六月色| 国产av无码专区亚洲av软件| 国产乱码精品一区二区三区中文| 性一交一乱一乱一视频| 成人亚欧欧美激情在线观看| 国产真实野战在线视频| 午夜天堂av天堂久久久| 国产色无码专区在线观看| 亚洲午夜精品国产电影在线观看 | 久热re这里精品视频在线6| 国产av一区二区三区精品| 欧美午夜小视频| 南陵县| 亚洲熟女乱色综合亚洲图片|