zoukankan      html  css  js  c++  java
  • (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 |(rl) 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
    ",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
    ",an);
    36     }
    37     return 0;
    38 }
     
  • 相关阅读:
    MongoDB 部署复制集(副本集)
    MongoDB shell 2 副本集方法
    MongoDB shell 1 数据库方法
    MongoDB shell 0 集合方法
    CentOS7 安装 zabbix
    MongoDB Shell db.runCommand
    MongoDB Index
    MongoDB 启动报错
    MongoDB 聚合查询报错
    MongoDB 聚合函数
  • 原文地址:https://www.cnblogs.com/quintessence/p/6567346.html
Copyright © 2011-2022 走看看