C. Hilbert’s Hotel
题意:
有n个数,现在要求把每个数移动到(a[i]+i)%n的位置,看是不是每个位置都只有一个数。
思路:
直接暴力每个数改变后的位置塞进map里,看是不是存在某个位置的个数≥2即可。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;cin>>t;
while(t--){
int n;cin>>n;
map<int,int> mp;
int flag=0;
for(int i=0;i<n;i++){
int x;cin>>x;
x=((x+i)%n+n)%n;
mp[x]++;
if(mp[x]>=2) flag=1;
}
puts(flag?"NO":"YES");
}
return 0;
}
本文探讨了C.Hilbert's Hotel问题,通过使用暴力算法和map数据结构,检查一系列整数移动到特定位置后,是否每个位置只包含一个数。此问题源于希尔伯特旅馆悖论,但在此被转化为一种编程挑战。
1332

被折叠的 条评论
为什么被折叠?



