LN-S00088 和 LN-S00089

学术版

chen_zhe @ 2026-11-06 19:53:49

LN-S00088

#include<bits/stdc++.h>
using namespace std;
long long c,t;long long n,d;long long a[200006];int mx[50006][50006];bool vis[200006];int cnt[50006][50006];
void dfs(int u,int sum){for(int i=1;i<=n;i++){
        if(a[max(u,i)]-a[min(u,i)]>d&&vis[i]==0){
            vis[i]=1;
            mx[u][i]=min(sum+1,mx[u][i]);
            dfs(i,sum+1);
            vis[i]=0;
        }
    }
}
void dfs2(int u,int sum){
    for(int i=1;i<=n;i++){
        if(a[max(u,i)]-a[min(u,i)]>d&&vis[i]==0){
            vis[i]=1;
            if(sum+1==mx[u][i]){
                cnt[u][i]++;
            }
            dfs(i,sum+1);
            vis[i]=0;
        }
    }
}
int main()
{
    freopen("migrate.in","r",stdin);
    freopen("migrate.out","w",stdout);
    cin>>c>>t;
    while(t--){
        cin>>n>>d;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){
            }
        }for(int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis))dfs(i,0);
        }for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));dfs2(i,0);
        }
        for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j){continue;
                }if(cnt[i][j]==2){}
                ans++;
            }

        }
        cout<<ans<<endl;
    }
    return 0;
}

LN-S00089

#include<bits/stdc++.h>
using namespace std;
#define int long long
int c,t;
int n,d;
int a[5006];
int mx[5006][5006];
int cnt[5006][5006];
bool vis[5006];
/*void bfs(int x){
    queue<pair<int,int>> q;
    memset(vis,0,sizeof(vis));
    vis[x]=1;
    q.push({x,0});
    while(!q.empty()){
        pair<int,int> u=q.front();
        q.pop();
        for(int i=1;i<=n;i++mx[u][i]=min(sum+1,mx[u][i]);mx[u][i]=min(sum+1,mx[u][i]);){
            if(a[max(x,i)]-a[min(x,i)]>d||vis[i]==1){
                vis[]
            }
        }

    }
}
*/
void dfs(int u,int sum){
    for(int i=1;i<=n;i++){
        if(a[max(u,i)]-a[min(u,i)]<=d&&vis[i]==0){
            vis[i]=1;
            mx[u][i]=min(sum+1,mx[u][i]);
            dfs(i,sum+1);
            vis[i]=0;
        }
    }
}
void dfs2(int u,int sum){
    for(int i=1;i<=n;i++){
        if(a[max(u,i)]-a[min(u,i)]<=d&&vis[i]==0){
            vis[i]=1;
            if(sum+1==mx[u][i]){
                cnt[u][i]++;
            }
            dfs(i,sum+1);
            vis[i]=0;
        }
    }
}
signed main(){
    freopen("migrate.in","r",stdin);
    freopen("migrate.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>c>>t;
    while(t--){
        cin>>n>>d;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        int ans=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j)
                    continue;
                mx[i][j]=1e18;
            }
        }
        for(int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis));
            dfs(i,0);
        }
        for(int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis));
            dfs2(i,0);
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j)
                    continue;
                if(cnt[i][j]==2){
                    ans++;
                }
            }
        }
        cout<<ans<<'\n';
    }
    return 0;
}

by FateEchoing @ 2026-11-06 19:54:05

qp


by CGcgxyXY @ 2026-11-06 19:54:06

做B的


by Water__Problem @ 2026-11-06 19:54:08

qpqp


by NanakoCodamorTulip @ 2026-11-06 19:54:08

qp


by zhangqh @ 2026-11-06 19:54:12

qp


by zzc2025 @ 2026-11-06 19:54:14

qp


by NiY_ @ 2026-11-06 19:54:20

qp


by Yore_Snow @ 2026-11-06 19:54:31

qp


by srp_Ethan @ 2026-11-06 19:54:33

qp


by Wooden_pickaxe @ 2026-11-06 19:54:37

qp


| 下一页