首页 > 代码库 > 长沙集训day7

长沙集训day7

---恢复内容开始---

     这输入法有毒哇。(XF刚刚笔记本卡了,没有保存,还得在打QAQ)

    已经来着一个星期了,这星期的集训又开始了,直接进入正题

    t1:

    给你一个长度为n的序列,让你求出abs(a[i]-i)的最小值和。你可以对数列做一次操作,使得数列所有的数往前移动一个,第一项变为第n项。看到这道题想了一会,暴力分是很好拿的,但是优化没有想出来,害怕后面的分拿不到,所以就先打了一个30分的暴力。就是将原序列的长度扩大一倍,使a[i+n]=a[i],这样直接往后扫就可以了,不用考虑操作完后的数列了,所以直接依次求出序列的最小值就可以了。

    t2:

    给你n个点,每个点的度,让你求出有多少种组成无向图的情况。当时直接略过这道题了,没有理解懂什么意思。(这输入法真的搞笑)

    先说t3:

    给了一个奇奇怪怪的公式,我LFY的电脑我还不会截屏QAQ,公式就先不站了,回来不上。这道题又和莫比乌斯函数有关,上星期考过一次莫比乌斯反演。当时考完之后还查了查,今天就又考了。

    他也给出了莫比乌斯函数的性质:

    (1)μ(1) = 1

    (2)当 n 存在平方因子时,μ(n) = 0

    (3)当 n 是奇数个不同素数之积时,μ(n) = ?1

    (4)当 n 是偶数个不同素数之积时,μ(n) = 1

    为防止拿不到分,现给出前 10 个自然数的 μ 值:{1, ?1, ?1, 0, ?1, 1, ?1, 0, 0, 1}

    然后就可以求出后面项的莫比乌斯函数,可以先求1-10000的素数,然后在判断1-10000中每个函数的因数,如果有平方因子的话就为0(比方说:18的一个因子为9,9为平方数,所以18有平方因子)然后照着性质敲就好了。

    然后直接暴力求出函数的答案就好了。暴力30分。

    (暴力出奇迹)

    然后今天就拿到了60分。  

    然后今天又查了查莫比乌斯函数前n项的公式:

    m[1]=1;

    for(int i=1;i<=n;i++)

    {

      for(int j=2*i;j<=n;j+=i)

      {

        m[j]-=m[i];

      }

    }

 

    下午讲了讲DP入门的知识,和一些我们OJ上有的题,又理解理解了DP这个东西。因为毕竟学过DP,也都能听懂。

 

长沙集训day7