题解:P10295 [CCC 2024 S1] Hat Circle

封面

思路:

通过画图可知编号为 ii 的人的正对面的人的编号为 i+n/2i+n/2,前提是 ii 小于等于 nn 的一半。

得知了编号为 ii 的人和他的正对面的人的编号就可以直接判断他们帽子的号码是不是相同的就可以了。

已提交测试。

完整代码:

#include<bits/stdc++.h>
#define LL long long
#define CPPname using namespace std
CPPname;
LL n;
const int MAX=1000010;
LL a[MAX];
int main(){
cin>>n;
LL ans=0;
for(int i=1;i<=n;i++)cin>>a[i];
const int c=n/2;
for(int i=1;i<=n/2;i++){
if(a[i]==a[i+c])ans+=2;
//cout<<i<<" "<<i+n/2<<" ";
}

cout<<ans;
return 0;
}