原题链接

这是我自己Clone的专题,A,B题解昨天发过了

C:参考代码:

  1. /*
  2. 很容易我们可以手推出n = 1, 2, 3时的情况,我们假设前n - 1
  3. 列已经放好,方法有dp[n - 1]种,第n列很显然有1种方法,那我
  4. 再假设前n - 2列已经放好,方法有dp[n - 2]种,此时我们知道
  5. 第n - 1和第n列肯定是横着放的,如果他们竖着放就和前n - 1列
  6. 放好的情况相同,所以我们可以推出方程dp[n] = dp[n - 1] + dp[n - 2];
  7. */
  8. #include <cstdio>
  9. using namespace std;
  10.  
  11. typedef long long int ll;
  12. const int maxn = + ;
  13. int n;
  14. ll dp[maxn];
  15.  
  16. int main() {
  17. dp[] = ;
  18. dp[] = ;
  19. dp[] = ;
  20. for(int i = ; i <= maxn; i ++) {
  21. dp[i] = dp[i - ] + dp[i - ];
  22. }
  23. while(~scanf("%d", &n)) {
  24. printf("%lld\n", dp[n]);
  25. }
  26. return ;
  27. }

D:参考代码:

  1. /*
  2. 解题思路:还是一如既往的递推...这个题和涂格子的那个题目很像
  3. 很容易我们可以手推出n = 1, 2, 3的情况,对于第n个格子,我
  4. 们假设前n - 1个格子已经涂好了,那么我们知道如果第n - 1个格子
  5. 是O,那么我们第n个格子有两种涂法,如果不是O,我们第n个格子有
  6. 三种涂法,对于第n - 1个格子,我们可以看第n - 2个格子,如果
  7. 第n - 2个格子
  8. */
  9. #include <cstdio>
  10. using namespace std;
  11.  
  12. typedef long long int ll;
  13. const int maxn = + ;
  14. int n;
  15. ll dp[maxn];
  16.  
  17. int main() {
  18. dp[] = ;
  19. dp[] = ;
  20. dp[] = ;
  21. for(int i = ; i <= maxn; i ++) {
  22. dp[i] = * (dp[i - ] + dp[i - ]);
  23. }
  24. while(~scanf("%d", &n)) {
  25. printf("%lld\n", dp[n]);
  26. }
  27. return ;
  28. }

E:参考代码:

  1. /*
  2. 同样是递推,手推出n = 2, 3时所有未中奖的情况,我们先把
  3. 他们抽奖假设为放东西,那么第n个参与者放东西时它可以放到
  4. 任意一个前面的位置即n - 1种方法,我们假设为k为n放置的坐
  5. 标,那么我们还需要将第k个放到其它位置,我们知道当第k个放
  6. 到第n个位置时,其它n - 2个有dp[n - 2]种方法,当第k个不放
  7. 到第n个位置时,这n - 1个有dp[n - 1]种方法放置,所以我们
  8. 可以得出dp[n] = (n - 1) * (dp[n - 1] + dp[n - 2])。
  9. */
  10. #include <cstdio>
  11. using namespace std;
  12.  
  13. typedef long long int ll;
  14. const int maxn = + ;
  15. int c, n;
  16. ll dp[maxn];
  17. ll mather[maxn];
  18.  
  19. int main() {
  20. dp[] = ;
  21. dp[] = ;
  22. mather[] = ;
  23. mather[] = ;
  24. for(int i = ; i <= maxn; i ++) {
  25. dp[i] = (i - ) * (dp[i - ] + dp[i - ]);
  26. mather[i] = mather[i - ] * i;
  27. }
  28. scanf("%d", &c);
  29. while(c --) {
  30. scanf("%d", &n);
  31. printf("%.2f%%\n", ((double)dp[n] * ) / mather[n]);
  32. }
  33. return ;
  34. }

F:参考代码:

  1. /*
  2. 这个题可能是上一题的加强版?
  3. 上一题是说n个人全为选中正确的百分比,这题是求n个里有m个全
  4. 未选中的种数,高中同学应该都能想到选出m个让他们全不合格就行,
  5. C(n, m) * dp[m]即为方程了。
  6. */
  7. #include <cstdio>
  8. using namespace std;
  9.  
  10. typedef long long int ll;
  11. const int maxn = + ;
  12. int c, n, m;
  13. ll dp[maxn], mather[maxn];
  14.  
  15. int main() {
  16. dp[] = ;
  17. dp[] = ;
  18. for(int i = ; i <= maxn; i ++)
  19. dp[i] = (i - ) * (dp[i - ] + dp[i - ]);
  20. scanf("%d", &c);
  21. while(c --) {
  22. scanf("%d %d", &n, &m);
  23. ll p = ;
  24. for(int i = n - m + ; i <= n; i ++)
  25. p *= i;
  26. for(int i = ; i <= m; i ++)
  27. p /= i;
  28. printf("%lld\n", p * dp[m]);
  29. }
  30. return ;
  31. }

