狄利克雷卷积 【HDU5628】Clarke and math

2024-04-14 23:48

本文主要是介绍狄利克雷卷积 【HDU5628】Clarke and math,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:
这里写图片描述
给定f(1~n),求g(1~n)

题目分析:(狄利克雷卷积)
狄利克雷卷积:
这里写图片描述
狄利克雷卷积满足:交换律,结合律,分配率等性质(和乘法是一样的)。

我们设函数g(i)=1
如果k==1,则 i 的答案为: (fg)(n)=d1|nf(d1) ( f ∗ g ) ( n ) = ∑ d 1 | n f ( d 1 )
如果k==2,则 i 的答案为: ((fg)g)(n)=d1|nd2|d1f(d2) ( ( f ∗ g ) ∗ g ) ( n ) = ∑ d 1 | n ∑ d 2 | d 1 f ( d 2 )
以此类推
则最终答案为 f(gk) f ∗ ( g k )

所以只要求logk次狄利克雷卷积就可以了。
但是如果是枚举i,枚举i的约数,时间复杂度为n^2,明显接受不了。
所以我们直接枚举约数,然后枚举该约数和哪些数相乘。
这样时间复杂是nlogn的。

总时间复杂度O(nlognlogk)

代码如下:

#include <cstdio>
#define N 120000
using namespace std;
const int mod=1e9+7;
int T,n,k;
struct fun{int a[N];void make_f(){for(int i=1;i<=n;i++)scanf("%d",&a[i]);}void make_g(){for(int i=1;i<=n;i++)a[i]=1;}fun operator * (const fun &c) const{static fun z;for(int i=1;i<=n;i++) z.a[i]=0;for(int i=1;i*i<=n;i++)for(int j=i;j*i<=n;j++){z.a[i*j]+=1ll*a[i]*c.a[j]%mod,z.a[i*j]%=mod;if(i!=j) z.a[i*j]+=1ll*a[j]*c.a[i]%mod,z.a[i*j]%=mod;}return z;}void print(){printf("%d",a[1]);for(int i=2;i<=n;i++)printf(" %d",a[i]);printf("\n");}
};
void Fast_Power(fun &ans,fun a,int k)
{while(k){if(k&1) ans=ans*a;a=a*a;k>>=1;}
}
int main()
{scanf("%d",&T);while(T--){scanf("%d%d",&n,&k);fun f,g;f.make_f();g.make_g();Fast_Power(f,g,k);f.print();}return 0;
}

这篇关于狄利克雷卷积 【HDU5628】Clarke and math的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904367

相关文章

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

10400 -Game Show Math

这道题的话利用了暴力深搜,尽管给了20S,但是这样还会超时,所以就需要利用回溯进行减枝,因为是DFS,所以用一个数组vis[i][j]记录是否在状态i时候取到过j值,如果取到过的话,那么直接回溯(往后搜索已经没有意义了,之前到达这个状态的时候是无法得到结果的) 还有需要注意的地方就是题目的要求,每一步的结构都在(-32000,32000)之间,所以需要一步判断,如果在这个范围外直接回溯 最后一

Python的math库——常用数学函数全解析

文末赠免费精品编程资料~~ 一、math模块简介 math 是 Python 内置的一个标准库,它包含了许多执行复杂数学运算的函数,如三角函数、对数函数、指数函数等。 二、常用函数详解与示例 基本数学运算 math.sqrt(x): 计算平方根。 import math# 计算平方根result = math.sqrt(16)print(result) # 输出 4.0 mat

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用,卷积层也逐渐衍生出了许多变种,比较有代表性的有: 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolution ),下面分别介绍下。 1. 分组卷积 在普通的卷积操作中,一个

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

卷积神经网络(二)CIFAR100类别分类

一.数据介绍 总共一百个类,每个类有600个图像。每类500个训练图像,100个测试图像。没填图像都带有一个"精细"标签(它所属的类)核一个粗糙标签(它所属的超类)  二.API使用 用于构建CNN模型的API Conv2D:实现卷积,kernel_size,strides,padding,datafromat,'NHWC'核'NCHW' MaxPool2D:池化操作 impo

【python 走进NLP】从零开始搭建textCNN卷积神经网络模型

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 1、众所周知,tensorflow 是一个开源的机器学习框架,它的出现大大降低了机器学习的门槛,即使你没有太多的数学知识,它也可以允许你用“搭积木”的方式快速实现一个神经网络,即使没有调节太多的参数,模型的表现一般还

REMEMBERING HISTORY WITH CONVOLUTIONAL LSTM FOR ANOMALY DETECTION——利用卷积LSTM记忆历史进行异常检测

上海科技大学的文章,上海科技大学有个组一直在做这方面的工作,好文章挺多的还有数据集。 ABSTRACT 本文解决了视频中的异常检测问题,由于异常是无界的,所以异常检测是一项极具挑战性的任务。我们通过利用卷积神经网络(CNN或ConvNet)对每一帧进行外观编码,并利用卷积长期记忆(ConvLSTM)来记忆与运动信息相对应的所有过去的帧来完成这项任务。然后将ConvNet和ConvLSTM与

线性代数|机器学习-P33卷积神经网络ImageNet和卷积规则

文章目录 1. ImageNet2. 卷积计算2.1 两个多项式卷积2.2 函数卷积2.3 循环卷积 3. 周期循环矩阵和非周期循环矩阵4. 循环卷积特征值4.1 卷积计算的分解4.2 运算量4.3 二维卷积公式 5. Kronecker Product 1. ImageNet ImageNet 的论文paper链接如下:详细请直接阅读相关论文即可 通过网盘分享的文件:image