I. Interesting Permutation(思维)

I. Interesting Permutation

题意

给你一个数字n,然后有一个长度为n的数列,这个数列的第 i 项值时某个数列的前 i 项的最大值减去最小值的到的结果,问你用着n个数字能构造出来多少种长度为n的数列。

解题思路

不成立的情况就不总结了。直接说怎么构造可行解吧。
如果某一项和前一项不相等,那么我们就可以在数量上乘以2,然后记录差值-1,如果相等的话就用前面累计的差值乘以ans,差值和减一,为什么这样可以呢?因为如果这个值和前面的不等说明,该位置的数值可以是前 i 个数的最大值,也可以是最小值,如果相等,那么我们已经让第一次出现的是最值了我们要插入的数,肯定是不能对该结果没影响的,所以就是之前差值和中的任意一个就可以。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mx=2000200;
const ll mod=1000000007;
ll a[mx];

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值