BZOJ1172 : [Balkan2007]Dream

BZOJ1172 : [Balkan2007]Dream

$\gcd(ab,k)=\gcd(\gcd(a,k)\times \gcd(b,k),k)$

设$f[i][j]$表示前$i$行,与$k$的$\gcd$为$j$的方案数,$h[i]$表示当前行选一个或两个,乘积与$k$的$\gcd$为$i$的方案数,然后DP即可。

时间复杂度$O(N(M+K))$。

 

#include<cstdio>
#define N 165
typedef long long ll;
int n,m,K,L,i,j,k,d,a[N],id[200005],g[N][N],c[N],h[N],f[205][N];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline void up(int&x,int y){x=(x+y)%L;}
int main(){
  read(n),read(m),read(K),read(L);
  for(i=1;i<=K;i++)if(K%i==0)a[++d]=i,id[i]=d;
  for(i=1;i<=d;i++)for(j=1;j<=d;j++)g[i][j]=id[gcd(1LL*a[i]*a[j],K)];
  for(f[0][1]=i=1;i<=n;i++){
    for(j=1;j<=d;j++)c[j]=h[j]=0;
    for(j=1;j<=m;j++)read(k),c[id[gcd(k,K)]]++;
    for(j=1;j<=d;j++)up(h[j],c[j]);
    if(i>1&&i<n){
      for(j=1;j<=d;j++)up(h[g[j][j]],c[j]*(c[j]-1));
      for(j=1;j<=d;j++)for(k=1;k<j;k++)up(h[g[j][k]],c[j]*c[k]*2);
    }
    for(j=1;j<=d;j++)for(k=1;k<=d;k++)up(f[i][g[j][k]],f[i-1][j]*h[k]);
  }
  return printf("%d",f[n][d]),0;
}

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109218.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python常用模块大全_python常用

    python常用模块大全_python常用mathmath.ceil(a):用来返回≥a的最小整数math.floor(a):用来返回≤a的最大整数round(a[,b])如果没有参数b,只有a,round()作用是四舍五入如果

    2022年7月28日
    1
  • coco数据集语义分割_实例分割模型

    coco数据集语义分割_实例分割模型COCO数据集格式COCO的全称是CommonObjectsinCOntext,是微软团队提供的一个可以用来进行图像识别的数据集,用于进行物体检测、分割、关键点检测、添加字幕等。JSON文件的基本格式,以实例分割为例,主要有五个部分:info、licenses、images、annotations、categories{“info”:info,”licenses”:[license],”images”:[image],”annotatio

    2022年8月23日
    7
  • 程序员法则xiazai_黑客攻略

    程序员法则xiazai_黑客攻略第九章对手  “喂,有电话拉,喂,有电话拉。”清晨很早的时候一阵手机铃声把我吵醒了。  “喂?你好,你是哪位?”我一把抓过手机憋着一肚子火尽量语气平和的问道。  “小毅你还没起来吗?我是秦谊,现在在你们楼下。”秦谊动听的声音透过手机传进我的耳朵。  “啊,是你啊,我马上下来。”三两下穿好衣服,梳洗就免了,我随便拨弄了一下头发,冲出了宿舍。  远远的我看见秦谊站在我们宿舍楼下,手上似乎还拿着东西。

    2022年9月28日
    0
  • springboot 长轮询实现

    springboot 长轮询实现springboot长轮询实现基于@EnableAsync , @Sync@SpringBootApplication@EnableAsyncpublicclassDemoApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(DemoApplication.cla…

    2022年10月14日
    0
  • 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)[通俗易懂]

    数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

    2022年1月25日
    43
  • Json内容比对_json格式解析

    Json内容比对_json格式解析packageutil;importcom.jayway.jsonpath.Configuration;importcom.jayway.jsonpath.JsonPath;import

    2022年8月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号