题目传送门

思路

这道题真的是一道不太好想的dp…真的太菜了
首先状态转移分成两种情况

  • 区间长度相等的情况,如



这种情况就是看看你现在的区间有几个约数,那么代表有几种这样的situation
记为v[i]

  • 包含情况,如

    dp[i]+=dp[i-1]

    dp[i]+=dp[i-1]

    这样的就是dp[i]+=dp[i-1]+dp[i-2]
    当然还有这样的

这样的就是,两个区间交替,外层区间谁也没有包谁那么就是
dp[i]+=dp[i-2]

那么状态转移方程就是
dp[i]=dp[i−1]+dp[i−2]+...+dp[2]+dp[1]+v[i]dp[i]=dp[i-1]+dp[i-2]+...+dp[2]+dp[1]+v[i]dp[i]=dp[i−1]+dp[i−2]+...+dp[2]+dp[1]+v[i]

#include<iostream>
using namespace std;
typedef long long ll;
ll dp[2102100];
ll v[2102100];
const ll modd=998244353;
int main(){ll n;cin>>n;for(ll i=1;i<=n;i++){for(ll j=i;j<=n;j+=i) v[j]++;}dp[1]=1;ll sum=dp[1];for(ll i=2;i<=n;i++){dp[i]+=sum;dp[i]%=modd;dp[i]+=v[i];sum+=dp[i];sum%=modd;dp[i]%=modd;}cout<<dp[n]<<endl;
}

重做笔记

#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const ll N=998244353;
ll dp[2102100];
ll s[2102100];
ll sum;
int main(){int n;cin>>n;//memset(s,1,sizeof s);//s[1]=1;for(int i=1;i<=n;i++)for(int j=1;j<=n/i;j++)s[i*j]++,s[i*j]%=N;//cout<<s[2]<<endl;for(int i=1;i<=n;i++){dp[i]=sum+s[i];sum+=dp[i];dp[i]%=N;sum%=N;}cout<<dp[n]<<endl;
}

枚举那块千万要优化,否则时间复杂度让你难以想象!!!(就是s数组)
UPD:2021/10/28
这个题的思路其实这块不难推:
dp[i]=dp[i−1]+dp[i−2]+dp[i−3]+....dp[1]+?dp[i]=dp[i-1]+dp[i-2]+dp[i-3]+....dp[1]+?dp[i]=dp[i−1]+dp[i−2]+dp[i−3]+....dp[1]+?
当前的状态一定是前面的状态的前缀和,但是如何想到枚举因数?我们通过分析每一个状态其实不难得到,当前dp其实就是继承前面的每一个状态,而当前的状态也一定可以排列出一种非继承的状态,也就是没有外部包装的状态,那么我们就可以进行下面的递推,那就是将这n个点,可以分成多少个整数组,这个整数组则就是新的衍生状态,每一个组之间的线对不相互影响,每一组刚好就是一个答案,素以我们在最后加上当前的枚举的i包含多少个因子即可。

#include<iostream>
using namespace std;
#define int long long
const int mod=998244353;
int v[2102100];
int dp[2102100];
signed main(){int n;dp[1]=1;for(int i=1;i<=1000000;i++){for(int j=1;j*i<=1000000;j++){v[j*i]++;}}int tot=1;for(int i=2;i<=1000000;i++){dp[i]+=(v[i]+tot)%mod;tot+=dp[i];tot%=mod; }cin>>n;cout<<dp[n]<<endl;}

CF1528B Kavi on Pairing Duty(dp)相关推荐

  1. 思维dp ---- Codeforces Round #722 (Div. 1) B. Kavi on Pairing Duty [思维dp + 数学]

    题目大意: 将2n2n2n个点两两相连形成n对,对于任意两个点对A和B,要求至少满足其中一条: 1.A和B的某一个完全包含于另一个中 2.A和B的长度相等.问你一共有多少种方案. 解题思路: 题解:假 ...

  2. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  3. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  4. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  5. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  6. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  7. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  8. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  9. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

  10. 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

    1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...

最新文章

  1. bootstrap-datetimepicker时间控件添加清除按钮
  2. Cell Stem Cell:研究人员开发出大脑类器官用于研究认知障碍!
  3. C 语言中赋值表达式的返回的逻辑值
  4. ContentProvider再探——Document Provider
  5. java多线程启动BIO和NIO服务端同时启动接受图片和字符数据
  6. OpenCV calcOpticalFlowPyrLK用法的实例(附完整代码)
  7. MySQL分组查询—添加分组后筛选
  8. matlab如何求矩阵的转置矩阵,怎么用MATLAB程序求转置矩阵?急需,高手帮忙………………...
  9. Spring Integration Framework简介
  10. Laravel Session 遇到的坑
  11. js java 反射机制_java 类加载机制和反射机制
  12. 件测试专家分享III GUI自动化测试相关
  13. 为什么「margin:auto」可以让块级元素水平居中?
  14. 云物大智题库--人工智能
  15. 使用ResNet101作为预训练模型训练Faster-RCNN-TensorFlow-Python3-master
  16. Win32学习笔记 - WndProc回调函数
  17. [QT学习]-调色板|选择文件
  18. Nginx基本使用方法
  19. python opencv3 背景分割 mog2 knn
  20. 今年C++找工作这么这么难?

热门文章

  1. WIN10下删除Hiberfil.sys文件
  2. 显示器尺寸 和 屏幕分辨率 和 有源信号分辨率 关系
  3. JS测试显示屏分辨率以及屏幕尺寸
  4. PostgreSQL-11.7关系型数据库源码安装
  5. 放大电路静态工作点的稳定
  6. 亲水性小分子PEG DBCO-PEG4-酸,1416711-60-8可以进行点击化学反应
  7. 安徽大学计算机科学与技术考研科目,2020安徽大学计算机专业课调整
  8. 分治算法 循环比赛日程表
  9. 定时监控服务端口是否正常 发送邮件
  10. 多张表格链接一起——《超级处理器》应用