Codeforces 474D Flowers】的更多相关文章

话说好久没写算法代码了,工作了有点忙的了.只是算法始终是我的挚爱,故此还是尽量抽时间和挚爱来个约会. Codeforces的题目是最适合练手的了,以下是一道不算难的动态规划法题目.先上题: D. Flowers time limit per test1.5 seconds memory limit per test256 megabytes inputstandard input outputstandard output We saw the little game Marmot made f…
D. Flowers time limit per test:1.5 seconds memory limit per test:256 megabytes We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all know, Marmot eats flowers. At every dinner he eats some red and white flo…
题目链接:http://codeforces.com/problemset/problem/474/D 题目意思:Marmot 吃两种类型的花(实在难以置信呀--):red 或者 white,如果要吃到white这种花,就需要吃连续 k 朵 white:而如果吃 red,就没有这种限制.给定区间[a, b],问总共的吃法有多少种. dp 题!状态转移方程不难得到.设 dp[i] 表示 长度为 i 时 的吃法种数. dp[i] = dp[i-1] + dp[i-k] 对于当前 i,或者是从第 i-…
http://codeforces.com/problemset/problem/474/D 思路:F[i]=F[i-1]+(i>=K)F[i-k] #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<iostream> ; ],f[]; int read(){ ,f=;char ch=getchar(); ;ch=getchar()…
https://codeforces.com/problemset/problem/474/D 这道题挺好的,思路是这样. 我们要找一个01串,其中0的段要被划分为若干个连续k的0. 我们设想一个长度为n的合法串是怎么被构造出来的,要么是上一个合法串后面直接连接1,要么是上一个合法串后面连接k个连续的0,那么每个0一一对应于一段连续的0. 所以dp[i]=dp[i-1]+dp[i-k]. 想出来就觉得不难了. #include<bits/stdc++.h> using namespace st…
题目链接 非常简单的一道dp题,通过O(n)的预处理来使查询变为O(1). 主要的坑在于取模后的dp数组的前缀和再相减可能得到负数,导致无法得到某一区间和的取模. 解决方法:(a-b)%mo==(a%mo+mo-b%mo)%mo,由于该等式的存在,可以使用取模后的前缀和做运算得到某一区间和的取模. 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #inclu…
题目链接:点击打开链接 思路: 给定T k表示T组測试数据 每组case [l,r] 有2种物品a b.b物品必须k个连续出现 问摆成一排后物品长度在[l,r]之间的方法数 思路: dp[i] = dp[i-1]+dp[i-k]; #include <iostream> #include <cmath> #include <algorithm> #include <cstdio> #include <cstring> #include <v…
[链接] 我是链接,点我呀:) [题意] 让你吃东西 B食物一次必须要吃连续k个 但是对A食物没有要求 问你有多少种吃n个食物的方法(吃的序列) [题解] 设f[i]表示长度为i的吃的序列且符合要求的方法 有两种转移方法 一种是吃一个A食物 一种是吃k个食物 f[i] = f[i-1]+f[i-k] f[0] = 1 然后做一个前缀和输出区间和就好 [代码] import java.io.*; import java.util.*; public class Main { static Inpu…
题目:https://vjudge.net/contest/326867#problem/B 题意:有很多个蛋糕,现在你有两种吃蛋糕的吃法,一次吃一个,定为A,一次吃k个定为B,然后问你吃m个蛋糕有多少种方法,每次询问一个区间的和 思路:这个很容易看出来是一个DP,我们可以dp[i]=dp[i-1]+dp[i-k] 代表当前我放A还是放B,然后一次询问一个区间的话我们直接求一个前缀和即可 #include<bits/stdc++.h> #define maxn 100005 #define m…
Flowers CodeForces - 474D 话说某个幸运的小伙伴X拿到了kevin女神送的蛋糕,然而他的吃法非常奇特,他独创了两种吃蛋糕的办法:一.一次吃一整个蛋糕:二.一次吃k个蛋糕. 那么,当蛋糕数量为x1到x2之间时,一共能有几种不同的吃法呢? 由于答案很大,输出结果mod 1000000007的值 Input 第一行有两个正整数t,k(1<=t,k<=100000) ,其中t表示数据的组数. 接下来t行,每行两个数x1, x2(1<=x1<=x2<=10000…