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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AMC7135_sip soc

    AMC7135_sip soc7.4SiamFC学习目标 目标 知道SiamFC的网络结构特点 掌握SiamFC的网络训练方式 应用 无 任意对象跟踪的问题是通过仅仅在线地学习对象外观的模型来解决,使用视频本身作为唯一的训练数据。尽管这些方法取得了成功,但他们的在线方法本质上限制了他们可以学习的模型的丰富性。需要跟踪的目标是通过起始帧的选择框给出的。框中可能是任意物体,甚至只是物体的某个部分。由于给定跟踪目标的不确定性,我们无法做到提前准备好数据,并且训练出一个.

    2022年10月1日
    0
  • bigdecimal保留最多小数位_bigdecimal四舍五入保留两位小数

    bigdecimal保留最多小数位_bigdecimal四舍五入保留两位小数整理……//1&gt;0.00或者#.00格式:小数点后两位,不足用0补足。DecimalFormatdf1=newDecimalFormat("#.00");System.out.println(df1.format(2.2));//2.20System.out.println(df1.format(2.246));//2.25//2&gt;#.#…

    2022年9月23日
    0
  • 关于oracle的备份 导入[通俗易懂]

    关于oracle的备份 导入

    2022年1月19日
    54
  • mysql 全文索引 使用_MySql全文索引

    mysql 全文索引 使用_MySql全文索引使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXTINDEX)。全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用「分词技术「等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。在这里,我们就不追根究底其底层实现…

    2022年6月21日
    31
  • Yii框架官方指南系列52——专题:性能调整

    Yii框架官方指南系列52——专题:性能调整

    2021年8月28日
    44
  • Google Maps_Google桌面搜索

    Google Maps_Google桌面搜索GoogleBuzz从诞生那天起就跟位置服务紧密连接在了一起,我们可以在移动GoogleMaps里看到大家都在哪里发送Buzz(只要他们发送的时候让Google记录自己的位置),这个功能非常有趣,特别是在某些特殊事件发生之时,可以按照位置看到某个区域里的人们都在想什么做什么(而不是按照timeline的传统方式)。今天,Google在桌面地图服务里也开放了Buzz图层(之…

    2022年10月15日
    0

发表回复

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

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