ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AGC040F Two Pieces 解题报告

2022-02-19 19:01:27  阅读:197  来源: 互联网

标签:直线 AGC040F Two Pieces 棋子 坐标 格路 操作


AGC040F Two Pieces 解题报告:

题意

数轴上有两个棋子,初始都在 \(0\) 位置,进行 \(n\) 次操作,每次将一个棋子移动一步或者是把靠后的棋子移到靠前的棋子的位置,两个棋子无法区分,求最后两个棋子分别到 \(A,B\) 的方案数。

\(1\leqslant n\leqslant 10^7\)。

分析

orz p_b_p_b。

不妨令 \(1\) 为坐标较大的棋子,\(2\) 为另一个,令 \(A\geqslant B\)。

把 \(2\) 的坐标和 \(1\) 的坐标作为数对,看作二维平面上的一个点。我们画出直线 \(y=x\),那么让 \(1\) 走一步就是向右(记为操作 \(1\)),让 \(2\) 走一步就是向上(记为操作 \(2\)),让 \(2\) 跳到 \(2\) 就是跳到直线上(记为操作 \(3\)),且操作 \(2\) 不能碰触直线,最后要到达 \((A,B)\)。

操作 \(3\) 次数为 \(0\) 的时候很容易处理,类似卡特兰数折线法即可。

我们发现跳到直线上很难处理,我们将操作 \(3\) 转化成将直线移到当前位置上。记最后一次操作的坐标为 \((x_0,y_0)\),那么我们的终点就应该是 \((A,B-(x_0-y_0))\)。

但是还是很难考虑,我们考虑在确定了 \((x_0-y_0)\) 以及行走出来的格路之后,将操作 \(3\) 插入操作序列。观察可以得到,对于让直线变为 \(y=x-k\) 的操作 \(3\),它的插入位置一定只能是这个直线与格路的最后一个交点,于是插板法计算即可。

复杂度 \(O(n)\)。

代码

标签:直线,AGC040F,Two,Pieces,棋子,坐标,格路,操作
来源: https://www.cnblogs.com/xiaoziyao/p/15913372.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有