A. Hilbert's Hotel(数学)
\(看了一下网上都没什么题解,自己写一篇吧,对你有帮助的话留个言吧~\)
\(\color{Orange}{----------------------分割------------------------}\)
\(\color{Green}{一、分析问题}\)
\(对于给定的n和数组a,其实是有循环存在的\)
\(比如[0,n)模n后余数必定是[0,n)\)
\([n,2n)模n后余数必定是[0,n)\)
\(现在我们的目的是判断是否所有数都是互不相等的。\)
\(\color{Orange}{二、举例子发现规律}\)
\(拿这组样例来说\)
\(4\)
\(5\ 5\ 5\ 1\)
\(按照我们上面的循环节,把操作后得到的数写出来\)
\([0,3]:5\ 6\ 7\ 4\)
\([4,7]:9\ 10\ 11\ 8\)
\(.............\)
\(可以发现,[4,7]就是由[0,3]都加n得来的,这很容易理解\)
\(那么我们可以把所有循环节看成由[0,3]加上nk得来的\)
\(所以现在的问题是已知集合={5+nk,6+nk,7+nk,4+nk},求是否有相同的数字\)
\(因为要互不相同,所以5、6、7、4模n后应该互不相等\)
\(\color{Red}{为什么?因为如果模n后相等,就一定存在某个k使得x_1=x_2+kn}\)
\(\color{Purple}{三、算法实现}\)
\(问题到这里应该就很简单了\)
\(先处理出[0,n)操作后得到的数字(也就是先处理一个循环节)\)
\(然后对处理后的每个数对n求余,如果余数互不相等说明不存在重复的数字\)
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+9;
int n,t;
int a[maxn],b[maxn];
int main()
{
cin>>t;
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
b[i]=i+a[i%n];//处理第一个循环节
for(int i=0;i<n;i++) b[i]=(b[i]%n+n)%n;//对n取余
sort(b,b+n);//排序后,如果余数互不相等,必定是0,1,2...n-1
int flag=1;
for(int i=0;i<n;i++)
if(b[i]!=i) flag=0;
if(flag) cout<<"YES";
else cout<<"NO";
cout<<endl;
}
}
A. Hilbert's Hotel(数学)的更多相关文章
- matlab矩阵内存预分配
matlab矩阵内存预分配就意味着,划定一个固定的内存块,各数据可直接按"行.列指数"存放到对应的元素中.若矩阵中不预配置内存.则随着"行.列指数"的变大.MA ...
- hilbert矩阵 分类: 数学 2015-07-31 23:03 2人阅读 评论(0) 收藏
希尔伯特矩阵 希尔伯特矩阵是一种数学变换矩阵 Hilbert matrix,矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,--,1/n] ...
- MIT牛人解说数学体系
https://www.douban.com/group/topic/11115261/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什 ...
- 【zz】MIT牛人解说数学体系
作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...
- Kolmogorov 的数学观与业绩
https://www.douban.com/group/topic/11395706/ 作者:伊藤清 当我得知苏联伟大的数学家,84岁的 Andreyii Nikolaevich Kolmogoro ...
- 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...
- POJ-2726-Holiday Hotel
Holiday Hotel Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8302 Accepted: 3249 D ...
- hilbert矩阵
希尔伯特矩阵 希尔伯特矩阵是一种数学变换矩阵 Hilbert matrix,矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,……,1/n] ...
- MIT牛人解说数学体系(转载)
原文网址:http://www.guokr.com/post/442622/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什么要深入数学 ...
随机推荐
- centos7 NAT链接配置(静态ip/修改网卡名为eth0)|1
NAT的静态ip设置并且修改网卡名为eth0 1 cd /etc/sysconfig/network-scripts/ mv eno16777736 ifcfg-eth0 #修改名称 vi eth0 ...
- [转] [腾讯游戏学院] Roguelike到底是什么?
如果你是一位资深游戏玩家,那么最近你肯定在哪里看到过 Roguelike 这个词.Roguelike 这个古老的游戏类型现在又变得很潮流,其中各种要素都在不断的被新游戏借鉴.作为一名就是比你有更多空余 ...
- AJ学IOS 之BLOCK的妙用_利用block实现链式编程
AJ分享,必须精品 一:场景 我们有个对象人,他有两个方法,一个是学习study,一个是跑步run, 这个人有个怪癖,跑完步之后必须学习,为了实现这个方法并且能调用方便,我们让跑步和学习都回返回自己这 ...
- c++学习day01基础知识学习
一.代码示例解析: #include <iostream> int main() { using namespace std; cout << "come up an ...
- 官方解读:Salesforce线上考试新政与福利
随着疫情在世界范围内的迅速蔓延,Salesforce推出了一系列的线上认证考试改进方案,方便Salesforce从业者在疫情阶段也能够安全.便利地参与考试,今天让我们一起来捋一捋那些,和我们密切相关的 ...
- C - Infinite Fence -1260C
考虑区间长度,我们让r和b除以他们的__gcd这样,这样得到的r和b是互质或者相等的.我们取他们两个小的那个.假设是b.那么被涂的方块应该是b,2b,3b,4b,....kb. 相邻的两个方块之间的区 ...
- vs 基础
1 写入 读取: 1) 写入:Console.Write("hello china") 光标紧跟 ...
- testlink的api
testlink可以做很多你想象得到的事情,如API测试参数管理,Excel导入导出,快速模板创建测试用例,集成Jenkins. TestLink API第三方库: TestLink-API-Pyth ...
- 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化
Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...
- Laravel 5.7 RCE (CVE-2019-9081)
Laravel 代码审计 环境搭建 Laravel 5.7 文档 : https://learnku.com/docs/laravel/5.7/installation/2242 Composer 下 ...