CodeForces - 1561D2 Up the Strip ( dp + 前缀和 )

51单片机IAP在线升级 51单片机IAP在线升级 爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载 文章目录前言一、ROM资源二、KEIL有关知识1.BL51连接器:2.LX51连接器:三、Keil其他相关项说明:四、MCU启动文件说明:五、例程BOOTLOADER使用说明六、例程使用可更改说明:七、程序使用通信方式:XMODEM八、APP程序说明九、APP代码升级说明十、代码合并烧写 前言 扩展-IAP 主要用于产品出厂后应用程序的更新作用 ,类似于其他引导装载升级程序的方法,在系统中必须始终 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

n 个台阶,问从 n 到 1 有多少种方案,答案 % m 。
若是位于 x ,则有两种操作:
1、通过减法到达 [ 1 , x - 1 ]
2、通过除法到达 ⌊ x z ⌋ ⌊ \frac{x}{z} ⌋ ⌊zx​⌋ ( 下取整 , z 取值 [ 2 , x ] )

思路

与此题题意相同,只是 n 变为了4e6, O ( n n ) O(n\sqrt{n}) O(nn ​) 不可过
dp [ i ] : 表示从 n 到 i 的方案数。倒序遍历 i :
对于减法,依旧是记录前缀和 sum [ i ] ,这个前缀和代表着,i 之前的位置 x 通过减法一步到达 i 的总方案数, s u m = ∑ x = i + 1 n d p [ x ] sum=\sum_{x=i+1}^{n}dp[x] sum=∑x=i+1n​dp[x]
对于除法,上一题是用台阶 i ,更新 x 的 dp 值 ( x 是 i 整除到达的位置 ),也就是用 i 的值更新低位置的值。现在尝试用高位置的值更新 i 的值:
对于 z = 2 ,可以通过除法一步到达的高位有 [ 2i , 2i + 1 ]
对于 z = 3 ,可以通过除法一步到达的高位有 [ 3i , 3i + 2 ]
对于 z = 4 ,可以通过除法一步到达的高位有 [ 4i , 4i + 3 ]
…
因此可以枚举 z ,对于 z ,可以通过除法一步到达的高位有 [ zi , zi + z - 1 ]
转换一下,也就是对于位置 i 的 dp 值,可以由位置 [ zi , zi + z - 1 ] 的 dp 值更新,更新的总值就是 ∑ x = z i z i + z − 1 d p [ x ] \sum_{x=zi}^{zi + z - 1}dp[x] ∑x=zizi+z−1​dp[x],这个值可以通过前缀和做差求得,即 dp [ i ] += sum [ zi ] - sum [ min ( zi + z , n + 1 ) ] 。

代码
// Problem: Up the Strip
// Contest: Virtual Judge - CodeForces
// URL: https://vjudge.net/problem/CodeForces-1561D2
// Memory Limit: 131 MB
// Time Limit: 6000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=4e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,m,dp[maxn],sum[maxn];

signed main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	dp[n]=sum[n]=1;
	for(int i=n-1;i>=1;i--)
	{
		dp[i]=(dp[i]+sum[i+1])%m;
		for(int j=2,r;i*j<=n;j++)
			dp[i]=(dp[i]+sum[i*j]-sum[min(i*j+j,n+1)])%m;
		sum[i]=(sum[i+1]+dp[i])%m;
	}
	cout<<dp[1]<<endl;
    return 0;
} 

GraphRAG 与 HippoRAG 深度对比:在 RAGFlow 中如何选择知识图谱方案? 本文深入对比了GraphRAG与HippoRAG在RAGFlow中的知识图谱构建方案,分析了两者在技术架构、资源消耗和场景适配性上的核心差异。GraphRAG适合需要快速响应和资源有限的场景,而HippoRAG则更适用于精确关系推理的专业领域。文章还提供了RAGFlow的演进路线和选型决策框架,帮助架构师根据实际需求做出合理选择。 阅读详情

相关推荐

RIGOL DS1102E示波器新手必看:从开机到捕获第一个波形的5分钟指南

本文为RIGOL DS1102E示波器新手提供了一份快速上手指南。内容涵盖从开机、探头校准到捕获第一个波形的完整流程,重点解析了触发设置、自动测量等核心操作,并指出了探头衰减比设置等常见误区,帮助用户快速掌握这款经典数字示波器的基本使用方法。

