Wpp


私信TA

用户名:AbertW

访问量:3856

签 名:

等  级
排  名 815
经  验 3481
参赛次数 1
文章发表 8
年  龄 0
在职情况 学生
学  校 北京工商大学
专  业

  自我简介:

解题思路:观察摆动数列

    微信图片_20210216103501.jpg

    实际上就是将一个有序数列从中位数分成两半,将中位数左侧数字从大到小一次插入右侧数字间隔。(或者相反)

    所以随便从1,...,k中选择[2,k]个数字都能组成两种摆动序列。问题的解为组合问题:从k挑[2,k]个数字,每种组合都能组成两种波动序列。

    即2^k - k - 1 (去掉选择0个或1个数字的组合数)


参考代码:

#include<stdio.h>

int main()
{
	int k;
	scanf("%d",&k);
	int res = ((1<<k)-k-1)*2;
	printf("%d\n",res);
	return 0;
}


 

0.0分

4 人评分

  评论区

大佬!!
2021-04-13 23:11:52
  • «
  • 1
  • »