首页 > 其他分享 >小郭的矩形

小郭的矩形

时间:2025-01-20 20:59:28浏览次数:1  
标签:begin 2P sum times choose ans 矩形

小郭的矩形

——洋葱式推式子+拆组合数递推式子+\({0\choose 0}\) 不能拆成 \({-1\choose 0}+{-1\choose -1}\)的特判

题目描述

\[f(i,j)=\begin{cases}p\times f(i-1,j)+q\times (i,j-1)+c&&i\geq1,j\geq1\\a_i&&i\geq1,j=0\\b_j&&i=0,j\geq1\\0&&i=j=0\end{cases} \]

\[ans=\sum_{i=0}^n\sum_{j=0}^nh^{i(n+1)+j}f(i,j) \]

求 \(ans\) 对 \(998244353\) 取模的结果。

题解

分别考虑 \(a_i,b_i,c\) 对中心区域的贡献

\(a_i\) 的贡献

\(P=p\times h^{n+1},Q=q\times h,a_i\times h^{i(n+1)}\to a_i\)

形如:

\[\begin{bmatrix} 1&Q&Q^2&Q^3\\ &QP&Q^2P&Q^3P\\ &QP^2&Q^2P^2&Q^3P^2 \end{bmatrix} \]

所以贡献为:

\[ans=\sum_{x=1}^na_x(1+Q\sum_{i=0}^{n-x}\sum_{j=0}^{n-1}Q^iP^j{i+j\choose i}) \]

令 \(f(x)=\sum_{i=0}^{x}Q^i\sum_{j=1}^{i-1}P^j{i+j\choose i}\),则 \(ans=\sum_{i=0}^na_x(1+Q\times f(n-x))\)

令 \(g(x)=\sum_{j=0}^{n-1}P^j{x+j\choose j}\),则 \(f(x)=\sum_{i=0}^x Q^ig(i)\)

因为:

\[\begin{aligned} g(x)&=\sum_{i=0}^{n-1}P^i{x+i\choose i}\\ &=\sum_{i=0}^{n-1}P^i({x+i-1\choose i}+{x+i-1\choose i-1})\\ &=\sum_{i=0}^{n-1}P^i{x+i-1\choose i}+P\sum_{i=0}^{n-2}P^i{x+i\choose i}\\ &=g(x-1)+Pg(x)-P^n{x+n-1\choose n-1}\\ \end{aligned} \]

所以:\(g(x-1)=(1-P)g(x)+P^n{x+n-1\choose n-1}\)。

于是可以 \(\mathcal O(n)\) 求解。

\(b_i\) 的贡献

\(b_i\leftarrow b_i\times h^i\)

形如:

\[\begin{bmatrix} 1&&\\ P&QP&Q^2P\\ P^2&QP^2&Q^2P^2\\ P^3&QP^3&Q^2P^3 \end{bmatrix} \]

所以贡献为:

\[ans=\sum_{x=1}^nb_x(1+P\sum_{i=0}^{n-1}\sum_{j=0}^{n-x}Q^iP^j{i+j\choose i}) \]

令 \(ans=\sum_{x=1}^nb_x(1+f(n-x)),f(x)=\sum_{j=0}^{n-x}P^jg(j),g(x)=\sum_{i=0}^{n-1}Q^i{i+x\choose i}\)

\[\begin{aligned} g(x)&=\sum_{i=0}^{n-1}Q^i{i+x\choose i}\\ &=\sum_{i=0}^{n-1}Q^i{i+x-1\choose i}+Q\sum_{i=0}^{n-2}Q^i{i+x\choose i}\\ &=g(x-1)+Qg(x)-Q^n{x+n-1\choose n-1} \end{aligned} \]

所以 \(g(x-1)=(1-Q)g(x)+Q^n{x+n-1\choose n-1}\),可以 \(\mathcal O(n)\) 求解。

\(c\) 的贡献

\[ans=\sum_{x=1}^n\sum_{y=1}^nh^{x(n+1)+y}(\sum_{i=0}^{n-x}\sum_{j=0}^{n-y}P^iQ^j{i+j\choose i}) \]

标签:begin,2P,sum,times,choose,ans,矩形
From: https://www.cnblogs.com/lupengheyyds/p/18682511

相关文章

  • 使用canvas画出一个矩形
    在HTML5中,<canvas>元素可以用于在网页上绘制图形。以下是一个简单的示例,展示如何使用JavaScript和<canvas>元素来绘制一个矩形:<!DOCTYPEhtml><html><body><canvasid="myCanvas"width="500"height="500"style="border:1pxsolid#d3d3d3......
  • 最大矩形(单调栈)
    题目链接:https://leetcode.cn/problems/maximal-rectangle/description/题意:给定一个只有0和1的矩阵,试求只包含1的长方形的最大面积思路:每行将矩阵压缩成一个高度数组,转化为求矩形最大面积classSolution{public:intmaximalRectangle(vector<vector<char>>&matrix)......
  • Opencv查找、绘制轮廓、圆形矩形轮廓和近似轮廓
    查找、绘制轮廓、圆形矩形轮廓和近似轮廓目录查找、绘制轮廓、圆形矩形轮廓和近似轮廓1轮廓查找和绘制1.1轮廓查找1.1.1函数和参数1.1.2返回值1.2轮廓绘制1.2.1函数和参数1.3步骤1.4实际测试绘制轮廓2绘制近似轮廓2.1函数和参数2.2查找特定轮廓2.3近似轮......
  • 柱状图中最大的矩形(单调递增栈)
    给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例1:输入:heights=[2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为10示例2:输入:heights=[2,4]输出:4代码思想:进栈......
  • leetcode热题100(84. 柱状图中最大的矩形)c++
    链接:84.柱状图中最大的矩形-力扣(LeetCode)给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例1:输入:heights=[2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为10示......
  • 使用 OpenCV 绘制线条和矩形
    OpenCV是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是OpenCV中常见的操作。在本篇文章中,我们将介绍如何使用OpenCV在图像上绘制线条和矩形。绘制线条在OpenCV中,可以使用cv2.line()函数来绘制直线......
  • LeetCode题练习与总结:构造矩形--492
    一、题目描述作为一位web开发者,懂得怎样去规划一个页面的尺寸是很重要的。所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为L和宽度为W且满足以下要求的矩形的页面。要求:你设计的矩形页面必须等于给定的目标面积。宽度 W 不应大于长度 L ,换言之,要求 L>......
  • 84. 柱状图中最大的矩形
    题目链接解题思路:单调栈,以i位置为高度(宽),最长能有多长,其实就是找离i最近的,小于i的位置,其实就是单调栈代码classSolution:deflargestRectangleArea(self,heights:List[int])->int:#使用单调栈栈底到栈顶小到大stack=[]an......
  • vue-canvas-创建矩形框对指定区域的点数据进行坐标变换
    demo简介读取两个csv文件(geo数据和drawing数据)绘制散点图使用矩形框选中范围内的数据(只选中drawing数据)拖动矩形框或reshape矩形框,同时,矩形框内的数据点坐标也相应变换核心代码介绍1template设置了工具栏和画布作为两个核心组件工具栏包含”绘制矩形框”,“删除矩......
  • 关于矩形旋转,拖拽,拉伸
    总结:用svg和<rect/>无法同时实现三个效果,如果不实现拖拽效果,只实现旋转和拉伸可以采用和transform实现因为,拖拽会导致拖拽中心的偏移导致无法计算新的旋转中心。如果要同时实现这三个效果只能使用<polygon/>在旋转时候,直接根据旋转角度计算四个点的位置。在拉伸时候,计算拉伸的......