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

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

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

      #D251010D. 未命名 10 (unnamed)

      給定 \(n\) 和長度為 \(n\) 的正整數序列 \(a\)
      定義一次操作為,選擇一個數 \(a_i\) 和質數 \(p\),將 \(a_i\) 賦值為 \(a_i\times p\)\(\frac{a_i}{p}\),必須滿足賦值后 \(a_i\) 為正整數。

      定義區間 \(l,r\) 的代價 \(val(l,r)\) 為,使 \(a_l,a_{l+1},\cdots,a_r\) 全都相等的最小操作次數。

      請求出 \(\sum_{l=1}^n \sum_{r=l}^n val(l,r)\),對 \(10^9+7\) 取模。

      對于 \(100\%\) 的數據,\(1\le n\le 2\times 10^5\)\(1\le a_i\le 10^6\)

      口胡題解:

      先轉化一下式子:

      \[ans=\sum^{}_{p\in a}\sum^{n}_{l=1}\sum^{n}_{r=l}\sum^{\log_pV}_{k=0}f(l,r,p,k) \]

      假設 \(b_i\)\(a_i\)\(p\) 次方,這有兩個結論:

      \[\min^{+∞}_{k=0}\sum^{n}_{i=1}|b_i-k|=\sum^{+∞}_{k=0}min(\sum^{r}_{i=l}[b_i\le k],\sum^{r}_{i=l}[b_i> k]) \]

      \[\min(x,y)=\frac{x+y-|x-y|}{2} \]

      那么其中 \(f\) 計算方法為:

      \[f(l,r,p,k)=min(\sum^{r}_{i=l}[b_i\le k],\sum^{r}_{i=l}[b_i> k])\\ =\frac{r-l+1-|\sum^{r}_{i=l}[b_i\le k]-\sum^{r}_{i=l}[b_i> k]|}{2}\\ =\frac{r-l+1-|\sum^{r}_{i=1}([b_i\le k]-[b_i> k])-\sum^{l-1}_{i=1}([b_i\le k]-[b_i> k])|}{2} \]

      我們設 \(sum_r=\sum^{r}_{i=1}([b_i\le k]-[b_i> k])\) 考慮在 \(p,k\) 確定的情況下,也就是 \(sum\) 確定的情況下快速計算 \(\sum^{n}_{l=1}\sum^{n}_{r=l}f(l,r,p,k)\).

      考慮先對 \(sum\) 排序,前面的 \((r-l+1)\) 當成區間長度,這個求和是好做的,我們記為 \(len\),此時我們可以把式子變成:

      \[\frac{len-\sum^{n}_{i=2}\sum^{i-1}_{j=1}sum_i-sum_j}{2} \]

      換個方式,就是:

      \[\frac{len-\sum^{n}_{i=1}sum_i\times(2i-1-n)}{2} \]

      這樣計算復雜度就降低了,考慮現在復雜度:發現是 \(O(Pn\log n\log V)\),其中 \(P\) 是質數個數,算出來不超過 \(8\times 10^4\),考慮優化。

      接下來是真口胡了,我不知道具體怎么做。

      看看怎么優化這個東西,因為每個數都由 \(O(\log V)\) 個質數構成,所以發現 \(sum_i\) 的非 \(+1\) 的變化次數是 \(O(\frac{n\log V}{P})\) 的。也就是說我們先給每個數 \(+i\),那么就只有 \(O(\frac{n\log V}{P})\) 個值了,那么直接找出所有的變化點,相當于把 \(sum_i\) 加權,接著做這個式子,現在復雜度就是 \(O(n\log^2V\log(\log\frac{n\log V}{P}))\),能過了。

      官方題解:

      每個質數分別計算,問題變成每次將一個數加 1 或減 1,使所有數都相等的最小操作次數。
      可以發現變為中位數次數最小,考慮計算。
      可能要自行腦補一檔部分分,只有 \(01\) 怎么做?
      那就是區間答案就是 \(min\) 0,1 的個數。

      可以從前到后掃描線,將 0 看做 \(-1\),利用前綴和來計算。

      用線段樹可以做到 \(O(nlogn)\),但考慮每次前綴和的變化量為 1,可以開桶統計每種前綴和的個數,做到 \(O(n)\)

      對于一般情況,枚舉分界 \(x\) ,將 \(\le x\) 的數看做 \(0\),其余看做 \(1\),然后將所有 \(x\) 的答案加起來,可以發現這樣是對的。

      于是 \(a_i=2^k\) 就做完了,但對于一般情況,不能每次都 \(O(n)\) 計算。

      發現非 \(0\) 數的總和是 \(nlogV\) 的,考慮如過以某個點為端點的區間中位數一定為零,那么可以直接計算,稱這些位置是無效的。

      設非 \(0\) 的數有 \(m\) 個,那么有效位置不超過 \(3m\) 個。

      考慮如何求出有效的位置,枚舉非零數,然后向左向右擴展,需要記錄前后綴的某個最值。

      std 實現的比較隨意,時間復雜度沒有仔細分析,但不超過 \(O(nlog^2V)\)

      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+5,P=1e9+7,i2=P+1>>1;
      int n,ans,c[N],d[N<<1];
      vector<int>p[N];
      bool vis[N],ban[N];
      inline int md(int x){
      	return x>=P?x-P:x;
      }
      int calc(vector<pair<int,int> >&a,int lim){
      	int res=0;
      	for(int i=0,j,s;j=i,i<a.size();i=j+1){
      		c[s=1]=(a[i].second>=lim?1:-1);
      		while(j+1<a.size()&&a[j+1].first==a[j].first+1)++j,c[++s]=(a[j].second>=lim?1:-1);
      		int cl=0,s1=0,s2=0,c1=0,c2=1;
      		d[n]=1;
      		for(int k=1;k<=s;++k){
      			c[k]+=c[k-1],cl=md(cl+k);
      			if(c[k]<c[k-1]){
      				s1=(1ll*(P-c[k])*d[c[k]+n]+s1)%P;
      				c1-=d[c[k]+n];
      				s2=(1ll*(c[k]+P)*d[c[k]+n]+s2)%P;
      				c2+=d[c[k]+n];
      			}else{
      				s2=(1ll*(P-c[k-1])*d[c[k-1]+n]+s2)%P;
      				c2-=d[c[k-1]+n];
      				s1=(1ll*(c[k-1]+P)*d[c[k-1]+n]+s1)%P;
      				c1+=d[c[k-1]+n];
      			}
      			res=(1ll*(P-c[k])*c1+s1+1ll*(c[k]+P)*c2+P-s2+res+cl)%P;
      			s2=md(s2+md(c[k]+P)),++d[c[k]+n],++c2;
      		}
      		for(int i=0;i<=s;++i)d[c[i]+n]=0;
      	}
      	res=1ll*res*i2%P;
      	return res;
      }
      int solve(vector<pair<int,int> >&a){
      	sort(a.begin(),a.end());
      	int sz=a.size(),mx=1;
      	for(int i=0,o=1e9;i<sz;++i){
      		o=min(o,2*i-a[i].first);
      		vis[a[i].first]=true,mx=max(mx,a[i].second);
      		for(int j=a[i].first+1,ed=(i==sz-1)?n:a[i+1].first-1;j<=ed;++j){
      			if(2*i-j+1<o)break;
      			vis[j]=true;
      			a.push_back(make_pair(j,0));
      		}
      	}
      	for(int i=sz-1,o=-1e9;~i;--i){
      		o=max(o,2*i-a[i].first);
      		for(int j=a[i].first-1,ed=i?a[i-1].first+1:1;j>=ed;--j){
      			if(2*i-j-1>o||vis[j])break;
      			vis[j]=true;
      			a.push_back(make_pair(j,0));
      		}
      	}
      	sort(a.begin(),a.end());
      	int res=0;
      	for(int i=1;i<=mx;++i)res=md(res+calc(a,i));
      	for(int i=0,j;j=i,i<a.size();i=j+1){
      		while(j+1<a.size()&&a[j+1].first==a[j].first+1)++j;
      		for(int k=i,w;k<=j;++k)if(a[k].second){
      			w=(1ll*(a[i].first-1)*(n-a[k].first+1)+1ll*(n-a[j].first)*a[k].first-1ll*(a[i].first-1)*(n-a[j].first))%P;
      			res=(1ll*w*a[k].second+res)%P;
      		}
      	}
      	for(auto v:a)vis[v.first]=false;
      	return res;
      }
      int main(){
      	freopen("unnamed.in","r",stdin);
      	freopen("unnamed.out","w",stdout);
      	scanf("%d",&n);
      	for(int i=1,x;i<=n;++i){
      		scanf("%d",&x);
      		p[x].push_back(i);
      	}
      	for(int i=2;i<=1000000;++i)if(!ban[i]){
      		long long x=i;
      		vector<pair<int,int> >tmp;
      		for(int j=i;j<=1000000;j+=i)ban[j]=true;
      		for(int j=1;x<=1000000;x*=i,++j)
      			for(int k=x;k<=1000000;k+=x)if((k/x)%i)
      				for(auto v:p[k])tmp.push_back(make_pair(v,j));
      		if(!tmp.empty())ans=md(ans+solve(tmp));
      	}
      	printf("%d\n",ans);
      	return 0;
      }
      
      posted @ 2025-10-10 19:39  NeeDna  閱讀(11)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 青青草原国产精品啪啪视频| 久国产精品韩国三级视频| 中文字幕精品人妻丝袜| 日韩乱码人妻无码中文字幕| 日本一区不卡高清更新二区| 亚洲国产精品久久久久秋霞| 欧美va亚洲va在线观看| av中文字幕一区二区| 国产成人一区二区免av| 免费观看在线A级毛片| 亚洲成av人片在www鸭子| 大屁股国产白浆一二区| 久久精品亚洲日本波多野结衣| 中文字幕av国产精品| 亚洲综合网国产精品一区| 国产精品老熟女一区二区| 亚洲色在线V中文字幕| 综合色一色综合久久网| 国产一区二区三区麻豆视频| 5D肉蒲团之性战奶水欧美| 午夜国人精品av免费看| 男女啪啪高清无遮挡免费| 日本东京热不卡一区二区| 精品国产亚洲一区二区三区在线观看| 成人拍拍拍无遮挡免费视频| 国产精品美女www爽爽爽视频 | 国产成人久久精品二三区| 又爽又大又黄a级毛片在线视频| 动漫AV纯肉无码AV电影网| 国产亚洲999精品AA片在线爽| 久久精品国产精品亚洲 | 欧美日韩精品一区二区视频| 豆国产97在线 | 亚洲| 亚洲中文字幕精品一区二区三区| 国产成人永久免费av在线| 日韩精品毛片无码一区到三区| 久久国产精品老人性| 成人无套少萝内射中出| 欧美区一区二区三区| 中国熟女仑乱hd| 亚洲区一区二区激情文学|