dream的博客 739

Codeforces Round #740 (Div. 2) D2. Up the Strip(dp)

链接 D2. Up the Strip 题意 懒得写了,看我的D1博客吧D1 思路 更改一下dp方式,dp[i]dp[i]dp[i] 表示从 nnn 到 iii 有多少种方式,然后从后往前进行遍历更新 dpdpdp 数组; 对于 iii,然后对于每个除数,例如 222 ,发现只有 2i,2i+12i,2i+12i,2i+1 才能通过除 222 得到 iii ,对于3…分析一波发现成块状分布,取那一段的和即可, 用后缀和维护即可; AC代码 #include <iostream> #include

hz0010的博客 317

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

D2. Up the Strip(递推)

D2. Up the Strip(递推) 考虑如何从fi−1→fif_{i-1}\rightarrow f_ifi−1​→fi​。 显然操作1多了fi−1f_{i-1}fi−1​,操作二多了f1f_1f1​。 所以fi=2fi−1+1f_i=2f_{i-1}+1fi​=2fi−1​+1。 除此外,所以iii的因数都会相对于(i−1)(i-1)(i−1)加1,因为 ep:i=4,42=2,(4−1)2=1ep: i=4,\dfrac{4}{2}=2,\dfrac{(4-1)}{2}=1ep:i=4,24​=2

Harris-H的博客 607

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 802

Setup&Hold互卡问题和Useful Skew的影响

setup和hold互卡问题分析

godping的博客 5093

cf D Up the Strip

题目 添加链接描述 代码 D1D_1D1​ nsqrtnnsqrtnnsqrtn做法:整除分块: using namespace std; const int INF = 0x3f3f3f3f; int dp[200010]; signed main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; int pre=0; dp[n]=1; for(int i=n;i>

kosf_的博客 192

学习海康VisionMaster之顶点检测

2:应用场景:海康VisionMaster的顶点检测功能在工业视觉检测中具有广泛的应用场景,尤其在精密制造、电子元件检测和机械加工等领域,其通过高精度定位物体的关键点(如角点、交点或边缘顶点)来实现自动化测量与质量控制。基本参数这里就是画ROI,设定跟踪参数和之前的工具是一样的方法,这里画的方向需要注意,如下图所示,边缘的扫描方向正好对应需要查找的边缘点。一个不是很规则的物体需要检测一个凸台的顶角坐标,其实靠边缘与边缘交点是不太稳定的,如下图所示,边缘很短,很容易产生误抓边缘。1:什么是顶点检测?

yuhouxiyang的专栏 1524

CF 1561 D. Up the Strip(数学+思维)

链接 题意: 给出一个数nnn,两种操作,求将nnn变成111的方案数?对mmm取模 减去[1,n−1][1,n-1][1,n−1] 除以[2,n][2,n][2,n] 分析: 我们看操作1,可以看出我们只与要维护前缀和即可,抛开操作1,不看我们只看操作2, 我们看除以[2,n−1][2,n-1][2,n−1] 我看iii,那些数除以222等于iii ,2i,2i+12i,2i+12i,2i+1这两个数除以2等于i。然后我们看那些数除以333等于iii.3i,3i+1,3i+23i,3i+1,3i+23

林苏泽 428

基于vue2的echarts3D地球

采用vue2+js实现了echarts3D地球的放大、缩小和旋转

qq_44699269的博客 1132

【即插即用模块】卷积篇 | TCSVT 2025 | MFACB:多尺度膨胀融合,快速扩大感受野,多尺度特征精准捕捉!

本文提出了一种新型多尺度融合膨胀卷积模块MFACB,用于增强语义分割任务中的特征表达能力。该模块通过三分支串联膨胀卷积结构快速扩大感受野,采用双路径融合机制(基础信息路径+多尺度信息路径)实现高效上下文聚合。相比传统卷积块,MFACB在保持轻量化的同时显著提升了多尺度特征捕捉能力,实验表明其性能优于基础残差块。该模块支持自定义膨胀率和步长调整,可灵活嵌入不同网络阶段,适用于需要特征增强的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 310

2021暑假集训-个人赛11

文章目录A.Simply Strange SortB.Charmed by the Game *C.Deep Down BelowD.Up the Strip (simplified version) *E.Up the Strip *F.Bottom-Tier Reversals *G.Top-Notch Insertions * A.Simply Strange Sort 传送门 题目大意:有两种操作,一种是偶数只对偶数和他后面的进行判断,如果前面大,前后就进行交换 ,同理奇数也是这样,奇数跟偶数..

xingzi201的博客 422

一.镜头知识之焦点,焦距,有效焦距,前焦距,后焦距

由光学系统中镜片的最后一面到像面的距离。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 5577

Codeforces 1558B & 1561D2 Up the Strip 化因数为倍数优化dp

文章目录题意题解 题意 有nnn个格子,一开始有个棋子在编号为nnn的格子上,要把它移动到编号为111的格子.你有两种操作: 当前位置编号为xxx,选择一个y∈[1,n−1]y\in [1,n-1]y∈[1,n−1],则可以变为x−yx-yx−y. 当前位置编号为xxx,选择一个z∈[2,n]z\in[2,n]z∈[2,n],可以变为[xz][\frac{x}{z}][zx​]. 只要具体操作不同就是两种不同的方法,问有多少种不同方法可以把棋子从nnn移动到111,取模一个大质数. 题解 这题一来显然考

Fuko_Ibuki的博客 1164

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CF1561D Up the Strip (整除分块 dp 因子)

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) D1. Up the Strip (simplified version) D2. Up the Strip 题意: 给出一个数nnn,每次有两种操作,设xxx为当前数字 选择1<=y<=x−1,x=x−y1<=y<=x-1,x=x-y1<=y<=x−1,x=x−y 选择2<=z<=x,x=xz2<=z<=x

