题意:

Rooted Dead Bush (RDB) of level 1是只有一个点,如下图

当(RDB) of level i变成(RDB) of level i+1的时候,每一个顶点要进行下面的变化:

1、如果一个节点只有一个子节点,那么就再给这个节点添加两个子节点

2、如果一个节点没有子节点,那么就给这个节点添加一个子节点

3、如果一个节点有三个子节点,那么就不用管它

你需要从(RDB) of level i中找到有多少爪,爪的结构如下

最后因为我们求的是要给多少爪的节点染色,因为一个爪有四个节点,所以最后答案就是爪的个数乘于4(注意,爪与爪之间不能有重叠节点)

对于(RDB) of level 3只有一个爪就是(1,3,2,4);对于(RDB) of level 4种有两个爪(1,3,2,4)和(2,7,5,6)但是两个爪有重叠部分,所以只能算作一个

题解:

衍生的过程是具有重复性的,最终变化的是根结点 1 下的三棵子树,左右两棵子树为 leveln-2,中间的子树为 leveln-1 。

因为 level1 和 level2 的根结点并未使用,所以可以在 level3 中选择以根结点 1 为中心的爪形结构。

同理,level4、level5 可以通过选取较下层的爪形结构来避免根结点的使用,所以在 level6 中又可以选取以根结点 1 为中心的爪形结构。

即,level为 3 的倍数的图形都可以再额外选取位于根结点的爪形结构。

dp[i]=2*dp[i-2]+dp[i-1]+(i%3==0)*4

代码:

  1. 1 #include<iostream>
  2. 2 using namespace std;
  3. 3 #define ll long long
  4. 4 const int maxn =( 2 * 1e6)+10;
  5. 5 const int mod = 1e9 + 7;
  6. 6 ll dp[maxn], i, t, n;
  7. 7
  8. 8 void solve()
  9. 9 {
  10. 10 dp[0] = 0;
  11. 11 dp[1] = 0;
  12. 12 dp[2] = 0;
  13. 13 for (int i = 3; i <maxn; i++)
  14. 14 {
  15. 15 dp[i] = (dp[i - 1] + 2 * dp[i - 2])%mod;
  16. 16 if (i % 3 == 0)
  17. 17 {
  18. 18 dp[i] += 4;
  19. 19 dp[i] %= mod;
  20. 20 }
  21. 21 }
  22. 22 }
  23. 23 int main()
  24. 24 {
  25. 25 solve();
  26. 26 int t;
  27. 27 cin >> t;
  28. 28 while (t--)
  29. 29 {
  30. 30 int n;
  31. 31 cin >> n;
  32. 32 cout << dp[n] << endl;
  33. 33 }
  34. 34 }

