[补题]Wannafly挑战赛22

版权声明:欢迎转载评论 https://blog.csdn.net/m0_37809890/article/details/81811811

6道题,做出1道

A-计数器

将n种给定的数相加,每种可取任意多个,问模m后有多少种结果.

参考CF 1011E,对所有数字及m取gcd后除m即可.
再引用一次裴蜀定理(才发现裴念陪,斐念匪,蔡少对不起)

若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数.
特别地,一定存在整数x,y,使ax+by=d成立。
推论:a,b互质的充要条件是存在整数x,y使ax+by=1.

证明:由裴蜀定理,在模意义下每两个数字都可以组合成它们gcd的任意倍,相当于用这个gcd表示了它们本身.重复若干次问题就转化成了用所有n个数的gcd在模m意义下表示数,与m求gcd后再除m即可.

int main(void)
{
    int n=read(),m=read(),ans = m;
    for(int i = 0;i<n;i++)
    {
        int a = read();
        ans = __gcd(ans,a);
    }
    printf("%d\n",m/ans );
    return 0;
}

B-字符路径

给一个含n个点m条边的有向无环图(允许重边,点用1到n的整数表示),每条边上有一个字符,问图上有几条路径满足路径上经过的边上的字符组成的字符串去掉空格后以大写字母开头,句号 ‘.’ 结尾,中间都是小写字母,小写字母可以为0个。

官方题解
不难设计一个含 O(1)个点的有限状态自动机,使其只接受题目所要求的字符串。
在图上递推答案,记录 f[i][j]表示在图上以 i 点结尾的路径,在自动机上对应 j 点的方案数。
时间复杂度 O(n+m)

猜你喜欢

转载自blog.csdn.net/m0_37809890/article/details/81811811
今日推荐