QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#501273 | #6511. Balancing Sequences | ucup-team4352 | WA | 359ms | 236140kb | C++23 | 1.8kb | 2024-08-02 16:17:16 | 2024-08-02 16:17:17 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define lowbit(x) (x&-x)
#define log(x) (31^__builtin_clz(x))
using namespace std;
const int maxn=1e6+5;
vector<int>e[maxn];
int st[maxn][20];
int fa[maxn],dfn[maxn],rk[maxn],dep[maxn],ans[maxn],nans[maxn],tot;
int L[maxn],R[maxn];
int f[maxn];
void dfs(int x,int f){
fa[x]=f;
dfn[x]=++tot;
rk[tot]=x;
for(auto u:e[x]){
if(u==f)continue;
dep[u]=dep[x]+1;
dfs(u,x);
}
}
inline int get(int x,int y){
return dep[x]<dep[y]?x:y;
}
inline int lca(int x,int y){
if(x==y)return x;
x=dfn[x],y=dfn[y];
if(x>y)swap(x,y);
x++;
return get(st[x][log(y-x+1)],st[y-(1<<log(y-x+1))+1][log(y-x+1)]);
}
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
void solve(){
int n;
//cin>>n;
n=1e6;
tot=0;
for(int i=1;i<=n;i++){
e[i].clear();
f[i]=i;
nans[i]=1;
}
for(int i=1;i<n;i++){
int u,v;
//cin>>u>>v;
u=i,v=i+1;
e[u].push_back(v);
e[v].push_back(u);
L[i]=u;R[i]=v;
}
dep[1]=1;
dfs(1,0);
for(int i=n;i>=1;i--){
st[i][0]=fa[rk[i]];
for(int j=1;j<=19;j++){
st[i][j]=get(st[i][j-1],st[min(i+(1<<j-1),n)][j-1]);
}
}
for(int i=n/2;i>=2;i--){
int l=i;
for(int j=i*2;j<=n;j+=i){
l=lca(l,j);
}
for(int j=i;j<=n;j+=i){
int now=find(j);
while(dep[now]>dep[l]){
nans[now]=i;
f[now]=fa[now];
now=find(now);
}
}
}
for(int i=1;i<n;i++){
if(fa[L[i]]==R[i])ans[i]=L[i];
else ans[i]=R[i];
}
for(int i=1;i<n;i++){
cout<<nans[ans[i]]<<" \n"[i==n-1];
}
}
int main(){
ios::sync_with_stdio(0), cin.tie(0);
int size(256<<20); //256M
__asm__ ( "movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));
int t=1;
///cin>>t;
while(t--)solve();
exit(0);
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 359ms
memory: 236140kb
input:
2 2 1 2 3 4 4 3 2 1 3 1 2 4 3 5 6 1 2 4 5 3 6
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ...
result:
wrong answer Integer parameter [name=x2] equals to 3, violates the range [1, 2] (test case 1)