C语言POJ的一个题目算法没看懂,求帮忙。。。

题目大意:1..n的一个排列{An}被称作完美排列,等价于数列{|Ai-i|}是0..n-1的一个排列。对于指定的n≤1000,给出一个完美排列或者输出0表示不存在1..... 题目大意:1..n的一个排列{An}被称作完美排列,等价于数列{|Ai - i|}是0..n-1的一个排列。对于指定的n≤1000,给出一个完美排列或者输出0表示不存在1..n的完美排列。 这个MS是罗马尼亚数学竞赛的题…… 如果作为ACM问题的话最合适的做法是搜小数据然后找规律 >_< 不过这显然不是我们研究科学问题的态度……下面给出一个带证明的做法。 首先我们证明,当且仅当n ≡ 0, 1 (mod 4)的时候存在1..n的完美排列。 首先,由于{|Ai - i|}是0..n-1的一个排列,所以∑|Ai - i| = n(n-1)/2。 同时,∑|Ai - i| ≡ ∑(Ai - i) = ∑Ai - ∑i = 0 (mod 2)。 故n(n - 1)/2 ≡ 0 (mod 2)。这样就得到n ≡ 0, 1 (mod 4)。 下面我们构造满足题意的解: 我们把排列看做置换。 n ≡ 0 (mod 4) 的时候,一个可行的置换是轮换(1, n, 2, n - 1, 3, n - 2, ..., n/4, 3n/4 + 1, n/4 + 1, 3n/4 - 1, ..., n/2 - 1, n/2 + 1, n/2)。 3n/4 为这个置换的唯一不动点。 n ≡ 1 (mod 4) 的时候,设s = n - 1,一个可行的置换是轮换(1, n, 2, n - 1, 3, n - 2, ..., s/4, 3s/4 + 2, s/4 + 1, 3s/4, s/4 + 2, 3s/4 - 1, ..., s/2, s/2 + 1)。 而3s / 4 + 1为这个置换的唯一不动点。 这就证明完毕。于是这个题也就解决了。 代码就不贴了。 当且仅当n ≡ 0, 1 (mod 4)是什么意思啊 整个算法有谁还能简单地解释下呢 证明的第三行开始都不懂了 展开
 我来答
首畅郎凌雪
2020-01-25 · TA获得超过3513个赞
知道大有可为答主
回答量:3072
采纳率:32%
帮助的人:214万
展开全部
≡这个是恒等于的意思,n

0
(mod
4),所以这句话的意思是n除以4余0,mod是取模运算,n关于4取模,也就是求n除以4的余数,另一句同理。
下面分类讨论了两种情况,得出了不动点,即经过映射后,是自身的点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
--
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有... 点击进入详情页
本回答由--提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式