CSP-S考前各种idea题解乱堆

Posted xingmi-weiyouni

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSP-S考前各种idea题解乱堆相关的知识,希望对你有一定的参考价值。

快要考试了我还是这么菜。

已经没有心思维护我的博客了。开一篇博文吧。可能会记得很乱。

这也许是我OI生涯的最后一篇博文了??

肯定很长很长。

不可能的。谁知道什么时候我心态恢复就把上面两句话删掉开始在博客里各种胡咧咧了。

 


 

  • 「数列」题解:exgcd

  窝栽了。说真的我看出来$exgcd$了。也写出来了。但是不会用是硬伤。

  $exgcd$主要用来解二元一次方程$ax+by=gcd(a,b)$的一组特解。根据这一组特解我们可以推广到$ax+by=c$中。根据裴蜀定理,当且仅当$gcd(a,b)|c$时,方程$ax+by=c$有解。

    $exgcd$证明:

      对于方程$ax+by=gcd(a,b)$,令$a=b,b=a%b$,则有$b*x+a%b*y=gcd(b,a%b)$,

      又$gcd(a,b)=gcd(b,a%b)$,所以可得$a*x+b*y=b*x+a%b*b=b*x+(a-a/b*b)*y=a*y+b*(x-a/b*y)$

      得证。

    代码实现:

int exgcd(rint a,rint b,rint &x,rint &y)
{
	if(!b)
	{
		x=1;y=0;
		return a;
	}
	rint res=exgcd(b,a%b,x,y);
	rint t=x;x=y;y=t-a/b*x;
	return res;
}

   关于数列这道题,我们需要运用$exgcd$先行解出一组特解。我们最终的目的是使得$abs(x)+abs(y)$最小,我们假设令$a<b$,那么答案一定在$x$取得正数最小值或负数最大值时取得。如果$a>b$,$swap$后再进行解决。

 

以上是关于CSP-S考前各种idea题解乱堆的主要内容,如果未能解决你的问题,请参考以下文章

CSP-S考前整理合集

CSP-S 2019 游记

CSP-S2 2019 游记

CSP-S2019题解

[CSP-S模拟测试60]题解

CSP-S模拟测试69 题解