问题标题: 积分赛

0
0
已解决
谈睿
谈睿
新手天翼
新手天翼

rt,啥东西,有没有人科普一下,能参加不?

谈睿在2025-05-25 20:54:39追加了内容

快吐了。。。但做完了。

评价一下,前四题比较水,最后一题写的时候我都不知道自己在干什么(稀里糊涂的)。

 

谈睿在2025-05-26 20:29:44追加了内容

第五题我的AC代码,

思路的话,简而言之,

就是把大的循环(不知道用什么词)块拆成小的循环,

算次数,有点数学的成分把,很乱。

#include<iostream>
using namespace std;
int t,n,a[1000005],ans;
int main(){
    cin>>t;
    while(t--){
        ans=0;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=1;i<=n;i++){
            if(a[i]!=-1){
                int len=0,j=i;
                while(a[j]!=-1){
                    len++;
                    int nj=a[j];
                    a[j]=-1;
                    j=nj;
                }
                if(len==1||len==2) continue;
                if(len%2==0) ans+=len/2-1;
                else ans+=(len-1)/2;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}


0
0
0
0
于行衍
于行衍
中级天翼
中级天翼

我第一次加了544,第14名

我要回答