首页 > 其他分享 >蓝桥杯-波动数列

蓝桥杯-波动数列

时间:2024-05-11 11:43:49浏览次数:23  
标签:... 数列 get int 波动 蓝桥 d2 d1

观察这个数列:

1 3 0 2 -1 1 -2 …

这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。

栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢?

输入格式

共一行,包含四个整数 n,s,a,b,含义如前面所述。

输出格式

共一行,包含一个整数,表示满足条件的方案数。

由于这个数很大,请输出方案数除以 100000007 的余数。

数据范围

1≤n≤1000,
−1e9≤s≤1e9,
1≤a,b≤1e6

输入样例:

4 10 2 3

输出样例:

2

样例解释

两个满足条件的数列分别是2 4 1 3和7 4 1 -2。

题解:

化简等式:

设第一个数是x, d等于a或b)
x, x + d1, x + d1 + d2 ... (x +...+ d(n - 1)) == s
=> (n) * x + (n - 1) * d1 + (n - 2) * d2 ... 1 * d(n - 1) = s
=> x = (s - (n - 1) * d1 - (n - 2) * d2 ... 1 * d(n - 1)) / n

由于 x 只要是整数就行, 所以只要 (s - (n - 1)d1 - (n - 2)d2 ... 1xd(n - 1))是 n 的倍数就行, 也就是 s % n == ( (n - 1)d1 + (n - 2)d2 ... 1xd(n - 1) ) % n

这里有个结论: 两个整数数 a, b. 如果 a % k == b % k, 那么说明 abs(a - b)一定是n的倍数。 蓝桥杯也出一个相关的题目 -> k倍区间

dp分析

常见疑惑: 为什么是状态计算是f[i][j] = f[i - 1][j - (n - i) * a] + f[i - 1][j + (n - i)b]

  • 看到这里, 你要理解,等式左边f[i][j]中的 j是第i个选择的是a或b的序列的和对 n 取模后的余数, 这个序列里面是不包含初始值x的, 这也是为什么 i是[1,n),只循环了n - 1次, (一共n个数, 我们只需要选n - 1次)
  • 观察等式 (n - 1) * d1 + (n - 2) * d2 ... 1 * d(n - 1) % n = j 可以发现 从左往右 第 i 项(不含第i项)的系数是 (n - i), 那么前 i 项的和应该是 j - (n - i)a 或 j + (n - i)b (d是a或-b)

要理解转移这个思想, 从 i - 1, j - (n - i) * a 、 j + (n - i)b 转移到f[i][j]
ac代码

标签:...,数列,get,int,波动,蓝桥,d2,d1
From: https://www.cnblogs.com/xxctx/p/18183117

相关文章

  • Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列
    全文链接:https://tecdat.cn/?p=33885原文出处:拓端数据部落公众号本文描述了帮助客户使用马尔可夫链蒙特卡洛(MCMC)方法通过贝叶斯方法估计基本的单变量随机波动模型,就像Kim等人(1998年)所做的那样。定义模型以及从条件后验中抽取样本的函数的代码也在Python脚本中提供。  ......
  • 蓝桥杯训练第二周
    P2015二叉苹果树-洛谷|计算机科学教育新生态(luogu.com.cn)屮,一开始想当然的以为剪掉了其中一个边,其子树部分全部都会脱落,没想到剪掉一个边紧紧只是剪掉一个边,子树不会消失很明显的,我们要考虑树形$dp$,因为剪掉哪条边是不确定的,那么暴力求的话,每条边都剪或不剪,时......
  • WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
    原文链接:http://tecdat.cn/?p=5312原文出处:拓端数据部落公众号  在本文中,我们通过一个名为WinBUGS的免费贝叶斯软件,可以很容易地完成基于似然的多变量随机波动率(SV)模型的估计和比较。通过拟合每周汇率的双变量时间序列数据,多变量SV模型,包括波动率中的格兰杰因果关系,时变相关......
  • 蓝桥杯-地宫取宝
    X国王有一个地宫宝库,是n×m个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿......
  • P10429 [蓝桥杯 2024 省 B] 拔河 题解
    思路通过动态规划计算出所有连续子序列的力量值之和,并将其存储在一个数组中然后排序,遍历一遍数组,找到相邻两个力量值之和的差的绝对值的最小值,然后输出这个答案就行了。时间复杂度大概是\(O(n^2\logn)\)。来个python的代码defmin_power_diff(n,a):#计算所有连续子序列......
  • 「高精度乘法+高精度加法」P10425 [蓝桥杯 2024 省 B] R 格式 题解
    解题思路题意分析:将浮点数乘以\(2^n\);四舍五入到最接近的整数。根据题意将\(d\times2^n\)分解为\(d\times2\times2\times2\times2……\),因为\(d\)长度小于等于\(1024\),所以可以使用高精度乘法的算法来实现一个小数乘以一个大于\(0\)的整数时,小数点位数本身不会......
  • P8754 [蓝桥杯 2021 省 AB2] 完全平方数
    原题链接题解分解n的质因子,如果为奇数就补一个由于大于\(\sqrt{n}\)的质因子最多不超过一个,所以我们筛小于\(1e6\)的质数code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;vector<int>prime;vector<int>minfac(1e6+3,0);intmain(){f......
  • 蓝桥杯-蚂蚁感冒
    长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁......
  • 蓝桥杯-买不到的数目
    小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买10颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字......
  • 蓝桥杯国赛训练第一周
    P1491集合位置-洛谷|计算机科学教育新生态(luogu.com.cn)主要在于$A*$函数中估价函数,这里给出最好想也是我想出来的一种方法,也就是当黑白棋子各自都在对方的领域上,那么就可以考虑一种最小的消耗情况,也就是走一步顶两不,也就是黑白互换,那么此时所需要消耗的最小步数......