首页 > 试题广场 >

牛牛排队

[编程题]牛牛排队
  • 热度指数:2064 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛和他的小伙伴一共n个人参加冬令营,他们的教官要求他们排成一排,每个人都有固定的位置,但是牛牛和他的小伙伴有些马虎,所以总是不记得他们到底站在哪个位置,但是他们记得之前站在他们左部分和站在他们右部分的人的人数差的绝对值a_i,根据这些值,牛牛想知道他们到底有多少种不同的站法?(结果需要对1e9+7取模)
示例1

输入

3,[2,0,2]

输出

2

说明

可能的站法(1 2 3), (3 2 1) 
示例2

输入

3,[1,1,1]

输出

0

说明

不存在这样的站法 

备注:
其中1<=n<=1000000, 0<=a_i<=1000000
头像 诗云panther
发表于 2021-08-16 13:17:46
/** struct Point { int x; int y; Point(int xx, int yy) : x(xx), y(yy) {} }; /class Solution {public: /** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 能回到1号 展开全文
头像 Peterliang
发表于 2021-09-19 23:53:07
题目意思 给出每个编号的左右两边的差的绝对值,然后我们需要找出所有的满足题目条件的排列的情况数。 思路分析 我们发现,对于一个序列,只要位置是固定的,那么它的左右两边的差值也是固定的,与这个位置的是哪个数字其实是没有关系的。所以其实数组里面的数字的都是固定了的。我们只需要判断这个序列是否合法 展开全文
头像 球球了给孩子一个offer吧
发表于 2021-08-24 18:42:19
题目:n个人排成一队,对于每个人来说。他左部分和右部分的人数差的绝对值是不变的,则对于a数组有多少种排队的方法 方法一:排序+迭代求幂 对于一个a数组,当调换第一个和最后一个,第二个和倒数第二个...的时候,被调换位置的人左右部分人数差的绝对值不变,即a数组不变,因为调换一次产生2种队列,可以调换 展开全文
头像 xqxls
发表于 2021-08-22 19:57:43
题意整理 n个人在排队,它们的位置可能被打乱了,有一个数组记录了一些信息。 数组中对应的那个人,记录着站在他左部分和站在他右部分的人的人数差的绝对值。 根据上面的信息,求他们可能的站法有多少种。 方法一(排序) 1.解题思路 如果有两个人,a数组只能是[1,1],如果有三个人a数组只能是[2,0 展开全文
头像 摸鱼学大师
发表于 2021-08-25 17:11:25
思路: 题目的主要信息: 数组a表示n个人,记忆的他们原来的位置左边人数减去右边人数的绝对值 求原来有多少种排法 我们可以发现一个人的时候,,两个人的时候,,三个人的时候,,四个人的时候,或者其打乱了顺序,我们可以根据数学归纳法判断,若是为奇数,则数组a排序后应为,若是为偶数,则数组a排序后应为 展开全文
头像 开车的阿Q
发表于 2021-09-14 22:15:24
描述 这是一篇面对初级coder的题解。 知识点:数学 排序 快速幂 难度:二星 题解 题目: 一共n个人,已知之前站在他们左部分和站在他们右部分的人的人数差的绝对值,求有多少种不同的站法?(结果需要对1e9+7取模) 分析: 本题的关键在于判断队列是否存在,不难发现,站在他左部 展开全文

问题信息

难度:
7条回答 6149浏览

热门推荐

通过挑战的用户

查看代码