BZOJ1856【SCOI2010】字符串题解(组合数学+Catalan数)

大模型分布式训练技术(DP、DDP和FSDP) 本文主要讲解了大模型分布式训练并行技术的数据并行,并以Pytorch为主线讲解了DP、DDP、FSDP三种不同的数据并行方案。单进程多线程模式,由于锁的机制导致线程间同步存在瓶颈。使用普通的All-Reduce机制,所有的卡需要将梯度同步给0号节点,并由0号节点平均梯度后反向传播,再分发给所有其他节点,意味着0号节点负载很重。由于第二点的原因,导致0号GPU通讯成本是随着GPU数量的上升而线性上升的。不支持多机多卡。目前,由于性能问题,DP基本不用了。 阅读详情

题目:BZOJ1856.
题目大意:给定 n n n个 1 1 1和 m m m个 − 1 -1 −1,求组成的序列每一个前缀和都不小于 0 0 0的方案数.
1 ≤ n , m ≤ 1 0 6 1\leq n,m\leq 10^6 1≤n,m≤106.

首先这个问题很像经典的Catalan数问题,但这里 1 1 1和 − 1 -1 −1的个数是不等的.

上面的Catalan数链接的问题4拓展已经把这个问题讲的很清楚了这里不讲了,直接上结论答案为:
{ 0 n &lt; m C n + m m − C n + m m − 1 n ≥ m \left\{\begin{matrix} 0&amp;n&lt;m\\ C_{n+m}^{m}-C_{n+m}^{m-1}&amp;n\geq m \end{matrix}\right. {0Cn+mm​−Cn+mm−1​​n<mn≥m​

有了结论后就是一道简单题了.

时间复杂度 O ( n ) O(n) O(n).

代码如下:

#include<bits/stdc++.h>
  using namespace std;
 
#define Abigail inline void
typedef long long LL;

const int N=1000000,mod=20100403;

int add(int a,int b){return a+b>=mod?a+b-mod:a+b;}
int sub(int a,int b){return a-b<0?a-b+mod:a-b;}
int mul(int a,int b){return (LL)a*b%mod;}
int sqr(int a){return a=(LL)a*a%mod;}
void sadd(int &a,int b){a=add(a,b);}
void ssub(int &a,int b){a=sub(a,b);}
void smul(int &a,int b){a=mul(a,b);}
void ssqr(int &a){a=sqr(a);}

int n,m,inv[N*2+9];

void Pre_inv(int n){
  inv[1]=1;
  for (int i=2;i<=n+m;++i) inv[i]=mul(mod-mod/i,inv[mod%i]);
}

int Calc_C(int n,int m){
  int res=1;
  for (int i=1;i<=n;++i) smul(res,i);
  for (int i=1;i<=m;++i) smul(res,inv[i]);
  for (int i=1;i<=n-m;++i) smul(res,inv[i]);
  return res;
}

Abigail into(){
  scanf("%d%d",&n,&m);
}

Abigail work(){
  Pre_inv(n);
}

Abigail outo(){
  printf("%d\n",n<m?0:sub(Calc_C(n+m,m),Calc_C(n+m,m-1)));
}

int main(){
  into();
  work();
  outo();
  return 0;
}
V.A 1856 最新版 Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。 Visual.Assist的最新版(2011年的新版)(Visual Assist X 1856),全面支持VS2010,当然VS2005和VS2008一样可以使用哦,本文档包括破解文件及破解方法。 原版下载地址: http://www.wholetomato.com/binaries/VA_X_Setup1856.exe VS2010的需要额外注意,补丁需要放到 Visual Studio 2010的Visual Assist的安装位置下运行 Windows7 C:\Users\帐户名\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\Whole Tomato Software\Visual Assist X\10.6.1856.0 XP: C:\Documents and Settings\用户名\Local Settings\Application Data\Microsoft\VisualStudio\10.0\Extensions\Whole Tomato Software\Visual Assist X\10.6.1856.0 立即下载

相关推荐

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 503

基本DP模型总结

前言. 这篇文章不贴代码,只是介绍最基本的DP模型,基本都是列出基本的状态和转移方程或者导向另一篇题解. 约定: 1.记[a][a][a]表示判定表达式aaa是否为真,为真则值为111,为假则值为000. 2.记fakfa_{k}fak​表示kkk的父亲节点,sonkson_{k}sonk​表示kkk的子节点集合. 3.记f↔gf\leftrightarrow gf↔g表示状态ggg会对状态fff...

hzk_cpp的博客 5830

Cryptomatte For Nuke的安装

进入官网https://github.com/Psyop/Cryptomatte,下载文件代码。 将Cryptomatte/nuke里的文件内容复制粘贴到 .nuke文件夹内。 在我们复制粘贴的内容中可以看到两个文件。 同时,我们进入nuke的下载目录,打开plugins文件夹,看到和插件中一样python文件——init.py和menu.py。 我们将Cryptomatte里的init.py和menu.py里的python代码复制粘贴到Nuke/plugins下的init...

qq_41627587的博客 9061

DP模型——状态机模型

文章目录状态机大盗阿福一般做法状态表示状态计算Code状态机状态表示状态计算Code股票买卖Ⅳ状态表示状态计算Code股票买卖Ⅴ状态表示状态计算Code设计密码 状态机 简单来说:把点扩成一个过程 点是指某一个特定的状态,过程是指可能存在多个点之间相互转化 在进行的过程中除了定义好状态,还要对状态入口和出口进行思考确定 最后总结一句:绝了! 大盗阿福 有 N 加店铺,不能抢劫两家相邻的店铺,问抢劫的最大价值是多少 一般做法 状态表示 f[i] 表示前 i 家的最大收益 状态计算 对于第 i 家店铺来说,

INGg__的博客 1875

保姆级教程:手把手教你下载和配置Waymo自动驾驶数据集(附百度网盘链接)

本文提供了一份详细的Waymo自动驾驶数据集下载和配置指南,特别针对国内研究者优化了数据获取方案,包括百度网盘链接和Google Cloud CLI配置。文章还涵盖了环境配置、数据处理实战、可视化分析以及进阶技巧,帮助开发者高效利用这一业界黄金标准数据集进行自动驾驶研究。

weixin_42651281的博客 360

零基础也能懂的Arduino ESP32离线安装包图文教程

手把手教你完成Arduino ESP32离线安装包的配置,无需联网也能快速搭建开发环境,适合初学者和网络受限用户,轻松实现arduino esp32离线安装包部署。

weixin_36213081的博客 2669

DP模型——状压DP

文章目录前言什么是状态压缩DP基本例题1前期思考状态表示状态计算Code基本例题2前期思考状态表示状态计算Code扩展棋盘式小国王思考状态表示状态计算Code玉米田前期思考状态表示状态计算Code炮兵阵地思考状态表示状态计算Code 前言 第200篇blog!好耶! 在之前发过一个状压DP的初步blog,现在回看发现上面写的好像不是那么的好,现在在这篇把状压再写出来。当然,是按照模型的关系循序渐进的 什么是状态压缩DP 我的理解就是用K进制来表示所要解决问题的状态的K种状态 基本例题1 蒙德里安的梦想

INGg__的博客 1466

【MATLAB代码】UKF组合导航例程,15维状态量、3维观测量。附完整的代码,有中文注释、误差输出图像

摘要 本文提出了一种基于15维误差状态模型的UKF组合导航算法,实现了三维位置、速度和姿态的高精度估计。算法采用严格的误差状态模型,包含位置(3)、速度(3)、姿态(3)、陀螺偏差(3)和加速度计偏差(3)共15个状态量,通过3维GNSS位置观测进行校正。仿真结果表明,相比纯IMU积分,UKF算法能有效抑制误差积累,显著提高导航精度。文中提供了完整的MATLAB源代码,可直接运行并复现三维轨迹对比、位置/速度曲线及误差分析结果。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 311

PyTorch数据并行(DP/DDP)浅析

带你一键运行数据并行(DP/DDP)代码

Milkha的博客 2519

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。

盼小辉丶的博客 1万+

Vue2 - 最新实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)vue天地图切换视图显示改成卫星风格,切换地图图层完整代码

vue2,nuxt2,天地图,视图,卫星,地图类型切换,vue天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,vue中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue安装集成天地图详细示例源码,切换地图的样式,在天地图中如何将地图的类型随意更换,提供多种视图模式用户自由点击更换,VUE引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue2卫星天地图,能改地图的显示方式,图层类型

🏆 前端领域优质创作者 4140

DP(背包模型)

有 N 件物品和一个容量是 V 的背包。每件物品。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。第一行两个整数,N,V 用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi用空格隔开,分别表示第 i 件物品的体积和价值。输出一个整数,表示最大价值。

m0_74015873的博客 786

TPAMI 2025 | 从缺失碎片到杰作:基于上下文自适应扩散的图像修复

图像修复是一项具有挑战性的任务,尤其是要确保生成的内容与图像的现有部分无缝融合。尽管最近的扩散模型展现出了潜力,但它们在保持已知区域和未知(缺失)区域之间的连贯性方面常常遇到困难。这个问题源于扩散过程中缺乏明确的空间和语义对齐,导致生成的内容无法与原始图像平滑融合。此外,扩散模型通常依赖全局学习分布,而非局部特征,这使得生成的图像部分与现有图像部分之间存在不一致。在这项工作中,作者提出了ConFill,这是一个新颖的框架,引入了上下文自适应差异(CAD)模型,以确保在整个扩散过程中,已知区域和未知区域的中间

小白学视觉 239

【BZOJ1856】[SCOI2010]字符串(组合数学)

【BZOJ1856】[SCOI2010]字符串(组合数学) 题面 BZOJ 洛谷 题解 把放一个\(1\)看做在平面直角坐标系上沿着\(x\)正半轴走一步,放一个\(0\)看做往\(y\)轴正半轴走一步,最终的重点就是\((n,m)\),限制就是不能到达\(y=x\)上面的部分。 发现这样不好算,我们先考虑一个另外的情况,即\(y=x\)这个部分也不能到达。 首先发现如果第一步走到了\((0,1)...

weixin_30342827的博客 116

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

1856: [Scoi2010]字符串(Catalan数)

1856: [Scoi2010]字符串 Time Limit:5 SecMemory Limit:64 MBSubmit:2117Solved:1211[Submit][Status][Discuss] Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不...

weixin_30480651的博客 108

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[组合数学 卡特兰数] BZOJ 1856 [Scoi2010]字符串

终于弄懂了Catalan数的另类通项的实际意义了:http://www.cnblogs.com/jianglangcaijin/p/3443689.html #include #include #include #include #define P 20100403 using namespace std; typedef long long ll; const int N=20000

雯舞 548

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[BZOJ1856][SCOI2010]字符串

即为Catalan数的定义 输出Catalan第n项即可/************************************************************** Problem: 1856 User: di4CoveRy Language: C++ Result: Accepted Time:800 ms Memory:1288

HbFS- 628

【bzoj1856】[Scoi2010]字符串 Catalan数

题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗? 输入 输入数据是一行,包括2个数字n和m 输出 输出数据是一行,包括1个数字,表示满足要求的字符串数目,这个数可能会很大,...

weixin_30951231的博客 88

BZOJ 1856: [Scoi2010]字符串 [Catalan数]

1856: [Scoi2010]字符串 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1418  Solved: 790[Submit][Status][Discuss] Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能...

weixin_33972649的博客 101

BZOJ 1856 [Scoi2010]字符串 - 卡特兰数推广

先mark一下别人博客: 卡特兰数的推导(用01序列推导的,过于抽象): http://blog.youkuaiyun.com/youwuwei2012/article/details/38904839 (好像还有严格证明,只不过看不懂QAQ) 然后以这种推导的思路进行更易于理解的证明: referring to: http://www.cnblogs.com/jianglangcai

x_1023的博客 547

bzoj1856: [Scoi2010]字符串

题意:  找出由n个1,m个0组成的字符串,且任意前几个字符中1的个数不能比0的个数少,询问满足要求的字符串个数。  解析:  很容易转化一下题意,转化到从一个矩阵的左下走到右上不能过某条线的方案数。  如果我们把1看作走一个向量(1,1),0看作走一个向量(1,-1),那么我们可以把模型转化成从(0,0)走到(n+m,n-m)并且不能经过直线y=-1的方案数。  暂且不考虑限制答案显然

lethalboy 485

BZOJ1856 [Scoi2010]字符串(洛谷P1641)

Catalan 逆元 BZOJ题目传送门 洛谷题目传送门 发现这个生成字符串的定义很像Catalan,那么就和Catalan一样搞。 首先总方案数=Cmn+m=Cn+mm=C_{n+m}^m,关键是求不满足条件的方案数。 Catalan在坐标系中不能超过x轴,而这道题则不能超过直线y=−1y=−1y=-1,终点为(n+m,n−m)(n+m,n−m)(n+m,n-m)。可以发现从(0,0)...

forezxl的博客 267

dp经典模型

1.最长上升子序列 什么是最长上升子序列?就是从一排数据中,按顺序(不必连续)的选出最长的上升序列 用dp[i]表示以i为结尾的最长上升子序列。 状态方程dp[i] = max(dp[j] , 0) + 1 j满足小于i 例题:

AI_xue 1768

bzoj 1856(组合数学)

传送门 题解:答案是C(n+m,m)-C(n+m,m-1)。C(n+m,m)是总方案数(n+m个位置中选m个放0),然后减去不合法的。将题意转化为:从一个矩阵的左下走到右上不能经过某条水平直线的方案数。 如果我们把1看作一个向量(1,1),0看作一个向量(1,-1),那问题就转化成从(0,0)走到(n+m,n-m)不经过直线y=-1的方案数。考虑限制的话,我们看图发现经过y=-1的情况可以看作

KGV093的博客 345

DP:斐波那契数列模型

动态规划(Dynamic Programming,简称DP)是一种通过将复杂问题分解为更小的子问题来求解的算法设计技术。动态规划通常应用于有重叠子问题和最优子结构性质的问题。其基本思想是将问题分解成子问题,分别求解这些子问题,并将其结果保存起来以供后续使用,从而避免重复计算。定义子问题:将原问题分解成若干个子问题。确定状态和状态转移方程:通过递推公式或状态转移方程,确定子问题之间的关系。确定初始条件和边界条件:确定递推的起点。

2301_79969994的博客 1649
上一篇: Codeforces 526 F Pudding Monsters题解(线段树+单调栈)
下一篇: LOJ6435【PKUSC2018】星际穿越题解(贪心+倍增)
hezlik
博客等级 码龄9年 111粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值