【洛谷P1025】【JZOJ5195】数的划分【DP】

P5195 [USACO05DEC]Knights of Ni S 这个题就是状态想好就行,每个状态除了横纵坐标,还包括一维,也就是这时手里有没有灌木,所以总的时间应该是1000×1000×2,是可以过的,9分钟把这个题过了,确实只是一道绿题的难度,然后就是一点我一直看不懂的地方,就是看题目的时候,说什么40的,如果大于40怎么怎么样,我看了看题解的输入,没有什么不同,就下手去写了,这个题目的输入样例解释是真的有问题,知识点:广度优先搜索。 阅读详情

题目大意:

题目链接:
洛谷:https://www.luogu.org/problemnew/show/P1025
JZOJ:https://jzoj.net/senior/#main/show/5195
将 n n n个弹珠分成 k k k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。


思路:

我们先来讨论一下放的方法。
为了使任意两份互不相同,那么就让第一份的珠子数量 ≥ \geq ≥第二份珠子的数量 ≥ . . . ≥ \geq...\geq ≥...≥第 k k k分珠子的数量。这样可以保证不会出现相同的方案(例如 2 , 3 , 4 2,3,4 2,3,4和 2 , 4 , 3 2,4,3 2,4,3就是相同的方案,其中至少一个会不符合要求)。
很容易想到用 f [ i ] [ j ] f[i][j] f[i][j]表示已经将 i i i个珠子分成 j j j分的方案数。为了保证 s 1 ≥ s 2 ≥ . . . ≥ s k s_1\geq s_2\geq...\geq s_k s1​≥s2​≥...≥sk​,那么就有两种方程:

  1. 下一个格子(第 i i i个格子)放入一个珠子。由于前面的每一份都至少有一个珠子,并且保证 s 1 ≥ s 2 ≥ . . . ≥ s i − 1 s_1\geq s_2\geq...\geq s_{i-1} s1​≥s2​≥...≥si−1​,所以在下一份放入一个珠子也是可以保证 s 1 ≥ s 2 ≥ . . . ≥ s i s_1\geq s_2\geq...\geq s_{i} s1​≥s2​≥...≥si​的。所以就有 f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] f[i][j]=f[i-1][j-1] f[i][j]=f[i−1][j−1]
  2. 前面的每一个格子都多放一个珠子。由于本来就有 s 1 ≥ s 2 ≥ . . . ≥ s i s_1\geq s_2\geq...\geq s_{i} s1​≥s2​≥...≥si​,那么也就必然有 s 1 + 1 ≥ s 2 + 1 ≥ . . . ≥ s i − 1 + 1 ≥ s i s_1+1\geq s_2+1\geq...\geq s_{i-1}+1\geq s_i s1​+1≥s2​+1≥...≥si−1​+1≥si​。那么方程就是 f [ i ] [ j ] = f [ i − j ] [ j ] f[i][j]=f[i-j][j] f[i][j]=f[i−j][j]

所以综合起来就是
f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] + f [ i − j ] [ j ] f[i][j]=f[i-1][j-1]+f[i-j][j] f[i][j]=f[i−1][j−1]+f[i−j][j]


代码:

洛谷:

#include <cstdio>
#include <iostream>
using namespace std;
int f[201][201],n,m;

int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++)
     f[i][1]=1;
    for (int i=2;i<=n;i++)
     for (int j=2;j<=i;j++)
      f[i][j]=f[i-1][j-1]+f[i-j][j];
    printf("%d\n",f[n][m]);
    return 0;
}

JZOJ:

#include <cstdio>
#define N 5100
#define MOD 998244353
using namespace std;
int f[N][N],n,m;

int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++)
     f[i][1]=1;
    for (int i=2;i<=n;i++)
     for (int j=2;j<=i;j++)
      f[i][j]=(f[i-1][j-1]+f[i-j][j])%MOD;
    printf("%d\n",f[n][m]);
    return 0;
}
2021.11.23 Covins 多机器人单目协同建图 跑Euroc数据集 更新 近日,一直在调试如何使用Covins跑通数据集,因为是初学者,所以很多bug出来的时候原理都不懂,只能复制——百度——尝试解决的过程。 现分享一下近日的结果以及与Covins作者帮助解答的一些问题。 使用代码行跑依次跑Euroc多数据集 这里的意思是使用作者提供的covins_examples文件夹中的euroc_examples_mh123_vigba.sh文件,这个文件是将三个Euroc数据集依次运行,跑完第一个数据集,第二个数据集运行的时候在第一个数据集生成地图的基础上继续绘制,由于我只下载了两个数据 阅读详情

相关推荐

【processing】创意编程

首先接到这个作业的时候,我是很崩溃的,我是真的不会画画QAQ,还画自己,这也太难了,于是我决定!还是祸害我爱豆吧!于是我从微博太太那里找了个图临摹 下面是太太的图 先给太太道歉!都是为了作业! 然后我画出来是这样子的 还可以!!!没有特别丑!(虽然也不是特别像吧) 但是画这个真是画死我了,下面贴上代码吧,没啥特殊的就是各种贝塞尔曲线各种圆各种线 //face stroke(70,27,11...

