题解 数列 及exgcd总结】的更多相关文章

传送门 自闭了--考场上exgcd打错然后对着屏幕自闭了一个小时不知道它为什么解得不对 开始恶补: 对于方程 \(a*x+b*y=c\) ,就等价于 \(a*x \equiv c\pmod{b}\) 首先它有解的条件是 \(c \mid gcd(a, b)\) 然后exgcd可以用来求一组 \(x, y\) 满足 \(a*x+b*y=gcd(a, b)\) 所以把解出来的 \(x, y\) 除gcd再乘上c就可以得到一组解 然后在 \(gcd(a, b)=1\) 的条件下解集为 \((a+k*b…
快要考试了我还是这么菜. 已经没有心思维护我的博客了.开一篇博文吧.可能会记得很乱. 这也许是我OI生涯的最后一篇博文了?? 肯定很长很长. 不可能的.谁知道什么时候我心态恢复就把上面两句话删掉开始在博客里各种胡咧咧了. 好,我心态恢复了.我要写日记了hhh 「$idea$」维护凸包 临考前才学必定致命. 主要因为昨天考了一套题,T1是凸包.%%%$OOO$李超线段树怒切T1. 我要澄清一下,关于$OOO$大神在李超线段树的学习笔记中提到本人, 本人对此严正声明:我不会李超线段树.我只是颓废,大…
刚刚改完题,才有时间发题解 传送门 T1 exgcd裸题 对a,b跑exgcd,答案就是x*c/gcd(a,b),y*c/gcd(a,b) 不合法的情况:当且仅当c%gcd(a,b)!=0 代码 T2 一看就是BFS 但是在打vis标记的时候我们遇到了麻烦 于是我们就想到了康托展开 用康托展开的数值记录遍历的状态 最后记录方案时就直接用一个链表倒序输出就好了 代码 T3 二分平均数 判断是否有一段的min(前缀)+min(后缀)<0 代码 T4 f(n)=phi(n)这很好判断 g(n)=n …
推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n​\) 顺序杀掉 \(n​\) 条巨龙,每条巨龙拥有一个初始的生命值 \(a_i​\).同时每条巨龙拥有恢复能力,当其使用恢复能力时,它的生命值就会每次增加 \(p_i​\),直至生命值非负.只有在攻击结束后且当生命值恰好为 \(0​\) 时它才会死去. 游戏开始时玩家拥有 \(m\) 把攻击力已知的剑,每次面对巨龙时,玩家只…
[HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<...<a2n-1,所有的偶数项满足a2<a4<...<a2n: (3)任意相邻的两项a2i-1与a2i(1<=i<=n)满足奇数项小于偶数项,即:a2i-1<a2i. 现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列.…
https://www.lydsy.com/JudgeOnline/problem.php?id=1500 https://www.luogu.org/problemnew/show/P2042#sub 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 太神啦太神啦,我也不会做,我也是copycat的啊. https://www.luogu.org/blog/IAmHellWord/solution-p2042 直接看上面这位神…
看样子分块题应该做的还不够. 题目描述 设计一个数据结构. 给定一个正整数数列 \(a_0, a_1, \ldots , a_{n-1}\),你需要支持以下两种操作: MODIFY id x: 将 \(a_{\mathrm{id}}\) 修改为 \(x\). QUERY x: 求最小的整数 \(p(0 \leq p < n)\),使得 \(\gcd(a_0, a_1, ..., a_p) \cdot \operatorname{XOR}(a_0, a_1, ..., a_p) = x\). 其中…
前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题常规方法(当目标序列号<32时适用 评判标准:运行时间<1.00s) #include <iostream> using namespace std; long Fib(int); int main() { ; cin >> n; cout << Fib(n)…
https://www.luogu.org/problem/P3986 很久很久以前,我好像写过exgcd,但是我已经忘了: 洛谷上搜EXGCD搜不到,要搜(扩展欧几里得) 这道题就是ax+by=k,其中ab为斐波那契数列里面相邻的两项: a+b=k ;a+2b=k;2a+3b=k,3a+5b=k; 我们求解ax+by=k; 当x最小时,y最大,答案就是y/a向上取整: 因为y=(k-ax)/b; {设此时的x为x0,则满足x=x0+tb,同理满足y=y0+ta,显然t+1就是此时的答案贡献,…
题目描述 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间加法,单点查值. 输入格式 第一行输入一个数字\(n\). 第二行输入\(n\)个数字,第\(i\)个数字为\(a_{i}\),以空格隔开. 接下来输入\(n\)行询问,每行输入四个数字\(opt\).\(l\).\(r\).\(c\),以空格隔开. 若\(opt = 0\),表示将位于\([l, r]\)的之间的数字都加\(c\). 若\(opt = 1\),表示询问\(a_{r}\)的值(\(l\)和\(c\)忽略).…
题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(Fib_i = \frac{\sqrt5}{5}[(\frac{1+\sqrt5}{2})^i-(\frac{1-\sqrt5}{2})^i]\),因为取模是个质数,我们可以用二次剩余定理得到\(\sqrt5 \mod 1e9+9 = 383008016\),然后就可以得到\(\frac{\sqrt5…
https://www.luogu.org/problemnew/show/P1962(题目传送) n的范围很大,显然用普通O(N)的递推求F(n)铁定超时了.这里介绍一种用矩阵快速幂实现的解法: 首先普及一下矩阵乘法: 一个m*q的m行q列的矩阵A*一个q*n的q行n列的矩阵B得到一个m*n的m行n列的矩阵AB,则有: 通俗的讲,就是新矩阵第i行j列的数等于第一个矩阵第i行的q个数分别乘第二个矩阵的第j列的q个数并把它们加起来的和.注意,矩阵乘法满足结合律和分配律,但不满足交换律. 我们可以把…
面试题9:斐波那契数列及其变形(跳台阶.矩形覆盖) 提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160 参与人数:7267  时间限制:1秒  空间限制:32768K 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项 Fibonacci(int n). 分析: 用递归会TLE,因为有不少地方进行了重复计算,改为循环即可解决(迭代法…
题意:找出无需数列中位数(偶数为两个中位数平均数向下取整) 思路:用nth_element(a + first,a + k,a+ end + 1)找出中位数,复杂度一般为O(n).这个STL能将 [ a + first,a+ end + 1)数组中第k小的数字放在a + k这个位置上,并且k前都比他小,后面都比他大.向下取整应该用 >>1,不要用”/2”  “/2”是向零取整. 代码: #include<set> #include<map> #include<st…
对于区间查询的问题,提供一种思路: 莫队. 莫队是处理区间问题的乱搞神器,尤其是对于离线查询问题,当然也可以做在线查询,比如带修莫队. 对于有的题,莫队是乱搞骗分,而在某些地方,莫队是正解. 这道题来说,可以当做是萌新初学莫队的一个板子,而且莫队也好理 解.线段树树状数组这类也可以做,但是相比莫队而言麻烦些.(个 人见解,不喜勿喷.谢谢) 1st.关于莫队的思想: 先明白一点,莫队可以理解成: 优雅的暴力. 暴力算法几乎人人都会,所以莫队理解起来好理解. 如果让你暴力的话呢? 我们用一个cnt[…
POJ 2115:http://poj.org/problem?id=2115 思路 设循环T次 则要满足A≡(B+CT)(mod 2k) 可得 A=B+CT+m*2k 移项得C*T+2k*m=B-A (因为要满足B大于A)即是Exgcd的标准式子了 代码 #include<iostream> #include<cstdio> using namespace std; #define ll long long ll A,B,C,T,k; int gcd(ll a,ll b) { i…
洛谷P2421:https://www.luogu.org/problemnew/show/P2421 思路 从洞的最大编号开始增大枚举答案 对于每一个枚举的ans要满足Ci+k*Pi≡Cj+k*Pj(mod ans)的k ,都要k>min(L[i],L[j])  因为这个ans一定要满足在一个野人死之前可以满足条件 根据上式可以推出Ci+k*Pi=Cj+k*Pj+m*ans   移项得k*(Pi-Pj)+m*ans=Cj-Ci 即可用Exgcd求解此式子 代码 #include<iostre…
洛谷P1516:https://www.luogu.org/problemnew/show/P1516 思路: 设两只青蛙跳了T步 则A的坐标为X+mT   B的坐标为Y+nT 要使他们相遇 则满足:X+mT-(Y+nT)=L*t   (t为整数) 即可推得:(n-m)*T+L*t=X-Y   由此可得 a*x+b*y=c a1=a/gcd(n-m,L)   b1=b/gcd(n-m,L)   c1=c/gcd(n-m,L)   用exgcd求解上述公式得出一个解x,但这并不一定是最后的解 若(…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). Input 数据的第一行是一个T,表示有T组数据.每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9). Output 对应每组数据输出(A/B)%9973. Sample…
说起来这是今天第三道卡特兰数了... 楼上的几篇题解好像都是直接看出这是卡特兰数,所以我就写一下为什么这道题可以用卡特兰数吧. 考察这样相邻的两项:\(a_{2i-1}\)与\(a_{2i}\),根据题目的第二条原则显然有\(a_{2i-1}<a_{2i}\). 而根据第一条原则又有奇数是递增的. 所以有\(a_1<a_3<...<a_{2i-1}<a_{2i}\). 这个时候可以联想到这道经典的题目. 我们可以将奇数项看为入栈,偶数项看为出栈. 发现和入栈次数必须大于出栈次…
更好的阅读体验 Portal Portal1: LibreOJ Description 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间加法,单点查值. Input 第一行输入一个数字\(n\). 第二行输入\(n\)个数字,第\(i\)个数字为\(a_i\),以空格隔开. 接下来输入\(n\)行询问,每行输入四个数字\(opt\).\(l\).\(r\).\(c\),以空格隔开. 若\(\texttt{opt = 0}\),表示将位于\([l,r]\)的之间的数字都加\(c\)…
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请你求出 f(n) mod 1000000007 的值. 输入格式 ·第 1 行:一个整数 n 输出格式 第 1 行: f(n) mod 1000000007 的值 输入输出样例 输入 #1 复制 5 输出 #1 复制 5 输入 #2 复制 10 输出 #2 复制 55 说明/提示 对于 60% 的数…
每日一题 day25 打卡 Analysis dp[i][j]=dp[i-1][j-1]*(i-j)+dp[i-1][j]*(j+1); 其中i和j是表示前i个数中有j个小于号,j<=i-1 要在长度为i的数列中插入一个数,那么共有i+1个位置可以插入(第一个位置最后一个位置和中间的i-1个位置).由于插入的数字大于之前所有数,那么在原串中是小于号的位置插入这个数会多出来一个大于号,小于号数量则不变,如果在大于号位置插入会多一个小于号,而插在头位置也多一个大于,末位置多一个小于,总计,使小于号数…
可食用的题目链接 题解: 有题目得:这个题有巧做法而不是暴力模拟.废话 这个题看着像一道dp,因为可以由前一种(数据更小的推出数据更大的)推出后一种. 我们设已经得到了n-1个数的总方法(1~n-1),然后根据这个我们要推出1~n的方法, 于是我们考虑把新加入的一个数n枚举其插入位置, 因为每插入一个数,它一定比前面的任何数都大(从小到大) 如果插入到最左边,会造成新的序列比原来多一个大于号,如果插入到最右边,会造成新的序列比原来多一个小于号. (注意是这个数插入到符号的位置) 如果插入到大于号…
M斐波那契数列 此题对数学基础要求较高 来源矩阵乘法_百度百科 一个m*n的矩阵是一个由m行n列元素排成的矩形阵列.矩阵里的元素可以是数字符号或者数学式. 形如[acbd][abcd]的数表称为二阶矩阵,其中a,b,c,d称为这个矩阵的元素. 形如 [x1x2][x1x2] 的有序对称为列向量 设 A=[acbd]A=[abcd] B=[x1x2]B=[x1x2] 则C=[ax1+bx2ax2+bx1]C=[ax1+bx2ax2+bx1] 称为二阶矩阵A与平面向量B的乘积,记为AB=C 更一般的…
先看题目: Description 小X 看到堆成山的数列作业十分头疼,希望聪明的你来帮帮他.考虑数列A=[A1,A2,...,An],定义变换f(A,k)=[A2,A3,,,,.Ak,A1,Ak+2,Ak+3,,,,A2k,Ak+1,...],也就是把a 分段,每段k 个(最后如果不足k 个,全部分到新的一段里,见样例),然后将每段的第一个移动到该段的最后一个. 现在,小 X想知道 f (f (f (f ([1,2,3,⋯,n],2),3),⋯),n)的结果.   Input 输入一行包含一个…
题面:https://www.cnblogs.com/Juve/articles/11767225.html 数列: 简化题意:已知a,b,c,求满足$a*x+b*y=c$的$x+y$最小值 然后ex_gcd硬刚就好了,若c为负,则取abs 如果我们设a<b,最优决策点就是x的最小正整数解和最大负整数解 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #…
题目链接:https://loj.ac/problem/6279 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,询问区间内小于某个值 \(x\) 的前驱(比其小的最大元素). 输入格式 第一行输入一个数字 \(n\). 第二行输入 \(n\) 个数字,第 \(i\) 个数字为 \(a_i\),以空格隔开. 接下来输入 \(n\) 行询问,每行输入四个数字 \(opt\).\(l\).\(r\).\(c\),以空格隔开. 若 \(opt=0\),表示将位于…
题目链接:https://loj.ac/problem/6278 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,询问区间内小于某个值 \(x\) 的元素个数. 输入格式 第一行输入一个数字 \(n\). 第二行输入 \(n\) 个数字,第 \(i\) 个数字为 \(a_i\),以空格隔开. 接下来输入 \(n\) 行询问,每行输入四个数字 \(opt\).\(l\).\(r\).\(c\),以空格隔开. 若 \(opt=0\),表示将位于 \([l,r]…
题目链接:https://loj.ac/problem/6277 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,单点查值. 输入格式 第一行输入一个数字 \(n\). 第二行输入 \(n\) 个数字,第 \(i\) 个数字为 \(a_i\),以空格隔开. 接下来输入 \(n\) 行询问,每行输入四个数字 \(opt\).\(l\).\(r\).\(c\),以空格隔开. 若 \(opt=0\),表示将位于 \([l,r]\) 之间的数字都加 \(c\).…