zoukankan      html  css  js  c++  java
  • codeforce474D_组合

    题目链接:http://codeforces.com/contest/474/problem/D

    题目大意:用RW组成字符串,要求w的个数要k个连续出现,R任意,问字符串长度为[a, b]时,字符串的种类有多少

    思路:dp[i] = dp[i - 1] + dp[i - k]

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 #define LL long long
     6 using namespace std;
     7 
     8 const int N = 1e5;
     9 const int mod = 1e9 + 7;
    10 LL num[N + 10], abc[N + 10];
    11 int t, k, a, b;
    12 void find()
    13 {
    14     for(int i = 1; i < k; i++)
    15         num[i] = 1;
    16     num[0] = 0;
    17     num[k] = 2;
    18     for(int i = k + 1; i <= N; i++)
    19         num[i] = (num[i - 1] + num[i - k]) % mod;//num[i]表示长度为i时的种类有多少
    20     abc[0] = 0;
    21     for(int i = 1; i <= N; i++)
    22         abc[i] = (abc[i - 1] + num[i]) % mod;//长度为[1, i]时的种数
    23 }
    24 int main()
    25 {
    26     scanf("%d %d", &t, &k);
    27     find();
    28     while(t--)
    29     {
    30         scanf("%d %d", &a, &b);
    31         LL res = (abc[b] - abc[a - 1]) % mod;
    32         if(res < 0)
    33             res = res + mod;
    34         printf("%I64d
    ", res);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    总结的反爬虫手段(持续更新)
    爬虫类编程笔记导航
    技术开发流程小公司
    敏捷开发学习笔记(一)
    .NET Framework各版本比较
    linux shell 之 cut
    Hive insert overwrite 出现错误解决方法
    hive join
    linux shell 之 grep
    hive实现not in
  • 原文地址:https://www.cnblogs.com/luomi/p/5540641.html
Copyright © 2011-2022 走看看