qq_25700571的博客 1267

Jzoj for循环(单重) 部分代码(共42题)

1002: 【入门】编程求解1+2+3+...+n #include <bits/stdc++.h> using namespace std; int n, sum; int main() { scanf("%d", &n); for(int i=1; i<=n; ++i){ sum+=i; } printf("%d", sum); return 0; } 1020: 【入门】编程求1+3+5+...+n #include <bi

ypeijasd的专栏 3329

python制作图形化小游戏_创意编程|Python的GUI简易界面设计测测你的反应力

Python的GUI简易界面设计案例测测你的反应力作为初次接触代码编程的你,是不是觉得Python程序除了“码”就是“字”即使是有趣的程序除了烧烧自己的脑,也吸引不到更多人的兴趣,用户体验值接近于0?那你可冤枉了Python,他可是人工智能界的编程语言大咖。今天这个游戏设计就先带领大家,简单体验一下,如何让Python程序图形化。一起来吧!设计我们的小游戏游戏设计思路:电脑随机出...

weixin_34214135的博客 1872

JZOJ 5782

Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路 多次询问,每次询问某两座城市最早什么时候能连通。 Input 第一行输入三个正整数n,m,q,其中q表示询问个数。 接下来q行,每行两个正整数x,y,表示询问城市x和城市y最早什么时候连通。 ...

weixin_30287169的博客 243

智能制造 | 如何快速自动生成站位表及自动与BOM校验?

一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理

vayoinfo111的博客 4942

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、计算机视觉和机器学习等领域。本文将介绍OpenCV中的一些基础功能,包括如何绘制图形、创建图像金字塔以及如何处理感兴趣区域(ROI)。

吾家有猫名探花的博客 1962

[luogu2602 ZJOI2010] 数字计数 (数位dp)

[luogu2602 ZJOI2010] 数字计数 (数位dp) 传送门 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 Input 输入文件中仅包含一行两个整数a、b,含义如上所述。 Output 输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。 Samp...

Tricksterism 223

告别手动下载!用Python脚本5分钟搞定NREL风速数据(附完整API调用代码)

本文详细介绍了如何使用Python脚本自动化获取NREL风速数据,从API密钥申请到数据保存的全流程。通过完整的API调用代码和实战技巧,帮助研究人员和开发者高效下载全球高精度风速数据,告别繁琐的手动操作,提升工作效率。

weixin_33724059的博客 297

bzoj1833

hh 1 #include<cstdio> 2 #include<cstring> 3 #include<ctime> 4 #include<cmath> 5 #include<algorithm> 6 #include<cstdlib> 7 #include<iostream>...

weixin_33778778的博客 241

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 256

【YOLO】Mask Proto分支理解

Mask Proto分支通过解耦全局原型与实例参数,在保持YOLO实时性的同时实现精准分割。其技术核心在于利用多尺度特征生成可组合的原型,结合动态系数适应不同目标形态。未来可进一步融合Transformer的注意力机制,增强对复杂场景的建模能力。

浩瀚之水的专栏 476

洛谷P2602|bzoj1833 [ZJOI2010]数字计数 数位dp

数位dp先预处理啊,然后xjb乱搞一下啊 好吧其实我还是看了一下题解。。一开始弄错了统计的方法。。于是疯狂wa 有关数位dp的文章的话,传送门:http://blog.youkuaiyun.com/wust_zzwh/article/details/52100392,当然是这位大犇写的了%%%%(虽然百度也可以找到) 题解(有抄题解嫌疑的我): //Decision's template #inclu

Dream of Decision 471

LSTM在DNA序列分析中的应用:生物信息学的探索

长短期记忆网络(LSTM)是循环神经网络(RNN)的一个变种,旨在解决RNN在长序列数据中出现的梯度消失和梯度爆炸问题。LSTM通过引入“记忆单元”和三个门(输入门、遗忘门和输出门)来有效捕捉长距离依赖关系。这使得LSTM在处理DNA序列等时间序列数据时具有优势。LSTM在DNA序列分析中展现了强大的能力,能够捕捉复杂的序列特征,并提供高效的解决方案。本文从LSTM的基本原理、DNA序列特性、模型构建、训练过程到实际应用进行了详细阐述。

斌擎科技 749

[洛谷3768]简单的数学题

题目链接:https://www.luogu.org/problemnew/show/P3768 看到\(\gcd\)我们就来套路一波,枚举因数可得 \[\sum\limits_{d=1}^nd^3\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij[\gc...

a5163273的博客 217

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【jzoj4920】【降雷皇】【动态规划】【二分答案】【数据结构】

