2321 问题 E: [传智杯]课程安排

时间限制: 1s 内存限制: 128MB 提交: 102 解决: 6
题目描述

传智播客的课表上按顺序提供 n 节课程,课程可能是 Java、Python 或者前端开发等等,我们用不超过 n 的正数代表每一节课程的种类。学员可以从这个课程序列选取连续的一小段的课程序列,作为一周的学习任务。

为了使学习任务不那么枯燥,学员不想连续上两节相同的课。特殊的,这一周学习任务的开头和结尾也不能是相同的课。为了保证学习效果,一周内至少要学完 l 节课程。

请问,我们有多少种合法的选课方案?

两种选课方案,只要选取的课程序列在原序列的开头和结尾有至少一个位置不一致,那么就可以认为是不同的选课方案。注意,即使 l 是 1,一周只安排一次课也是不合法的,至少需要安排 2 次课。

输入

每个测试点由多组数据组成。

第一行为一个整数 T,代表数据的组数。

对于每组数据,第一行输入两个正整数 n 和 l。接下来一行输入 n 个非负整数 c_i 表示课程种类编号。

输出
对于每组数据,输出一行一个数,表示方案数。
样例输入
2
3 1
1 2 3
5 3
1 2 3 1 1
样例输出
3
2
提示

对于第一组数据,有 [1,2] 和 [2,3] 和 [1,2,3] 三种方法。

对于第二组数据,由于至少要选 3 门课,只有 [1,2,3] 和 [2,3,1] 两种方法。

比赛公告

比赛前十名将获得又传智官方提供的书籍奖励

 大家可以登录http://www.ityxb.com/originalBook/Java随意选择,私信书名+地址给验题君,否则随机发哦!

比赛结束后,博客发布传智杯完整题目题解的同学将赠送程序员小罐茶一份,限定三个名额!


PS:请大家务必完善个人联系信息用于收奖品哦