求助!站外题
查看原帖
求助!站外题
1056038
1sto_TallNut_orz1楼主2023/10/6 19:07

题目描述 波奇是一个社恐的人,她会选择一个较为亲近的人靠近,假设有一列波奇,她们自身有一个“亲近值”且以相同且恒定的速度移动,每个波奇都会向与自己”亲近值“相近的波奇靠近,直到她遇到另一个波奇为止,如果有多个相近的波奇,她会向左边的波奇移动(即 1,2,3时,第二个波奇会向第一个波奇移动)。两个波奇相遇后停止移动。 经过足够长的时间,每个波奇都停止移动,结果就是产生几个波奇堆。要求计算每个至少有两个波奇的给定n个波奇的子集所产生的波奇堆的个数。由于结果可能非常大,将结果对10^9+7取模后输出。 输入 第一行包含一个整数n(2≤n≤3000)。 接下来一行包含n个整数由小到大的x1,x2,…,xn(1≤x1<x2<…<xn≤10^9),其中xi表示第i个波奇的亲近值。 输出 输出结果之和对10^9+7取模后的值。 样例输入 Copy 【输入样例1】 4 2 5 7 9 【输入样例2】 5 2 4 6 12 16 样例输出 Copy 【输出样例1】 11 【输出样例2】 30 提示 【样例说明】 样例 2 中子序列大小为 2 时贡献为 10(两波奇必定会相互吸引形成堆),子序列大小为 3 时贡献为 10(两波奇成堆后第三个波奇必定会加入),子序列大小为 4 时有 2,4,12,16 会产生 2 个堆(因为 4 往左移和 2 生成堆并停止移动,12 往右移和 16 产生堆并停止移动)同理 2,6,12,16 和 4,6,12,16 也会产生 2 个堆,则的子序列大小为 4 时总贡献为 8,子序列大小为 5 时贡献为 2(2,4,6 一堆,12 和 16 一堆)则总贡献为 30

2023/10/6 19:07
加载中...