P11132 【MX-X5-T4】「GFOI Round 1」epitaxy 考虑到 nn 一定会有贡献,当把 nn 放在第 mm** **个时,前 m−1m-1 个数一定没有任何贡献。 所以找到贡献最大的,作为最终的 GCD,其余从大到小放即可。 #include using namespace std; const int N=1e6+5; int T,n,m; int ans[N],tag[N]; int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>T; while(T--){ for(int i=1;i>n>>m; ans[m]=n,tag[n]=1; int mx=-1,mi; for(int i=n-1;i>=n-m;i--) if(__gcd(n,i)>mx) mx=__gcd(n,i),mi=i; int sum=mi; for(int i=2;i*m=1;i--){ if(!ans[i]){ while(tag[idx]&&idx `#include using namespace std; const int N=1e6+5; int T,n,m; int ans[N],tag[N]; int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>T; while(T--){ for(int i=1;ians[i]=tag[i]=0; cin>>n>>m; ans[m]=n,tag[n]=1; int mx=-1,mi; for(int i=n-1;i>=n-m;i--) if(__gcd(n,i)>mx) mx=__gcd(n,i),mi=i; int sum=mi; for(int i=2;i*mans[i*m]=sum,tag[sum]=1,sum-=mx; int idx=1; for(int i=n;i>=1;i--){ if(!ans[i]){ while(tag[idx]&&idx ans[i]=idx,tag[idx]=1; } } for(int i=1;ians[i]" "; cout"\n"; } return 0; }`
P11132 【MX-X5-T4】「GFOI Round 1」epitaxy
笔记