题目大意求一个序列的最长上升子序列及方案数。解题思路首先维护一个数组,t[i]表示长度为i的最长上升子序列末尾最小是多少,这样就可以求出第一个答案。每个长度再用权值线段树维护每个末尾的方案数,转移方案数时求一下比它小的末尾方案数之和。code#include<cmath> #include<cstdio> #include<algorithm> #define LL long long #defin

inklutcuah’s blog 494

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

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

luogu2602数字计数

题目给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。(很简短的题面,难度是省选/NOI-)数位DP        (1)分情况,逐位讨论。        (2)模型:计算在[L,R]中有多少个数满足条件。        (3)套路:将问题转化为[1,R]-[1,L-1],只需回答[1,X]的询问即可。思路    1.算出[1,X]:        (1)按...

西泠 376

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

luogu2602 [ZJOI2010]数字计数 两解

1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+5; 4 long long a,b; 5 long long ansa[15],ansb[15]; 6 int tot,e[15]; 7 long long c[15],d[15]; 8 template&l...

weixin_30790841的博客 129

洛谷2602 bzoj1833 ZJOI2010 数字计数 数位dp

题目链接 题意:给你两个数aaa和bbb,让你求区间[a,b][a,b][a,b]当中0−90−90-9每一个数字出现在多少次。 题解: 这种题目应该不难看出是数位dp题目。拿到这道题的第一感觉可能会发现答案中很可能有某些数字的出现次数是一样的,再仔细考虑一下的话可以发现,假如位数确定了,那么所有iii位数中111到999的出现次数是一样的。 那么我们会想,为什么000的出现次数和别的数不...

forever_shi的博客 352

数位dp 洛谷P2602 [ZJOI2010]数字计数

https://www.luogu.org/problem/show?pid=2602 数位dp是dp的一种,一般来说这种东西至少要一个预处理数组 这种题目你只要靠自己的力量成功搞掉一道,基本上思路都是在的,和背包很像,是有模板的; 我们先弄一个f[i]表示位数位i时,所有情况中0这个数字出现的次数 注意这里的i位是可以有前导0的; 我们前导0和无前导0的情况都要算,...

weixin_30488313的博客 219

洛谷 P2606 [ZJOI2010]排列计数 解题报告

P2606 [ZJOI2010]排列计数 题目描述 称一个\(1,2,...,N\)的排列\(P_1,P_2...,P_n\)是\(Magic\)的,当且仅当对所以的\(2<=i<=N\),有\(P_i>P_{\lfloor i/2 \rfloor}\). 计算\(1,2,...N\)的排列中有多少是\(Magic\)的,答案可能很大,只能输出模\(P\)以后的值 输入输出格式 ...

weixin_30508309的博客 150

洛谷 P2602 [ZJOI2010]数字计数 数位DP

题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 输入格式 输入文件中仅包含一行两个整数a、b,含义如上所述。 输出格式 输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。 输入输出样例 输入 #1 1 99 输出 #1 9 20 20 20 20 20 20 20 20 20 说明/提示 30%的数据中,a<=b&l...

qq_44343213的博客 301

ZOJ 1025

由于顺序可以改变,所以纯贪心解决。 #include "stdio.h" #include "string.h" #include "stdlib.h" struct stick{ int u,v,num; }S[5010],stack[5010]; unsigned char vis[5010]; int top; int cmp(const void *a,const void *b){

Lostwinder的专栏 548

bzoj 1025 //1025:[SCOI2009]游戏

bzoj 1025 //1025:[SCOI2009]游戏 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1025 更多题解,详见https://blog.youkuaiyun.com/mrcrack/article/details/90228694BZOJ刷题记录 //1025:[SCOI2009]游戏 //在线测评地址https:...

mrcrack的博客 336

洛谷P2602 数字计数 数位dp

给出1≤l,r≤1e121\leq l,r \leq1e121≤l,r≤1e12的区间,询问区间中0,1,2...90,1,2...90,1,2...9这些数位总共出现的次数。 考虑前缀作差[1,r]−[1,l−1][1,r]-[1,l-1][1,r]−[1,l−1],然后从高位开始搜索,dp[pos][sum][lim][zero]dp[pos][sum][lim][zero]dp[pos][s...

qq_40859782的博客 237

【洛谷】2602: [ZJOI2010]数字计数【数位DP】

P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a、b,含义如上所述。 输出格式: 输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。 输入输出...

weixin_30649641的博客 207

洛谷 - P2602 - 数字计数 - 数位dp

https://www.luogu.org/problemnew/show/P2602 第二道数位dp,因为“数位dp都是模板题”(误),所以是从第一道的基础上面改的。 核心思想就是分类讨论,分不同情况讨论对答案的贡献。 最最重要的是,该数位取与当前位相等的时候,贡献的个数是受这个数位影响的所有数(这个写法里包括它本身),那么就用x减去与x前缀相同的“整数”再+1就可以算出来了。 其他的...

weixin_30642869的博客 221
上一篇: 【USACO2.1】解题报告
下一篇: 【JZOJ4714】公约数【数论,数学】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值