博客
关于我
POJ 2229 Sumsets(递推,找规律)
阅读量:804 次
发布时间:2023-03-03

本文共 750 字,大约阅读时间需要 2 分钟。

构造递推关系,因为划分是合并的逆过程,需要考虑如何合并。将N展开成全部由1组成的N个1,然后合并。由于合并顺序无关,只与出现次数有关,因此需要进行分类。

设C[i]表示序列中最大的数为2^i时的方案数。通过树形结构可以表示合并过程。例如,7表示2^0出现的次数。树的结构是分形的,子树的形态由根结点的值决定。

当n是偶数时,第一层会增加一颗子树,其值为n/2,递推关系为f[n] = f[n-1] + f[n/2]。当n是奇数时,树的形态不变,递推关系为f[n] = f[n-1]。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int mod = 1e9, maxn = 1e6 + 1;int dp[maxn];#define LOCALint main() { #ifdef LOCAL freopen("in.txt", "r", stdin); #endif int n; cin >> n; dp[1] = 1; for (int i = 2; i <= n; ++i) { dp[i] = dp[i-1]; if (i > 1) { dp[i] += dp[i / 2]; } if (dp[i] >= mod) { dp[i] -= mod; } } cout << dp[n];}

以上代码实现了递推关系的计算,返回了最终的dp[n]值。

转载地址:http://fyxfk.baihongyu.com/

你可能感兴趣的文章
pyinstaller错误:OSError:找不到Python库:libpython3.4mu.so.1.0、libpython3.4m.so.1.0、libpython3.4.so.1.0
查看>>
Pyinstaller:‘;Fiona‘;没有属性‘;_loading‘;(很可能是由于循环导入)
查看>>
pyinstaller:更改应用程序图标
查看>>
Pylint“未解决的导入“;Visual Studio 代码中的错误
查看>>
pyLoad远程代码执行漏洞复现(CVE-2023-0297)
查看>>
pymongo update_one(),upsert=True,不使用$运算符
查看>>
pymongo 中的快速或批量更新
查看>>
pymongo删除操作
查看>>
PyMongo按多个关键点分组
查看>>
Pympress:强大的双屏PDF阅读器
查看>>
pymysql.err.InternalError: (1054, "Unknown column '27D24A3B' in 'where clause'")之错误解决
查看>>
pymysql.err.OperationalError: (1364, “Field ‘id‘ doesn‘t have a default value“)
查看>>
PyMySQL库对Mysql数据库进行增删改查与工具类封装
查看>>
pynput的基本介绍和使用
查看>>
pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器
查看>>
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
查看>>
Pyplot tutorial,Pyplot官方教程自翻译
查看>>
PyQ5学习笔记——使用内部槽函数关闭窗口
查看>>
PyQ5学习笔记——使用自定义槽函数关闭窗口
查看>>
PyQt MimeData 文件名
查看>>