(dp)17bupt新生赛——B. Hmz 的女装

Posted 惜取少年时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(dp)17bupt新生赛——B. Hmz 的女装相关的知识,希望对你有一定的参考价值。

时间限制 1000 ms 内存限制 65536 KB

题目描述

Hmz为了女装,想给自己做一个长度为n的花环。现在有k种花可以选取,且花环上相邻花的种类不能相同。
Hmz想知道,如果他要求第l朵花和第r朵花颜色相同,做花环的方案数是多少。这个答案可能会很大,你只要输出答案对109+7取模的结果即可。

输入格式

第一行三个整数n,m,k(1n100000,1m100000,1k100000)
接下来m行,每行两个整数l,r,表示要求第l朵花和第r朵花颜色相同。保证lr |(r?l) mod n| 1.

输出格式

输出m行。对于每一个询问输出一个整数,表示做花环的方案数对109+7取模的结果。

输入样例

8 3 2
1 4
2 6
1 3
8 3 3
1 4
2 6
1 3

输出样例

0
2
2
60
108
132

比赛时真该做这个……非常水的递推
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <cstring>
 7 #include <string>
 8 #include <vector>
 9 #include <map>
10 #include <queue>
11 using namespace std;
12 typedef long long LL;
13 const LL MOD=1e9+7;
14 const int MAX=1e5+7;
15 int n,m,k;
16 LL a[MAX];
17 LL x;
18 LL an;
19 int l,r;
20 int main()
21 {
22     scanf("%d%d%d",&n,&m,&k);
23     a[0]=0;
24     x=1;
25     for(int i=1;i<=n;i++)
26     {
27         x=x*(LL)(k-1)%MOD;
28 //        printf("%d\n",x);
29         a[i]=(x-a[i-1]+MOD)%MOD;
30     }
31     while(m--)
32     {
33         scanf("%d%d",&l,&r);
34         an=k*a[abs(r-l)-1]%MOD*a[n-(abs(r-l)+1)]%MOD;
35         printf("%lld\n",an);
36     }
37     return 0;
38 }

 

 

以上是关于(dp)17bupt新生赛——B. Hmz 的女装的主要内容,如果未能解决你的问题,请参考以下文章

河工大校赛 Hmz 的女装 http://218.28.220.249:50015/JudgeOnline/problem.php?id=1265

篮球校赛(状压dp)

"新生赛"长沙理工大学程序设计竞赛

HDU 17新生赛 身份证验证模拟

四川大学2021SCUACM新生赛决赛大部分题解(差分dp线段树……)

HDU 17新生赛 正品的概率数论-概率论