Codeforces Round #652 (Div. 2)D. TediousLee 推导的更多相关文章

  1. Codeforces Round #652 (Div. 2) D. TediousLee(dp)

    题目链接:https://codeforces.com/contest/1369/problem/D 题意 最初有一个结点,衍生规则如下: 如果结点 $u$ 没有子结点,添加 $1$ 个子结点 如果结 ...

  2. Codeforces Round #652 (Div. 2) E. DeadLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/E 题意 Lee 有 $n$ 种不同种类的食物和 $m$ 个朋友,每种食物有 $w_i$ 个,每个朋友 ...

  3. Codeforces Round #652 (Div. 2) C. RationalLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/C 题意 将 $n$ 个数分给 $k$ 个人,每个人分 $w_i$ 个数($\sum_{i = 1}^ ...

  4. Codeforces Round #652 (Div. 2) B. AccurateLee(字符串)

    题目链接:https://codeforces.com/contest/1369/problem/B 题意 给出一个长 $n$ 的 二进制串,每次可以选择字符串中的一个 $10$,然后删除其中的一个字 ...

  5. Codeforces Round #652 (Div. 2) A. FashionabLee(几何)

    题目链接:https://codeforces.com/contest/1369/problem/A 题意 判断正 $n$ 边形能否通过旋转使得一边与 $x$ 轴平行,一边与 $y$ 轴平行. 题解 ...

  6. Codeforces Round #652 (Div. 2) 总结

    A:问正n边形的一条边和x轴平行的时候有没有一条边和y轴重合,直接判断n是否是4的倍数 #include <iostream> #include <cstdio> #inclu ...

  7. Codeforces Round #652 (Div. 2) B. AccurateLee(思维)

    题意: 给你一个01字符串,现在你可以删除其中的一些子序列,要求如下:当遇到1 0的俩个连续子字符串后,可以删除其中的一个字符,现在要求把他删到尽量最短并且字典序最小,输出最后的字符串 题解: 刚开始 ...

  8. Codeforces Round #652 (Div. 2) C. RationalLee 贪心

    题意: t组输入,你有n个数,还有k个朋友,每一个朋友需要wi个数.意思就是你要给第i个朋友分配wi个数,输入保证w1+w2+...+wk=n 一个朋友的兴奋值是你分配给他的数中最大值加上最小值的和( ...

  9. Codeforces Round #652 (Div. 2) E. DeadLee 贪心

    题意: 派会上有n种食物,每种食物有wi份.有m个朋友,每一个朋友有两种他喜欢吃的食物xi,yi.你需要判断他的朋友是否都能吃到食物.如果都能吃到食物,那么要输出朋友来的顺序,不能的话输出" ...

随机推荐

  1. mongodb表索引备份,索引的导出导入

    背景 发现有两个mongodb环境的数据库表索引不一致,另一个数据库有索引缺失,需要将一个数据库里的所有表索引导入到另一个数据库 也可用于单独备份数据库所有表的索引 写mongo shell的js脚本 ...

  2. 面试官:Netty的线程模型可不只是主从多Reactor这么简单

    笔者看来Netty的内核主要包括如下图三个部分: 其各个核心模块主要的职责如下: 内存管理 主要提高高效的内存管理,包含内存分配,内存回收. 网通通道 复制网络通信,例如实现对NIO.OIO等底层JA ...

  3. 【Problems】端口被占用 查看是被谁占用并关闭它

    文章目录 Windows Linux 经常在Windows.Linux环境下运行JavaWeb项目,Tomcat的端口被占用了. 端口被占用就查看是被谁占用关闭它就行. Windows 在Window ...

  4. 【Oracle】用sqlplus登录的各种方式

    1.本地登录 sqlplus / as sysdba 2.账号密码登录 sqlplus user/passwd 3.选择实例登录 sqlplus user/passwd@实例名   例如 sqlplu ...

  5. python—base64

    今天在写题时,执行脚本又报错了 脚本如下 #! /usr/bin/env python3 # _*_ coding:utf-8 _*_ import base64 # 字典文件路径 dic_file_ ...

  6. Java自学笔记之学生管理系统

    实现:学生管理系统,实现学生信息的添加.修改.查询和删除功能 涉及:集合的基础知识(集合遍历,值得获取与替换,set/get方法) 代码如下: Student文件 1 package Demo_120 ...

  7. 阿里云VPC网络内网实例通过SNAT连接外网

    场景: 1.有多个ECS实例,其中A实例有公网IP,可以上外网 其它实例没有公网IP,不能上外网 2.所有实例在一个交换机,也就是一个网络(172.16.0.0/16) 实例 内网IP 外网IP A ...

  8. jvm源码解析java对象头

    认真学习过java的同学应该都知道,java对象由三个部分组成:对象头,实例数据,对齐填充,这三大部分扛起了java的大旗对象,实例数据其实就是我们对象中的数据,对齐填充是由于为了规则分配内存空间,j ...

  9. windows ping bat脚本

    参考百度链接:https://zhidao.baidu.com/question/577024998.html 要求:1.从同级目录下读取iplist.txt文件内的ip/域名列表(每行一个):2.对 ...

  10. Soul API 网关源码解析 03

    目标 使用 soul 代理 dubbo 服务 dubbo 服务如何注册到网关的? dubbo 插件是如何工作的? 理清 http --> 网关--> dubbo provider 整条链路 ...