国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ2790: [Poi2012]Distance

2019-11-08 02:58:10
字體:
來源:轉載
供稿:網友

可以對每個Ai的所有約數xi求它到Ai的距離,然后被枚舉的所有數維護他到Ai的最小值和次小值,然后對每個Ai求Aj的時候就可以枚舉它的約數,如果最小值i和j重復就詢問次小值

code:

#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long long#define lowbit(x) x&(-x)using namespace std;const int maxn = 110000;const int maxm = 1100000;int a[maxn],n;int p[maxm],PRi,minp[maxm],s[maxm];bool v[maxm];void pre(){ memset(v,false,sizeof v); s[1]=0; pri=0; for(int i=2;i<maxm;i++) { if(!v[i]) { p[++pri]=i; minp[i]=i; s[i]=1; } for(int j=1;j<=pri;j++) { int k=i*p[j]; if(k>=maxm) break; v[k]=true; minp[k]=p[j]; s[k]=s[i]+1; if(i%p[j]==0) break; } }}int d[maxm][2],di[maxm][2];void g_d(){ memset(d,63,sizeof d); for(int i=1;i<=n;i++) { int x=a[i]; int k=sqrt(x); for(int j=1;j<=k;j++) { int l=j; if(x%j==0) { if(d[j][0]>s[x/j]) { d[j][1]=d[j][0]; di[j][1]=di[j][0]; d[j][0]=s[x/j]; di[j][0]=i; } else if(d[j][1]>s[x/j]) { d[j][1]=s[x/j]; di[j][1]=i; } if(j*j==x) break; j=x/j; if(d[j][0]>s[x/j]) { d[j][1]=d[j][0]; di[j][1]=di[j][0]; d[j][0]=s[x/j]; di[j][0]=i; } else if(d[j][1]>s[x/j]) { d[j][1]=s[x/j]; di[j][1]=i; } } j=l; } }}int main(){ pre(); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); g_d(); for(int i=1;i<=n;i++) { int x=a[i]; int k=sqrt(x); int ansx=INT_MAX,ansy=n+1; for(int j=1;j<=k;j++) if(x%j==0) { int jl=j; int xk=x/j; int l=di[j][0]==i; int nws=s[xk]+d[j][l]; if(ansx>nws||(ansx==nws&&ansy>di[j][l])) { ansx=nws; ansy=di[j][l]; } if(j*j==x) break; j=x/j; xk=x/j; l=di[j][0]==i; nws=s[xk]+d[j][l]; if(ansx>nws||(ansx==nws&&ansy>di[j][l])) { ansx=nws; ansy=di[j][l]; } j=jl; } printf("%d/n",ansy); } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀什市| 淳安县| 宁海县| 麦盖提县| 乐至县| 红桥区| 辉南县| 彭水| 长沙市| 林周县| 湾仔区| 隆尧县| 宁安市| 光泽县| 抚州市| 梧州市| 深圳市| 内乡县| 巩义市| 台安县| 竹北市| 巫山县| 淳安县| 平果县| 尉犁县| 乌兰察布市| 安顺市| 阜城县| 雅江县| 堆龙德庆县| 阳高县| 宣武区| 仁化县| 鲁山县| 双峰县| 武汉市| 银川市| 来宾市| 武山县| 厦门市| 屯门区|