G:参考代码:

  1. /*
  2. 这题一开始没有思路emm,去网上查了一下发现受益匪浅。
  3. 参考直线相交,我们发现每增加一条直线就会增加n - 1个交点,
  4. 就会增加n个平面,所以我们知道对于直线相交产生的平面个数有
  5. dp[n] = dp[n - 1] + n;
  6.  
  7. 对于折线呢,我们发现,每画一条折线我们总是能和之前的n - 1
  8. 条折线多出4个交点,即总共多出4 * (n - 1) 个交点,那么就多出了
  9. 4 * (n - 1) + 1个面,就可以得出递推方程dp[n] = dp[n - 1] + 4 * [n - 1] + 1
  10.  
  11. 对于Z型折线,画一画就可以知道每增加一条z型折线,最多能与原图的n - 1条z型折线
  12. 共多生成9 * (n - 1) 个交点,也即可以得到递推方程为
  13. dp[n] = dp[n - 1] + 9 * (n - 1) + 1;
  14. */
  15. #include <cstdio>
  16. using namespace std;
  17.  
  18. typedef long long int ll;
  19. const int maxn = + ;
  20. int c, n;
  21. ll dp[maxn];
  22.  
  23. int main() {
  24. dp[] = ;
  25. for(int i = ; i <= maxn; i ++) {
  26. dp[i] = dp[i - ] + * (i - ) + ;
  27. }
  28. scanf("%d" ,&c);
  29. while(c --) {
  30. scanf("%d", &n);
  31. printf("%lld\n", dp[n]);
  32. }
  33. return ;
  34. }

<每日一题> Day6:HDU递推专题完结的更多相关文章

  1. [ 9.26 ]CF每日一题系列—— 771B递推问题

    Description: 给定你命名的规律,1-10个字符,开头必须大写,最多有50个名字,然后告诉你有n个人,判断区间长度为k,那么你将得到n - k + 1个答案(YES or NO) 表示1 - ...

  2. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  3. hdu 2044-2050 递推专题

    总结一下做递推题的经验,一般都开成long long (别看项数少,随便就超了) 一般从第 i 项开始推其与前面项的关系(动态规划也是这样),而不是从第i 项推其与后面的项的关系. hdu2044:h ...

  4. 【第53套模拟题】【递推】【RMQ】【二进制】【分块】

    题目:(开始自己描述题目了...) 第一题大意: 求1~n的所有排列中逆序对为k个的方案数,输出方案数%10000,n<=1000. 解:这道题一个递推,因为我基本上没怎么自己做过递推,所以推了 ...

  5. HDU-1041-Computer Transformation,大数递推,水过~~

                                                                                  Computer Transformatio ...

  6. ARC077C pushpush 递推

    ---题面--- 题解: 貌似一般c题都是递推... 观察到最后一个插入的数一定在第一个,倒数第二个插入的数一定在倒数第一个,倒数第三个插入的数一定在第2个,倒数第四个插入的数一定在倒数第2个…… O ...

  7. hdu 1465:不容易系列之一(递推入门题)

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  8. [ 9.24 ]CF每日一题系列—— 468A构造递推

    Description: 1 - n个数问你能否经过加减乘除这些运算n -1次的操作得到24 Solutrion: 一开始想暴力递推,发现n的范围太大直接否决,也否决了我的跑dfs,后来就像肯定有个递 ...

  9. 【(好题)组合数+Lucas定理+公式递推(lowbit+滚动数组)+打表找规律】2017多校训练七 HDU 6129 Just do it

    http://acm.hdu.edu.cn/showproblem.php?pid=6129 [题意] 对于一个长度为n的序列a,我们可以计算b[i]=a1^a2^......^ai,这样得到序列b ...

随机推荐

  1. Comet OJ - 模拟赛 #2 Day1 比赛总结

    比赛情况 40 + 60 + 0 = 100pts 哎,T1做错了,没有对拍.如果发现错误 \(=>\) 改正 \(=>\) 40->100pts,160pts \(=>\) ...

  2. java Byte源码分析

    源码: public static int toUnsignedInt(byte x) { return ((int) x) & 0xff; } 原理: -128(byte) 原码:10000 ...

  3. wpf socket 简单通讯示例

    源码下载地址:https://github.com/lizhiqiang0204/WPF-Socket 效果如下:

  4. watch和computed

    watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,所有依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用 ...

  5. SPOJ 694 || 705 Distinct Substrings ( 后缀数组 && 不同子串的个数 )

    题意 : 对于给出的串,输出其不同长度的子串的种类数 分析 : 有一个事实就是每一个子串必定是某一个后缀的前缀,换句话说就是每一个后缀的的每一个前缀都代表着一个子串,那么如何在这么多子串or后缀的前缀 ...

  6. Miniprofiler在目中使用报 mini-profiler-resources/includes.js 404错误

    原因,没有配置webconfig <system.webServer> <modules> <remove name="FormsAuthentication& ...

  7. (41)freeRTOS之任务管理

    1. 简介: 在 FreeRTOS 中没有线程和进程的区别,只有一个被翻译成任务的程序,相当于进程的概念,拥有独立的栈空间. 对于实时性,可以分为 软实时.硬实时:桌面电脑的输入处理可以看做是软实时, ...

  8. linux 搭建环境

    报错:cannot find valid baseurl for repo:base 解决办法: https://blog.csdn.net/banqgg/article/details/782560 ...

  9. SpringMVC常用方法总结

    *) @RequestMapping(value="/xxx/{id}",method={RequestMethod.GET}) method 不写的话,默认GET.POST都支持 ...

  10. 《SQL Server 2012 T-SQL基础》读书笔记 - 6.集合运算

    Chapter 6 Set Operators 语法如下: Input Query1 <set_operator> Input Query2 [ORDER BY ...] 有ORDER B ...