DP BestCoder Round #50 (div.2) 1003 The mook jong

题目传送门

 1 /*
 2     DP:这题赤裸裸的dp,dp[i][1/0]表示第i块板放木桩和不放木桩的方案数。状态转移方程:
 3         dp[i][1] = dp[i-3][1] + dp[i-3][0] + 1; dp[i][0] = dp[i-1][1] + dp[i-1][0];
 4         比赛时二维dp写搓了,主要是边界情况的判断出错,比如dp[3][1] = 1,因为第3块放了木桩,其他地方不能再放,dp[3][0]同理
 5         解释一下dp[i][1]的三种情况,可能是前面相隔2个放的方案或者是不放的方案,还有唯独在第i块放的方案(1)
 6         比赛时瞄了一下样例,感觉有规律,就写出了dp[i] = dp[i-3] + dp[i-1] + 1;(dp[1] = 1;  dp[2] = 2;  dp[3] = 3;)其实都一样
 7 */
 8 /************************************************
 9 * Author        :Running_Time
10 * Created Time  :2015-8-9 8:48:32
11 * File Name     :C_2.cpp
12  ************************************************/
13
14 #include <cstdio>
15 #include <iostream>
16 #include <algorithm>
17 #include <cstring>
18 #include <string>
19 #include <vector>
20 #include <map>
21 #include <set>
22 #include <queue>
23 #include <cmath>
24 #include <ctime>
25 #include <cstdlib>
26 #include <list>
27
28 #define lson l, mid, rt << 1
29 #define rson mid + 1, r, rt << 1 | 1
30 typedef long long ll;
31 const int MAXN = 66;
32 const int INF = 0x3f3f3f3f;
33 const int MOD = 1e9 + 7;
34 ll dp[MAXN][2];
35
36 void solve(void)    {
37     dp[1][1] = 1;   dp[1][0] = 0;
38     dp[2][1] = 1;   dp[2][0] = 1;
39     dp[3][1] = 1;   dp[3][0] = 2;
40     for (int i=4; i<=60; ++i)   {
41         dp[i][1] = dp[i-3][1] + dp[i-3][0] + 1;
42         dp[i][0] = dp[i-1][1] + dp[i-1][0];
43     }
44 }
45
46 int main(void)    {     //BestCoder Round #50 (div.2) 1003 The mook jong
47     solve ();
48     int n;
49     while (scanf ("%d", &n) == 1)   {
50         printf ("%I64d\n", dp[n][0] + dp[n][1]);
51     }
52
53     return 0;
54 }
时间: 2024-10-13 07:05:01

DP BestCoder Round #50 (div.2) 1003 The mook jong的相关文章

BestCoder Round #50 (div.2)

题目传送:BestCoder Round #50 (div.2) BC感觉越做越无语了 1001.Distribution money AC代码: #include <map> #include <set> #include <list> #include <cmath> #include <deque> #include <queue> #include <stack> #include <bitset> #

计算几何(水)BestCoder Round #50 (div.2) 1002 Run

题目传送门 1 /* 2 好吧,我不是地球人,这题只要判断正方形就行了,正三角形和正五边形和正六边形都不可能(点是整数). 3 但是,如果不是整数,那么该怎么做呢?是否就此开启计算几何专题了呢 4 */ 5 /************************************************ 6 * Author :Running_Time 7 * Created Time :2015-8-8 19:54:14 8 * File Name :B.cpp 9 ************

BestCoder Round #50 (div.2) HDU 5365 Run(简单几何)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5365 题面:(严重吐槽,看着真不舒服,还是改一下吧) Run Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 549    Accepted Submission(s): 245 Problem Description AFA is a g

ACM学习历程—HDU5587 Array(数学 &amp;&amp; 二分 &amp;&amp; 记忆化 || 数位DP)(BestCoder Round #64 (div.2) 1003)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5587 题目大意就是初始有一个1,然后每次操作都是先在序列后面添加一个0,然后把原序列添加到0后面,然后从0到末尾,每一个都加上1. 例如:a0, a1, a2 => a0, a1, a2, 1, a0+1, a1+1, a2+1 题解中是这么说的:“ 其实Ai为i二进制中1的个数.每次变化A{k+2^i}=A{k}+1,(k<2^?i??)不产生进位,二进制1的个数加1.然后数位dp统计前m个数二

BestCoder Round #50 (div.1) 1001 Distribution money (HDU OJ 5364)

题目:Click here 题意:bestcoder上面有中文题目 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include <string> 7 #include <climits> 8 #include <vector> 9 #incl

HDU5638 / BestCoder Round #74 (div.1) 1003 Toposort 线段树+拓扑排序

Toposort 问题描述 给出nn个点mm条边的有向无环图. 要求删掉恰好kk条边使得字典序最小的拓扑序列尽可能小. 输入描述 输入包含多组数据. 第一行有一个整数TT, 表示测试数据组数. 对于每组数据: 第一行包含3个整数nn, mm和kk (1 \le n \le 100000, 0 \le k \le m \le 200000)(1≤n≤100000,0≤k≤m≤200000), 表示图中结点数目, 图中边的数目以及要删的边数. 接下来mm行, 每行包含两个整数u_iu?i?? and

哈密顿图 BestCoder Round #53 (div.2) 1003 Rikka with Graph II

题目传送门 题意:判断是否为哈密顿图 分析:首先一种情况是不合法的:也就是度数为1的点超过2个:合法的有:,那么从度数为1的点开始深搜,如果存在一种走法能够走完n个点那么存在哈密顿路 收获:学习资料 代码: /************************************************ * Author :Running_Time * Created Time :2015-8-29 20:37:34 * File Name :C.cpp *******************

BestCoder Round #50 (div.1) 1002 Run (HDU OJ 5365) 暴力枚举+正多边形判定

题目:Click here 题意:给你n个点,有多少个正多边形(3,4,5,6). 分析:整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正四边形即可. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #define power(x) ((x)*(x))

hdu 5366 (bc #50 1003) The mook jong

The mook jong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 269    Accepted Submission(s): 205 Problem Description ![](../../data/images/C613-1001-1.jpg) ZJiaQ want to become a strong man, so