我们都有光明的未来 399

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

codeforces 1561D Up the Strip

D. Up the Strip 题意: 目前是x,有两种操作:1. x→x−yx \rightarrow x - yx→x−y。 2. $x \rightarrow \lfloor \frac{x}{z} \rfloor $。问从n到1的方案数。 根据定义得: $f(x) = \sum_{y =1}^{x - 1}f(x - y)+\sum_{z - 2}^{x}f(\lfloor \frac{x}{z} \rfloor) $ D1的subtask n是2e5, 刚开始以为按cf的尿性大概nlogn,后来摸

juraws的博客 228

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

CodeForces - 1561D1 Up the Strip (simplified version) ( dp + 整除分块 + 前缀和 )

题目链接:点击进入 题目 题意 n 个台阶,问从 n 到 1 有多少种方案。 若是位于 x ,则有两种操作: 1、通过减法到达 [ 1 , x - 1 ] 2、通过除法到达 ⌊xz⌋⌊ \frac{x}{z} ⌋⌊zx​⌋ ( 下取整 , z 取值 [ 2 , x ] ) 思路 dp [ i ] : 表示从 n 到 i 的方案数。倒序遍历 i : 对于减法,记录一个前缀和 sum ,这个前缀和代表着,i 之前的位置 x 通过减法一步到达 i 的总方案数,sum=∑x=i+1ndp[x]sum=\sum_

Cosmic_Tree的博客 412

1561D1 - Up the Strip (simplified version)

链接: https://codeforces.com/problemset/problem/1561/D1 题意: 一开始为n,把n变成1,可以做两种操作(无数次) 对于位置x的数字: 1、减【1,x-1】任意一个数 2、除与【2,x】任意一个数(向下取整) 求有多少种变法 输入 3 998244353 输出量 5 输入 5 998244353 输出量 25 输入 42 998244353 输出量 793019428 解: 这一波属于是1900大佬提点了,一开始就想到了DP,但是除法这部分完全不

Fei_WuYan的博客 325

Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维

传送门 文章目录题意:思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一个数yyy,跳到第x−yx-yx−y个细胞上。 (2)(2)(2)选择[2,x][2,x][2,x]之间的一个数zzz,跳到⌊xz⌋\left \lfloor \frac{x}{z} \right \rfloor⌊zx​⌋。 问你有多少种不同的方式到达111号细胞。 2≤n≤4e62\le n\le 4e62≤n≤

m0_51068403的博客 285

Codeforces712D 前缀和优化DP

题目链接:http://codeforces.com/problemset/problem/712/DD. Memory and Scorestime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputMemory and his friend Lexa ...

