萌新求助简奇怪问题
查看原帖
萌新求助简奇怪问题
188879
VioletIsMyLove楼主2022/2/22 20:33

RT

#include<bits/stdc++.h>
using namespace std;
struct ZS{
	int a,id;
	bool operator <(const ZS b)const{return a<b.a;}
}t[100005];
int n,minn,m;
int a[100005],b[100005];
long long ans,s;
bool vis[100005];
inline int read(){
	int ret=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
	while(isdigit(ch)){ret=ret*10+ch-'0';ch=getchar();}
	return ret*f;
}
int main(){
//	freopen("P2127.in","r",stdin);
//	freopen("P2127.out","w",stdout);
	n=read();
	for(int i=1;i<=n;i++)a[i]=t[i].a=read(),t[i].id=i;
	sort(t+1,t+1+n);minn=t[1].a;
	for(int i=1;i<=n;i++)b[t[i].id]=i;
	for(int i=1;i<=n;i++)if(!vis[i]){
		int j=i,len=0;m=1<<30;s=0;
		while(!vis[j])vis[j]=1,m=min(m,a[j]),s+=a[j],j=b[j],len++;
		ans+=min((long long)s+(long long)(len-2)*m,(long long)s+m+(long long)(len+1)*minn);
	}
	printf("%lld\n",ans);
	return 0;
}

以上是我的代码

这是题解代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define LL long long
#define inf 2147483647
LL n,a[100006],b[100006],MIN,pos[100006],siz,sum,minn;
bool vis[100006];
LL ans;
void dfs(int x)
{
    if(vis[x])return ;
    sum+=a[x];    //记录环内每个点的总和 
    siz++;        //环内有多少个点 
    MIN=min(MIN,a[x]);    //环内最小值 
    vis[x]=1;    //打上标记 
    dfs(pos[x]);    //下一个点 
}
int main()
{
//	freopen("P2127.in","r",stdin);
//	freopen("P21270.out","w",stdout);
    scanf("%d",&n);
    minn=MIN=inf;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        b[i]=a[i];
        minn=min(minn,a[i]);    //记录序列最小值 
    }
    sort(b+1,b+1+n);    //排序 
    for(int i=1;i<=n;i++)
        pos[i]=lower_bound(b+1,b+1+n,a[i])-b;    //记录排序后的位置 
    for(int i=1;i<=n;i++)
    {
        if(!vis[i])
        {
            dfs(i);
            ans+=min(sum+MIN+minn*(siz+1),sum+MIN*(siz-2));
/*
        方法一:交换序列最小值和环内最小值 + 序列最小值 * 环内点数 
        方法二:环内最小值*环内点数。 
*/ 
            siz=0; sum=0; MIN=inf;
        }
    }
    printf("%lld",ans);
}

我的代码交上去RE,0分,题解100

但是在本地对拍一点毛病都没有,在IDE上也测试过样例了似乎也没有UB

所以可能是什么问题=-=,调了1h了没搞出来

2022/2/22 20:33
加载中...