摄影网站建设的论文,怎么做网站何做网站,nginx wordpress 固定链接,网站建设的技术风险分析与规避在一个排列中#xff0c;一个折点是指排列中的一个元素#xff0c;它同时小于两边的元素#xff0c;或者同时大于两边的元素。
对于一个 1∼n 的排列#xff0c;如果可以将这个排列中包含 t个折点#xff0c;则它称为一个 t1 单调序列。
例如#xff0c;排列 (1,4,2,3)…在一个排列中一个折点是指排列中的一个元素它同时小于两边的元素或者同时大于两边的元素。
对于一个 1∼n 的排列如果可以将这个排列中包含 t个折点则它称为一个 t1 单调序列。
例如排列 (1,4,2,3) 是一个 3 单调序列其中 4 和 2 都是折点。
给定 n 和 k请问 1∼n 的所有排列中有多少个 k 单调队列
输入格式
输入一行包含两个整数 n,k。
输出格式
输出一个整数表示答案。
答案可能很大你可需要输出满足条件的排列数量除以 123456 的余数即可。
数据范围
1≤k≤n≤5001≤k≤n≤500
输入样例
4 2输出样例
12代码如下
#include iostream
#include algorithm
using namespace std;
const int N 1001;
int a[N];
int n, k;void init() {for (int i 1; i n; i)a[i] i;
}int main() {cin n k;init();int ans 0;do {int cnt 0;for (int i 2; i n - 1; i) {if (a[i] a[i - 1] a[i] a[i 1] ||a[i] a[i - 1] a[i] a[i 1])cnt;}if (cnt 1 k)ans;} while (next_permutation(a 1, a 1 n));cout ans%123456 endl;return 0;
}