http://www.lydsy.com/JudgeOnline/upload/201712/prob12.pdf

dp[len][0/1] 表示节点表示区间长度为len,节点选/不选的 最大匹配

sum[len][0/1] 表示对应dp[len][0/1]的方案数

这里选节点即选节点与其父节点的边

设区间长度为len,左子区间长度为L,右子区间长度为R

这个节点选,那么左右子节点都不能选

dp[len][1]=1+dp[L][0]+dp[R][0]

sum[len][1]=sum[L][0]*sum[R][0]

这个节点不选,有3种情况:

左右子节点都不选:

dp[len][0]=dp[L][0]+dp[R][0]

sum[len][0]=sum[L][0]+sum[R][0]

选左子节点:

dp[len][0]=dp[L][1]+dp[R][0]

sum[len][0]=sum[L][1]+sum[R][0]

选右子节点:

dp[len][0]=dp[L][0]+dp[R][1]

sum[len][0]=sum[L][0]+sum[R][1]

如果dp[len][0] 在三种情况中有相同的,sum[len][0]要累加

len虽然是1e18,但只会用log种,所以用map

#include<map>
#include<cstdio>
#include<cstring>using namespace std;typedef long long LL;const int mod=998244353;//int dp[100001][2];
//int sum[10001][2];

map<LL,LL>dp[2];
map<LL,LL>sum[2];void dfs(LL len)
{if(len==1){dp[0][1]=0;sum[0][1]=1;dp[1][1]=1;sum[1][1]=1;return;}LL R=len>>1;LL L=len-R;if(dp[0].find(L)==dp[0].end()) dfs(L);if(dp[0].find(R)==dp[0].end()) dfs(R);dp[1][len]=1+dp[0][L]+dp[0][R];sum[1][len]=sum[0][L]*sum[0][R]%mod;dp[0][len]=dp[1][len]-1;sum[0][len]=sum[1][len];if(dp[0][L]+dp[1][R]>dp[0][len]){dp[0][len]=dp[0][L]+dp[1][R];sum[0][len]=sum[0][L]*sum[1][R]%mod;}else if(dp[0][L]+dp[1][R]==dp[0][len]){sum[0][len]=(sum[0][len]+sum[0][L]*sum[1][R])%mod;}if(dp[1][L]+dp[0][R]>dp[0][len]){dp[0][len]=dp[1][L]+dp[0][R];sum[0][len]=sum[1][L]*sum[0][R]%mod;}else if(dp[1][L]+dp[0][R]==dp[0][len]){sum[0][len]=(sum[0][len]+sum[1][L]*sum[0][R])%mod;}
}int main()
{LL n;scanf("%I64d",&n);dfs(n);printf("%I64d %I64d",dp[0][n],sum[0][n]);
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8148895.html

bzoj千题计划164:bzoj5123: 线段树的匹配相关推荐

  1. bzoj千题计划128:bzoj4552: [Tjoi2016Heoi2016]排序

    http://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案 把>=mid 的数看做1,<mid 的数看做0 这样升序.降序排列相当于 ...

  2. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  3. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...

  4. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  5. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  6. bzoj千题计划248:bzoj3697: 采药人的路径

    http://www.lydsy.com/JudgeOnline/problem.php?id=3697 点分治 路径0改为路径-1 g[i][0/1] 和 f[i][0/1]分别表示当前子树 和 已 ...

  7. bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战

    http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...

  8. bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链

    http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...

  9. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  10. bzoj千题计划126:bzoj1038: [ZJOI2008]瞭望塔

    http://www.lydsy.com/JudgeOnline/problem.php?id=1038 本题可以使用三分法 将点按横坐标排好序后 对于任意相邻两个点连成的线段,瞭望塔的高度 是单峰函 ...

最新文章

  1. oracle数据库dba密码,Oracle数据库的找回DBA账户的密码
  2. 用串口模拟printf函数输出
  3. bootstrap.yml和application.yml的区别
  4. 去除Activity的标题栏以及全屏显示
  5. 如何在ui5 xml view中使用嵌入的自定义css style
  6. 【设计模式】单例模式 Singleton Pattern
  7. 喷喷计算机语言掌握的程度
  8. 网页中JS函数自动执行常用三种方法
  9. 论述计算机与外设的访问控制方法,试论述计算机与外设访问控制的方法有多少种各有什么优缺点...
  10. capjoint一些生成文件的解释
  11. VC2005项目属性配置
  12. SDS之BlockChain Storage系列:3、为什说区块链存储是下一个热点 (上)
  13. HTTPS证书基本概述
  14. 5G NR 基本概念
  15. 什么样的软件架构是好的?
  16. 汉诺塔游戏java下载,利用python实现汉诺塔游戏
  17. 三态门的组成及工作原理
  18. Spring实战读书笔记 高级装配(1)
  19. [附源码]Nodejs计算机毕业设计理想电子商城网站Express(程序+LW)
  20. 计算机蓝屏安全模式都启动不了,windows进入系统安全模式时蓝屏怎么办?

热门文章

  1. Linux 下安装 Elasticsearch5.6.x 详细步骤以及踩坑解决方案
  2. mysql教程datetime_Mysql中的Datetime与Timestamp不同之处
  3. 安装360后无法远程sqlserver error:64
  4. 上传excel,并保存excel内容
  5. winform ComboBox基本操作
  6. 本地 hosts 文件找不到怎么办
  7. OFFICE使用技术:让几个自选图形间距相等
  8. 有的字体,设置了粗体,也不能用粗体方式来绘制
  9. checking build system type... ./config.guess: unable to guess system type/you must specify one
  10. maven打包时加入依赖jar包