BZOJ 2749 [HAOI2012]外星人
阿新 • • 發佈:2018-02-19
include pan 一個 iostream spa 開始 == mes 第一次
題解:對每一個>2的質數分解,最後統計2的個數
註意:如果一開始沒有2則ans需+1,因為第一次求phi的時候並沒有消耗2
WA了好幾遍
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int u=200000; int T; int m; long long ans; long long a[u+10]; void Div(int n,long long k){ for(int i=2;i*i<=n;++i){ while(n%i==0){ a[i]+=k;n/=i; } } if(n>1)a[n]+=k; } void Getans(){ for(int i=u;i>=2;--i){ if(a[i]==0)continue; ans=max(ans,a[i]); Div(i-1,a[i]); } } int main(){ scanf("%d",&T); while(T--){ memset(a,0,sizeof(a)); ans=0; scanf("%d",&m); while(m--){ int x,y; scanf("%d%d",&x,&y); a[x]=y; } int fla=(a[2]?0:1); Getans(); printf("%lld\n",ans+fla); } return 0; }
BZOJ 2749 [HAOI2012]外星人