数学
文章平均质量分 58
天翼之城*
这个作者很懒,什么都没留下…
展开
-
Codeforces 1637 D. Yet Another Minimization Problem —— 数学,dp
This way题意:给你一个长度为n的a数组和b数组,你每次可以选择一个位置i,交换a[i],b[i]。最终要使得∑i=1n∑j=i+1n(a[i]+a[j])2+∑i=1n∑j=i+1n(b[i]+b[j])2\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}(a[i]+a[j])^2+\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}(b[i]+b[j])^2i=1∑nj=i+1∑n(a[i]+a[j])2+i=1∑n原创 2022-02-22 08:44:43 · 530 阅读 · 0 评论 -
Codeforces 1629 F2. Game on Sum (Hard Version) —— 杨辉三角,暴力,找规律
This way题意:你手上有一个数字,一开始是0,每次可以选择[0,k]中任意一个实数。然后由对手决定加还是减去这个数字。总共n轮,并且对手至少要有m轮加上你手中的数字。你希望数字尽可能大,对手希望数字尽可能小。如果你们双方都做出最优抉择,问数字最大是多少。题解:有了上题的基础就比较好做了。观察数据往往能给出思路,看到是1e6,就说明有暴力可能,否则不就给出1e9了吗。画一下图:假设下面红点是要求的值,我们将它所对应的关系画出来:看到这个右上斜的这里,1,3,6,10是否有点眼熟原创 2022-02-11 22:39:38 · 7847 阅读 · 0 评论 -
Codeforces 1634 F. Fibonacci Additions —— 斐波那契数列加,想法
This way题意:给你长度为n的数组a和数组b,每次会有一个操作:x l r如果x是A表示在数组a上进行操作,否则是bl r表示将区间[l,r]的数一一对应加上斐波那契数列[1,r-l+1]的数。问你最后a和b是否相等。题解:斐波那契数列加的题目之前好像做到过?447E吧,那个是使用到了斐波那契的性质,有点忘了到时候回去再看看。这道题首先想到的就是把b减到a上,然后就只用在一个数组上,每次查看是否全为0即可了。然后该怎么办呢,用线段树该怎么做我想了一会想不太到,于是更改思路:设f原创 2022-02-09 16:09:30 · 584 阅读 · 0 评论 -
Codeforces 1550 D. Excellent Arrays —— 组合数,枚举
This way题意:称序列a好,当这个序列满足以下条件:∀i a[i]!=i令F(a)为a序列中i,j的对数满足a[i]+a[j]=i+j称一个序列a非常棒,当序列a满足以下条件:1.a序列好2.∀i l<=a[i]<=r3.F(a)是所有满足条件的a序列中的最大值问你有多少a序列非常棒题解: 首先我们可以知道,F(a)满足时,a[i]=i+x,a[j]=j-x需要得到满足。那么显然,F(a)最大时,对于a序列来说一半的位置原创 2021-07-25 11:55:25 · 287 阅读 · 1 评论 -
Codeforces 1546 D. AquaMoon and Chess —— 组合数学,一点点想法
This way题意:给你一个01串s,你每次可以做一个操作如果s[i]=1:1.如果i+2<=n且s[i+2]=0且s[i+1]=1,那么可以将s[i]的1移到s[i+2]2.如果i-1>=1且s[i-2]=0且s[i-1]=1,那么可以将s[i]的1移到s[i-2]问你经过若干次操作之后串s有多少种可能性。题解:可以发现1个连续的1不能动,2个连续的1可以乱移,3个连续的1会有一个被留下来,四个连续的1又可以乱移。那么有一个规律,偶数个连续的1就可以一起或者分开乱跑。那么该怎原创 2021-07-12 21:20:08 · 313 阅读 · 0 评论 -
2020牛客暑期多校训练营(第五场)C Easy —— 生成函数,有丶东西
This way题意:题解:推荐题解:This way大致方法就是将a和b的贡献列出来,然后会得到一个n*m的贡献矩阵,消掉之后会得到这样一个东西:(1−x)∗S=xy∗G(y)∗G(xy)(1-x)*S=xy*G(y)*G(xy)(1−x)∗S=xy∗G(y)∗G(xy)然后再乘上G(x)G(x)G(x)→S=xy∗G(x)∗G(y)∗G(xy)\rightarrow S=xy*G(x)*G(y)*G(xy)→S=xy∗G(x)∗G(y)∗G(xy)那么Sk=xkyk∗Gk(x)∗Gk原创 2021-01-19 17:12:00 · 201 阅读 · 0 评论 -
Hdu 1521 排列组合 —— 指数型母函数
This way题意:题解:普通母函数是求组合问题,指数型母函数是求排列问题。那么这道题的函数为:∏i=1n(1+x+x22!+...+xnn!)\prod\limits_{i=1}^{n}(1+x+\frac{x^2}{2!}+...+\frac{x^n}{n!})i=1∏n(1+x+2!x2+...+n!xn)其实和普通母函数差不多#include<bits/stdc++.h>using namespace std;#define ll long long con原创 2021-01-15 16:48:05 · 142 阅读 · 0 评论 -
Hdu 1171 Big Event in HDU —— 母函数
This way题意:n个种类的物品,每种物品都有价值和数量,让你将这些物品分成两堆使得他们的价值差最小。题解:很明显背包就能做,但是还是用母函数做一下,并且它题目很坑就是说不一定是-1结束输入,而是<=0#include<bits/stdc++.h>using namespace std;#define ll long long const int N=500005;bool dp[2][N];int a[N],v[N];int main(){ int原创 2021-01-15 16:19:09 · 140 阅读 · 0 评论 -
洛谷 P2000 拯救世界 —— 生成函数+NTT
This way题意:有n个石头,每个石头都可以变成五行当中的一种,问你有多少种变换方法满足下列要求题解:生成函数在特殊情况下可以转换成组合数公式,推荐一篇文章:This way第一个条件:必须是6的倍数,那么就是11−x6\frac{1}{1-x^6}1−x61第二个条件就是1−x101−x\frac{1-x^{10}}{1-x}1−x1−x10其实每个条件都是独立的,那么满足所有条件就相当于将所有条件乘起来:11−x5=Cn+44\frac{1}{1-x^5}=C_{n+4}^41原创 2021-01-15 15:13:29 · 358 阅读 · 0 评论 -
Hdu 1085 Holding Bin-Laden Captive! —— 母函数
This way题意:给你一些硬币,价值为1,2,5,问你它们的和中第一个不能构造出来的数是多少题解:最高价值为8000,那么将上限调到这,依旧是个模板题∏i=1n(1+iv[i]+i2v[i]+...)\prod\limits_{i=1}^{n}(1+i^{v[i]}+i^{2v[i]}+...)i=1∏n(1+iv[i]+i2v[i]+...)#include<bits/stdc++.h>using namespace std;#define ll long long原创 2021-01-14 14:37:18 · 90 阅读 · 0 评论 -
Hdu 1028 Ignatius and the Princess III —— 母函数
This way题意:无数个1~n,问你构成n有多少种方法题解:按照以往应该往DP方向去想,但是这是母函数的场。我们可以直接构造出函数然后O(1)查询∏i=1n(1+ii+i2i+...)\prod\limits_{i=1}^{n}(1+i^{i}+i^{2i}+...)i=1∏n(1+ii+i2i+...)#include<bits/stdc++.h>using namespace std;#define ll long long const int N=125;l原创 2021-01-14 14:21:21 · 106 阅读 · 0 评论 -
Hdu 2082 找单词 —— 母函数
This way题意:题解:很明显是一道DP,但是现在在学生成函数了就得用生成函数的思维去做题,每种字符可以取0~a[i]个,那么算式可以写成∏i=126(1+xi+x2i+...+xa[i]∗i)\prod\limits_{i=1}^{26}(1+x^{i}+x^{2i}+...+x^{a[i]*i})i=1∏26(1+xi+x2i+...+xa[i]∗i)x的次方就代表价值,系数表示情况数于是可以暴力了#include<bits/stdc++.h>using names原创 2021-01-14 10:38:33 · 101 阅读 · 0 评论 -
P4720 【模板】扩展卢卡斯
This way题意:题解:存个模板,借用了别人的代码,好长学不来#include<bits/stdc++.h>using namespace std;#define ll long longll qpow(ll a,ll b,ll mod){ll ans=1;for(;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;return ans;}ll qpow(ll a,ll b){ll ans=1;for(;b;b>>原创 2021-01-10 15:44:03 · 72 阅读 · 0 评论 -
Hdu 3037 Saving Beans —— 卢卡斯定理
This way题意:n个不同盒子放不超过m个相同物品有多少种放法题解:卢卡斯定理模板,但是我预处理逆元就T了…离谱。可以增加一个盒子表示不放,这样子这个问题就变成了n+1个盒子放m个物品的方法数,也就是Cn+mnC_{n+m}^{n}Cn+mn#include<bits/stdc++.h>using namespace std;const int N=1e5+5;#define ll long long ll mod;ll qpow(ll a,ll b){ll an原创 2021-01-09 15:50:05 · 97 阅读 · 0 评论 -
Hdu 4569 Special equations —— 高次同余方程式
This way题意:让你求多项式f(x)=anxn+an−1xn−1+...+a0f(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_0f(x)=anxn+an−1xn−1+...+a0,f(x)%(p∗p)=0f(x)\%(p*p)=0f(x)%(p∗p)=0的一个解题解:This way高次同余方程式的两个性质性质一:求解数可将p分成多个互质的数的乘积,对每个数求解数再将解数相乘得到p的解数性质二:对于%(pr)=0\%(p^r)=0%(pr)=0的方程式的解,可以原创 2021-01-09 14:23:53 · 184 阅读 · 1 评论 -
Hdu 2815 Mod Tree —— exbsgs模板
This way题意:告诉你k,p,n,问你Kx%P=NK^x\%P=NKx%P=N题解:被坑了…他这个不是同余N而是等于N,也就是说N>=P时无解。证明就不详细说了,大致就是利用同余定理,将a与p约到gcd为1的时候,最终的式子是ax−k∗ak∑i=1kgcdi=b∑i=1kgcd%mod∑i=1kgcdia^{x-k}*\frac{a^k}{\sum\limits_{i=1}^{k}gcd_i} = \frac{b}{\sum\limits_{i=1}^{k}gcd} \% \fra原创 2021-01-07 19:05:58 · 119 阅读 · 0 评论 -
Hdu 4344 Mark the Rope —— 大数分解,Pollard-Rho模板
This way题意:问你一个大数有多少个质因子,并且求唯一分解之后每个质因子的最高次的和题解:Pollard-Rho模板,用到了Miller_Rabin判素数。#include<bits/stdc++.h>using namespace std;#define ll long long ll add(ll a,ll b,ll mod){ if(a+b>=mod)return a+b-mod; return a+b;}ll qmul(ll a,ll原创 2021-01-07 16:20:42 · 104 阅读 · 0 评论 -
Codeforces 447 E. DZY Loves Fibonacci Numbers —— 斐波那契数列性质+线段树
This way题意:对于不同的数没有办法直接区间加,那么要了解斐波那契数列的一个性质:假设a[n]=a[n-1]+a[n-2]那么a[n]=f[n-1]*a[2]+f[n-2]*a[1](f表示斐波那契数列)∑i−1na[i]=a[n+2]−a[2]\sum\limits_{i-1}^{n}a[i]=a[n+2]-a[2]i−1∑na[i]=a[n+2]−a[2]那么更新的时候,我们只需要知道每个位置的a[1]和a[2]即可,而这个也是可以快速地得到的,求区间和可以直接用上面的方法#in原创 2021-01-07 15:18:46 · 172 阅读 · 0 评论 -
Poj 2417 Discrete Logging —— BSGS模板
This way题意:告诉你B,N,P,让你求最小的L使得题解:BSGS模板,大致意思是将L变成ax+b的形式,定下x之后,式子就变成了这样:Bb==NB−ax(modP)B^b==NB^{-ax}(mod P)Bb==NB−ax(modP)那么我们只需要先枚举b(0<=b<=x),将所有值都记下来,再枚举a,同时查询即可。这道题如果将x设为P\sqrt{P}P的话会T,或许是我写的教丑,在经过一系列的尝试之后,确定x在2e3~3e3这个范围最优。#include<原创 2021-01-02 20:43:56 · 109 阅读 · 0 评论 -
Codeforces 1244 C. The Football Season —— 扩展欧几里得
This way题意:让你求dx+wy+0z=p,[0<=x,y,z&&x+y+z=n]题解:首先很明显可以暴力,因为d和w都是<=1e5的,所以枚举1e5次必然能出答案。但是我们在学习新知识,所以必然不能这样子去简单地暴力,要搞一点数学的东西进去。那么很明显是扩展欧几里得,但是裸的板子会有负数的情况,所以我们需要先贪心地放赢得局,因为这样子前两种局数会达到最小,然后剩下的再贪心地放平局,此时会有放不完的情况,那么这个剩余值我们就拿来做扩欧即可。此时还是会有负数的原创 2021-01-02 19:44:34 · 161 阅读 · 0 评论 -
Codeforces 7 C. Line —— 扩展欧几里得模板,从零开始の数论
This way题意:问你ax+by+c=0的解题解:终究还是被迫踏上数论这条道路了,或许以后还会踏上图论的道路…我其实也大致算个数论小白了,在这个把月能够提升到什么程度也说不好,但是学习进度也可为新手做个参考了。那么这道题是扩展欧几里得的模板了,求出a和b的gcd之后判断c是否为gcd的倍数,如果是乘上商即可。#include<bits/stdc++.h>using namespace std;#define ll long long ll g;void ex_gcd原创 2021-01-02 18:49:10 · 151 阅读 · 0 评论 -
15届黑龙江省赛 K. Keeping A Secret —— 组合数学
This way题意:给你n个数让你构造一棵树,每个数都有两个限制:di表示这个点的深度为dixi表示这个点在层序遍历的时候要在第xi位及之前问你有多少种构造方法题解:首先可以肯定的是需要一层一层地考虑。那么对于第i层,我们先考虑有多少种排列方法,这个只需要将这一层的x从小到大排序然后乘上min(xi-sum,size)-j即可sum表示之前层有多少数了,size表示这一层最多有多少个数然后再算出相邻两层的连线方式,拿样例的第三层来举例:首先是第一个点,那么此时第二层的连线情况是这样原创 2020-12-14 12:57:27 · 461 阅读 · 0 评论 -
Codeforces 1042 E. Vasya and Magic Matrix —— 概率DP,Sorting
This way题意:给你一个矩阵,每个位置上都会有一个值,从一个点开始,每次会往值比他小的地方等概率地走,问你到最终走的距离(欧几里得距离)的长度期望是多少题解:很明显这是一张有向无环图,但是边数太多,所以不能建图。直接sort一下就知道有多少数比当前的数小了。从后往前做,到了当前点的时候,如果for一遍去转移的话那将是O((nm)2)O((nm)^2)O((nm)2)的时间复杂度,所以它必可以记录一个值进行转移我们要求的东西是这个样子的:(假设起始位置经过排序之后是p)E(p)=∑i=1&原创 2020-08-24 21:09:45 · 152 阅读 · 0 评论 -
2020牛客暑期多校训练营(第九场)C Groundhog and Gaming Time —— 期望+线段树,长度平方期望的求法,有丶东西
This way题意:现在有n个线段,每个线段有1/2的可能会被选中,问你被选中的这些线段的交集的长度的平方的期望是多少。题解:对于求这种期望我是一窍不通,理解别人的代码也理解了好久才恍恍惚惚好像知道了的样子,难受首先我们可以将所有的线段分成一个一个小段,然后去做每个小段的贡献:比如说这三个黑色线段我们就可以将他们分成一个一个红色的小段。然后对于每一个小段p的贡献:假设有x个线段包含这个小段=∣p∣∗∑i∈xsegmenti∗2x−12n∗∣segmenti∣=|p|*\sum\lim原创 2020-08-12 10:27:22 · 276 阅读 · 1 评论 -
Hdu 6821 Set2 —— dp,优化
This way题意:现在有一个1~n的排列,每次会先拿走最小的数,然后再拿走随机k个数,知道留下小于等于k个数为止,问你每个数被留下的概率。题解:首先这道题的范围只有5000,那么可以考虑O(n2)O(n^2)O(n2)的时间复杂度。dp[i][j]表示剩下i个数的时候,当前的数是第j个的时候的概率。那么它是从dp[i-k-1]推过来的,假设它删掉了j前面的L个数,j后面的k-L个数,到达了dp[i-k-1][j-L-1],但是很明显这样我们正着推是无法得出来每个数的概率的,因此要反着推,从原创 2020-08-06 09:08:50 · 293 阅读 · 0 评论 -
2020牛客暑期多校训练营(第八场)E Enigmatic Partition —— 找规律,差分上差分,有丶东西
This way题意:定义f(x)为构造x的合法序列的情况数,定义合法序列:f(x)=a1+a2+…+am(m的大小是你自己构造的&m>=3),并且满足以下条件然后每次问你l~r中所有数的f的和是多少题解:其实就相当于要预处理每个数有多少种构造情况。此时画一张图就会发现:(假设m的长度为7)也就是最下面的数的长度为5(10~14),然后12~15的长度为3,这样子左边+2,右边+1地去增加。那么很明显我们每次枚举m,然后再枚举差分的长度的话,时间复杂度会炸,此时就需要用原创 2020-08-03 21:36:14 · 1262 阅读 · 2 评论 -
Codeforces 992 E. Nastya and King-Shamans —— 2个线段树,求前缀和+求第一个大于等于val的位置,斐波那契数列的性质
This way题意:给你一个长度为n的数组,q次操作,每次操作给你x v 将位置x的值改成v并且在每一次操作之后你要输出一个位置x(1<=x<=n||x=-1)使得a[x]=∑i=0x−1a[i]\sum_{i=0}^{x-1}a[i]∑i=0x−1a[i]。如果不存在输出-1.题解:首先考虑是数据结构,那么我们怎么维护某个值和它前缀和的关系?想了一会发现不知道怎么维护,那么改变策略。此时我发现,有可能的位置的序列一定是一个a值单调递增上升的序列。那么根据斐波那契数列的性质,我原创 2020-08-02 19:10:13 · 213 阅读 · 0 评论 -
COCI HASH —— 扩展欧几里得
应该能进题意:定义哈希如下:现在问你长度为n的字符串中,有多少哈希值%2m\%2^m%2m是k题解:那么这道题就是个水题,我一眼就看出来是折半暴力,26526^5265只有1e7种情况,然后从前往后dfs一下,之后再从后往前,因为它有点特殊,不能像普通哈希一样乘,可以推出来:x∗33x*33x∗33^y=ky=ky=k=>x=k=>x=k=>x=k^y∗inv[x]y*inv[x]y∗inv[x]然后inv[33]用exgcd求。#include<bits/原创 2020-07-16 20:35:08 · 140 阅读 · 0 评论 -
Exercise —— 唯一分解定理+无限背包
应该能进题意:现在有1~n这么多数按照顺序排好,然后有一个置换顺序,使得这些数在这个置换顺序的情况下经过k步正好回到原始状态。问你所有不同的k的和题解:我们可以发现它其实就是包含一些长度的循环,这些循环的长度的和是n,然后k就是这个循环的lcm,就像样例中,它是一个长度为3和一个长度为2的循环,所以步数是6.那么我们就知道了,其实他就是唯一分解定理中每个质数幂次之后的和为n,k就是他们的积。于是就可以构造一个每个质数都有无限个的无限背包,然后枚举每个质数的每个幂次将其加入背包中即可。#incl原创 2020-07-11 19:53:04 · 184 阅读 · 0 评论 -
Codeforces 1371 A,B,C,D,E1,E2题解
This way题意:定义f(x):你一开始有x颗糖,现在有n个敌人,每个敌人有ai颗糖,你要去按照一个排列去战胜这些敌人,当你的糖的数量>=ai的时候,你就可以战胜他,赢了之后你就可以得到一颗糖。f(x)表示可以赢的排序的数量。找到一些x使得f(x)不是p的倍数。题解:它写个hard version,我以为很难啊,没想到原来是个水题?绝了首先按照a从大到小排序,然后赢过第ai的最少需要的x是ai-i+1.那么从所有中取个最大值然后我们可以知道,你每次能赢过的人的数量不能大于等于p,因原创 2020-07-02 12:47:59 · 346 阅读 · 0 评论 -
Codeforces 1342 E Placing Rooks —— 第二类斯特林数
This way题意:现在有一个n*n的棋盘,n个棋子,你要放置这些棋子使得他们满足以下条件:每个格子都能被某个棋子打到共有k对棋子能够打到对方如果一个格子所处的这一行或这一列有一个棋子,那么这个格子就能被打到。两个棋子处在同一行或同一列并且它们之间没有别的棋子,这两个棋子被视为可以能够打到对方。题解:这个就是第二类斯特林数的模板题,第一类斯特林数:你有n个不同棋子,要让他构成m个环,有多少种组成方法环是有序的,你每次要么让一个棋子自成一格环,要么让它加入某个棋子的左边,于是可以写出这原创 2020-07-01 20:03:51 · 254 阅读 · 0 评论 -
Codeforces 1194 F Crossword Expert —— 概率dp+组合数
This way题意:给你n个问题解决所需要的时间,你会从1-n的去解决问题,每个问题有12\frac{1}{2}21的可能在aia_iai时间解决,剩下的可能在ai+1a_i+1ai+1的时间解决。为问你最终解决问题数量的期望。题解:做出有点水平的概率题目有点小激动。因为它是依次过来解决这些问题的,那么做法应该是枚举每个位置,看看做到这里的概率是多少。假设到第i个位置为止,最小的...原创 2020-02-19 16:04:53 · 150 阅读 · 0 评论 -
Codeforces 1204 E Natasha, Sasha and the Prefix Sums —— 组合,转换为路径问题
This way题意:现在有n个1,m个-1,让你构造n+m长度的串,将所有情况的最大前缀和相加。问你答案是多少。题解:这道题也就是相当于转换成一个n*m的网格,横轴代表-1,纵轴代表1.那么我们枚举最大前缀的值i,也就是问你有多少路线从(0,0)走到(m,n)的同时正好穿过y=x+i这条线。那么可以将(0,0)这个点照y=x+i这条线做个对折,到(-i,i)。那么这个点到(n,m)点的...原创 2020-02-16 21:09:05 · 233 阅读 · 0 评论 -
Codeforces 1227 F2 Wrong Answer on test 233 (Hard Version) —— 组合,想法
This way题意:给你1个长度为n的目标串,现在你自己有一个长度为n的串,你在每一个位置都可以放1-k中的某一个数,这样子放法就是knk^nkn种。假设当前你的串与目标串位置一一对应之后相同的地方有a个,把你的串向右循环移位一位之后你的串与目标串位置一一对应之后相同的地方有b个,问你有多少种情况a<b题解:首先,我的串第i位只与目标串的第i位与第i+1位有关系,此时可以分为4种...原创 2020-02-11 10:19:44 · 542 阅读 · 0 评论 -
Codeforces 1264 C Beautiful Mirrors with queries —— 线段树+期望
This way题意:有n张镜子,每个镜子有pi/100的概率说你好看。现在第一个镜子是检查点你从第一个镜子问到第n个镜子,如果第i个镜子说你好看,你就问第i+1个镜子,否则就找到小于等于i的检查点,从那开始继续。每次都会告诉你一个值,如果那里没有检查点就将那里设为检查点,否则就将那里的检查点取消。问你从1到n问的次数的期望是多少。题解:期望的题目一看就不想做。。我们考虑第i个点...原创 2020-01-25 19:59:12 · 231 阅读 · 0 评论 -
Codeforces 626 E Simple Skewness —— 二分
This way题意:给你一些数,让你找出几个数,使得这些数的平均数-中位数最大,问你这些数是哪些。题解:奇数:奇数的话,中位数便非常好确定了,那么我们肯定是让排序后中位数右边的数尽可能大,并且左边的数也尽可能大,这样的话平均数也会变大。如果我们要枚举每个数是中位数的话,再枚举长度就是n^2的时间复杂度了,所以要优化。但是我们发现,随着长度变长,新加进来的两个数的和一定是越来越小的:...原创 2019-11-22 11:37:40 · 207 阅读 · 0 评论 -
2019牛客暑期多校训练营(第五场)C generator 2 —— BSGS
This way题意:给你一个长度为n的序列求法:xi=a∗xi−1+bx_i=a*x_{i-1}+bxi=a∗xi−1+b现在问你xi%p=bx_i\%p=bxi%p=b的最小的i是多少。i<=1e18&&a,b,p<=1e9&&p is a primei&...原创 2019-08-06 19:20:54 · 368 阅读 · 0 评论 -
不互质的中国剩余定理模板
#include<bits/stdc++.h>using namespace std;#define ll long longconst int N=105;ll lcm,m[N],a[N],up;int flag;ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} ll...原创 2019-08-18 20:42:02 · 239 阅读 · 0 评论 -
2019牛客暑期多校训练营(第七场)I Chessboard —— 组合,n个球放入m个盒子的情况数
This way题意:你可以选择k*k的矩形,每个格子中填的数要大于等于m,并且要保证(所有不同行不同列的数之和)的所有情况相同。题解:不会,,按照它的题解做吧,我这里就翻译一下将一些细节说的明白一点首先,这里是设一个函数,那么为什么因为每个格子至少要放m个,那么不同行不同列的个数是k,所以变成了T-k*m那么对于要满足“不同行不同列的数之和”全相等这个条件,对于任意一行中,每个...原创 2019-08-20 14:07:21 · 194 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场)I KM and M —— 类欧几里得算法
This way题意:题解:对于第i位的贡献就是∑k=1nk∗M2i−2∗k∗m2i+1\sum^{n}_{k=1}\frac{k*M}{2^i}-2*\frac{k*m}{2^{i+1}}∑k=1n2ik∗M−2∗2i+1k∗m这个式子表示的是在k*M的时候,第i位是1还是0那么我们只需要算它的前缀和再乘上2i2^i2i即可,解决这种问题使用的是类欧几里得算法:注意会爆l...原创 2019-08-20 18:53:10 · 204 阅读 · 0 评论