EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔)比昨天更多的棒棒糖 (Easy)
2017-12-08 22:15
274 查看
3448. 比昨天更多的棒棒糖 (Easy)
DESCRIPTIONSUBMITSTATISTICSDISCUSSIONTime limit per test: 2.0 seconds
Memory limit: 512 megabytes
唐纳德先生的某女性朋友最近与唐纳德先生同居。该女性朋友携带一 baby。该 baby 酷爱吃棒棒糖,且有一个奇怪的特性:今天吃的棒棒糖一定要比昨天的棒棒糖更多,至少要一样多。如果棒棒糖少了,baby 就会很不高兴;另外如果有连续 k 天棒棒糖的数量都是一样的,baby
也会很不高兴。
唐纳德先生发现他的口袋里只有可怜的 n 元钱,他可以用 1 元钱买 1 根棒棒糖。他想用这些钱逗
baby 开心,这些钱可以不花完。他可以从某一天开始再也不买棒棒糖,把他的女性朋友和 baby 一起送回家;但是他绝对不能让 baby 不高兴,否则他的女性朋友可能对他做一些不和谐的事情。
唐纳德先生想要知道,他总共有多少种买棒棒糖的方案,两种方案不相同当且仅当总天数不相同,或者某一天买的棒棒糖数量不相同。唐纳德先生知道这个问题对于聪明的你实在是太简单了,所以他加了一个附加条件:他第一天必须买棒棒糖,而且至少买 x 根棒棒糖。
Input
一行三个整数 n,x,k。数据范围约定:
对于 Easy 档:1≤n,x≤100,2≤k≤100。
对于 Hard 档:1≤n,x≤104,2≤k≤104。
Output
输出答案模 998 244 353。
Examples
input3 1 2
output
4
input
1 1 2
output
1
input
4 2 3
output
4
Note
样例 1:有四种方案:
第一天 1;
第一天 2;
第一天 3;
第一天 1,第二天 2;
注意第一天和第二天都买 1 是不行的,因为连续两天棒棒糖数量一样,baby 就会很不高兴。
#include <bits/stdc++.h>
using namespace std;
#define modo 998244353
long long dp[101][101][101];
int main(){
int n, x, k;
cin>>n>>x>>k;
long long ans = 0;
memset(dp, 0, sizeof(dp));
for(int i = x; i <= n; ++i){
dp[i][i][1] = 1;
ans++;
for(int j = x; j < i; ++j){
for(int l = x; l < j; ++l){
for(int z = 1; z <= k; ++z){
dp[i][j][1] += dp[i - j][l][z];
dp[i][j][1] %= modo;
}
}
ans += dp[i][j][1];
ans %= modo;
for(int z = 2; z < k; ++z){
dp[i][j][z] += dp[i - j][j][z - 1];
dp[i][j][z] %= modo;
ans += dp[i][j][z];
ans %= modo;
}
}
}
cout<<ans<<endl;
}
/*
题意:
一共n元,每天需要买糖果给宝宝吃,且至少大于等于前一天的量,第一天最少为x,问有多少种购买方案。
思路:
说实话。。。写一个n^4方dp感觉很丢人。。dp[i][j][k]表示花了i元,当天花j元,这是k天花了j元时有多少种方案。
转移似乎很简单。。。结束。。
*/
相关文章推荐
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔)G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- (substr strstr 的学习) EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) G1. 唐纳德与子串 (Easy)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) C. 易位构词(贪心)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) B题
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) 在哈尔滨的寒风中 (棋盘跳马对数)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) B. 在哈尔滨的寒风中【思维枚举】
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔)B. 在哈尔滨的寒风中 (xjbg)
- EOJ Monthly 2017.12 (暨 ECNU 12 月内部选拔) A. 唐纳德先生和假骰子