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安装jmeter + ant
1.xshell链接上centos7服务器 先安装jmeter 使用wget jmeter-xxxxxxxxxxxx进行联网自动下载(先进入jmeter官网,然后找到要下载的.tgz压缩包,然后右键 ...
- 科技发展时间线(Technology Timeline)
本文主要记录,过去两百年间,科技发展的时间线 这些内容,是自己在学习电脑发展历史的时候做的, 感兴趣的同学,可以复制到 Excel 里面,按顺序逐一进行学习, 学习和整理的过程确实花了很长时间,但是并 ...
- 逻辑对象中时间类型 保存时 隐藏bug
开发功能中的一些逻辑对象中的一些时间 属性,在保存数据库时有一个隐藏的bug,假如 我vo属性定义的就是date 类型,那我定时保存数据库时可能就会出错,eq:假如这个属性隔天要重置一些东西,表中这个 ...
- Github star 1.7k 的项目源码解析
先拜读源码,最后总结,以及其他实现思路.如有错误,欢迎指正! 项目介绍 名称:Darkmode.js 功能:给你的网站添加暗色模式 项目链接:https://github.com/sandoche/D ...
- FormCloseQuery
FormCloseQuery是一个事件回调函数,Close是一个功能函数.而FormCloseQuery与窗口的close有什么不同,通过跟踪Call stack发生在调用Close()函数关闭窗口时 ...
- Des对称可逆加密
/// <summary> /// DES AES Blowfish /// 对称加密算法的优点是速度快, /// 缺点是密钥管理不方便,要求共享密钥. /// 可逆对称加密 密钥长 ...
- DataTable运用
DataTable dataDis.AsEnumerable().Sum(bu => bu["QtyPlan"].ConvertInt32()); ndata.TDefSty ...
- python字符串 提取括号中的内容
返回值是一个列表 re.findall(r'[(](.*?)[)]', str1)
- C# 9 新特性:代码生成器、编译时反射
前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了. 简介 Source Generators 顾名 ...
- http 之 CORS简介
什么是CORS? CORS:跨域资源共享.是一种机制. 用处? 它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定 ...