hdu4504基础dp,二维

来源:互联网 发布:三星清零软件 编辑:程序博客网 时间:2024/05/18 20:12
/*****************************************Author      :Crazy_AC(JamesQi)Time        :2015File Name   :思路:定义一个二维的dp[i][j]数组就好了,*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;#define MEM(a,b) memset(a,b,sizeof a)#define pk push_backtemplate<class T> inline T Get_Max(const T&a,const T&b){return a < b?b:a;}template<class T> inline T Get_Min(const T&a,const T&b){return a < b?a:b;}typedef long long ll;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int A,B,t;ll dp[24][77];inline void Init(){MEM(dp, 0);dp[1][1] = dp[1][2] = dp[1][3] = 1;for (int i = 1;i <= 20;i++){for (int j = 1;j <= 60;j++){if (j > 1) dp[i][j] += dp[i - 1][j - 1];if (j > 2) dp[i][j] += dp[i - 1][j - 2];if (j > 3) dp[i][j] += dp[i - 1][j - 3];}}}int main(){// ios::sync_with_stdio(false);// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);Init();while(~scanf("%d%d%d",&A,&B,&t)){int b_num = (t / 15);int a_num = (t / 15 + 1) / 2;if (a_num == 0){if (A > B) printf("1\n");else printf("0\n");continue;}B += b_num - a_num;int tmp = (B - A) + 1;if (tmp < 0) tmp = 0;ll ans = 0;for (int i = tmp;i <= a_num * 3;i++){ans += dp[a_num][i];// cout << ans << endl;}printf("%lld\n",ans);}return 0;}

0 0