---恢复内容开始---
这输入法有毒哇。(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,也都能听懂。