qq_36876305的博客 426

Codeforces 611C New Year and Domino DP+前缀和

点击打开链接 题意: 给你个矩阵,每个位置是空或者不空每两个相邻空的位置,可以放一个木条有q次询问,每次问你一个子矩阵中,放一根木条有多少种放法 //q O(2wh+q(w+h)) 约为1e7 定义好状态即可:/f[i][j] 第i行横着放,前j列&&以第j列为终点(第2个'.'在第j列上)连续2个.的个数  //cos A=(b2+c2-a2)/2bc #incl

Masamiiiiii 797

Codeforces Round #501 (Div. 3) E2 - Stars Drawing (Hard Edition)(dp,前缀和,覆盖)

        题目链接:http://codeforces.com/contest/1015/problem/E2                题目大意,给你一个n×m大小的字符矩阵,仅由‘.’和‘*’组成,提问这个图可否划分为一些由‘*’组成的十字形状,这些十字之间可以有重叠,如果可以完全覆盖输出每个十字中心坐标与边长度,不可以输出-1。                         ...

u013573243的博客 527

[dp+前缀和优化] codeforces/gym/102428/problem/F Fabricating Sculptures

题面 link   有 S 列,B 个正方形,正方形可以叠加摆放在一列上,要求每个正方形左右不能都有正方形比它高(每一列至少一个正方形),问有几种摆法?(1≤B≤S≤50001 ≤B ≤ S ≤ 50001≤B≤S≤5000) 分析   从每一列考虑不是很好做,可以从底开始,每一行开始考虑。最下面一行一定要放满 SSS 块正方形,倒数第二行如果要放 k1k_1k1​ 个正方形的话,则有 (S−k1+1)(S - k_1 + 1)(S−k1​+1) 种方法(根据要求正方形必须相邻),那么在这个基础上如果倒数第

ECNU_SF的博客 428

Binary Table (Hard Version)-(思维)

题目描述:点击进入 题意 给你一个大小为n×m的二进制表,这个表由符号 0 和符号 1 组成。 你可以进行这样的操作: 选择属于一个 2 × 2 正方形的 3 个不同的单元格,并更改这些单元格中的符号(将 0 更改为1, 1 更改为 0 )。 你的任务是使表中的所有符号都等于0。您最多可以进行 nm次 操作。 你不需要最小化操作的数量。 思路 这是上一题的加强版,操作次数变为 nm 了,我上一次的代码过不去,无奈只能优化,但也只是对边界处理优化了一下,却神奇过了(神奇神奇,用xy哥的话来说那就是可蒸馏啊)

Cosmic_Tree的博客 1780

k-LCM ( easy version && hard version ) -( 思维 - 构造 )

题目链接(easy):点击进入 题目链接(hard):点击进入 题目 题意 长度为 k 的数组,整个数组的和为 n ,整个数组的最小公倍数不超过 n / 2,让你构造这样一个数组 简单版本k=3,困难版本 3 <= k <= n。 思路 简单版本: 因为明确告诉你了 k = 3 ,同时要求三个数的最小公倍数不能超过 n / 2,所以我们可以根据 n 来构造这个三个数。 首先根据 n 的奇偶性分类讨论 如果 n 是奇数,那么三个数可以变为 n / 2 , n / 2 , 1 ; 如果 n 是偶

Cosmic_Tree的博客 1189

Binary Table (Easy Version)-(思维)

题目描述:点击进入 题意 给你一个大小为n×m的二进制表,这个表由符号 0 和符号 1 组成。 你可以进行这样的操作: 选择属于一个 2 × 2 正方形的 3 个不同的单元格,并更改这些单元格中的符号(将 0 更改为1, 1 更改为 0 )。 你的任务是使表中的所有符号都等于0。您最多可以进行 3nm次 操作。 你不需要最小化操作的数量。 思路1 通过找找规律,我们可以知道一个 2*2 的矩阵 不包含0的可以通过一次操作变为包含3个0的, 包含3个0的通过一次操作可以变为包含2个0的, 包含2个0的通过一次

Cosmic_Tree的博客 840
上一篇: CodeForces - 1561D1 Up the Strip (simplified version) ( dp + 整除分块 + 前缀和 )
下一篇: CodeForces - 1561E Bottom-Tier Reversals ( 构造 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值