ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

来自学长的馈赠2

2022-07-22 08:09:03  阅读:120  来源: 互联网

标签:来自 int sum 学长 read mod 馈赠 Mod define


T1.随

考虑到一种错误的做法 求一次期望的m次方

问题在于双模数 导致了分数直接取模造成的数值丢失

所以考虑维护每个剩余系的数的个数

可以想到用矩阵快速幂维护

复杂度$mod^3\log{m}$

发现矩阵快速幂会无用的遍历很多次

考虑仔细魔改一个快速幂

两个数组互相滚

复杂度$mod^2\log{m}$

#include<bits/stdc++.h>
#define Re register int
#define Sa Sakura
#define _ putchar(' ')
#define el putchar('\n')
#define maxn 1010
#define int long long
#define Mod 1000000007

using namespace std;

inline int read(){
    int x=0,f=0,c=getchar();
    while(!isdigit(c)) f|=c=='-',c=getchar();
    while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return f?-x:x;
} 

inline void ot(int x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) ot(x/10);putchar(x%10|48);
}

int n,m,mod,ans1,ans2;
int cnt[2][maxn],now,anscnt[maxn],pre[maxn];

inline void mul(){
    for(Re i=0;i<mod;i++) cnt[now][i]=0;
    for(Re i=0;i<mod;i++)
        for(Re j=0;j<mod;j++)
            cnt[now][i*j%mod]=(cnt[now][i*j%mod]+cnt[now^1][i]*cnt[now^1][j]%Mod)%Mod;
//    ot(777);for(Re i=0;i<mod;i++) ot(cnt[now][i]),_;el;
}

inline void mulans(){
    for(Re i=0;i<mod;i++) pre[i]=anscnt[i],anscnt[i]=0;
    for(Re i=0;i<mod;i++) 
        for(Re j=0;j<mod;j++)
            anscnt[i*j%mod]+=pre[i]*cnt[now][j]%Mod,anscnt[i*j%mod]%=Mod;
//    for(Re i=0;i<mod;i++) ot(anscnt[i]),_;el;
}

void expow(){
    int d=m;
    while(d){
        if(d&1) mulans();
        now^=1;
        mul();
        d>>=1;
    }
}

inline int qpow(int x,int d=Mod-2){
    int an=1;
    while(d){
        if(d&1) an=an*x%Mod;
        x=x*x%Mod;
        d>>=1;
    }
    return an;
}

main(){
    n=read(),m=read(),mod=read();
    for(Re i=1;i<=n;i++) cnt[now][read()%mod]++;
    anscnt[1]=1;
    expow();
    for(Re i=1;i<mod;i++) ans1+=anscnt[i]*i,ans1%=Mod;
    ans2=qpow(n,m);
    ans1=ans1*qpow(ans2)%Mod;
    ot(ans1);
}
View Code

 

T2.单

二次扫描加换跟

对于opt0:

暴力求出点1的b 再dfs转移

设以一个点x为根的子树和为sum(x)

则b[fa]-sum(x)+(sum(1)-sum(x))=b[x]

对于opt1:

如果将其视为无根树 对于没一个点x都$\sum_{b[v}-b[x]}$

标签:来自,int,sum,学长,read,mod,馈赠,Mod,define
来源: https://www.cnblogs.com/Sakura-Lu/p/16504276.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有