HDU 5730——Shell Necklace

题意:

一段长为i的项链有a[i]中装饰方法,问长度为n的项链有多少种装饰方式。

思路:

容易推出,dp[i]=∑dp[j]*a[i-j],(1<=j<=i-1)那么这样就刚好符合卷积的运算,这样就可以愉快地使用fft了,不过数量级在1e5,所以应该采用分治来处理,算法复杂度nlognlogn。

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;const double PI=acos(-1.0);
typedef long long ll;struct complex
{double l,r;complex(double ll=0.0,double rr=0.0){l=ll;r=rr;}complex operator +(const complex& B){return complex(l+B.l,r+B.r);}complex operator - (const complex& B){return complex(l-B.l,r-B.r);}complex operator *(const complex& B){return complex(l*B.l-r*B.r,l*B.r+B.l*r);}
};/** 进行FFT和IFFT前的反转变换。* 位置i和j(i二进制反转后位置)互换* len必须是2的幂*/
void change(complex y[],int len){int i,j,k;for (int i=1,j=len/2;i<len-1;i++){if (i<j) swap(y[i],y[j]);k=len/2;while (j>=k){j-=k;k>>=1;}if (j<k) j+=k;}
}
/** 做FFT* len必须为2^k形式,* on==1时是DFT,on==-1时是IDFT*/
void fft(complex y[],int len,int on){change(y,len);for (int h=2;h<=len;h<<=1){complex wn(cos(-on*2*PI/h),sin(-on*2*PI/h));for (int j=0;j<len;j+=h){complex w(1,0);for (int k=j;k<j+h/2;k++){complex u=y[k];complex t=w*y[k+h/2];y[k]=u+t;y[k+h/2]=u-t;w=w*wn;}}}if (on==-1){for (int i=0;i<len;i++){y[i].l/=len;}}
}
const int N=1e5+5;
int n;
complex x[N<<2],y[N<<2];
int dp[N],v[N];
const int mod=313;
void sol(int l,int r){if (l==r) {dp[l]+=v[l];dp[l]%=mod;return;}int mid=(l+r)>>1;sol(l,mid);int len=1;while (len<=(r-l+1)) len<<=1;for (int i=0;i<len;i++) x[i]=y[i]=complex(0,0);for (int i=l;i<=mid;i++) x[i-l]=complex(dp[i],0);for (int i=0;i<r-l+1;i++) y[i]=complex(v[i+1],0);fft(x,len,1);fft(y,len,1);for (int i=0;i<len;i++) x[i]=x[i]*y[i];fft(x,len,-1);for (int i=mid+1;i<=r;i++)dp[i]+=(int)(x[i-l-1].l+0.5),dp[i]%=mod;sol(mid+1,r);
}
int main()
{while (~scanf("%d",&n),n){for (int i=1;i<=n;i++){scanf("%d",v+i);v[i]%=mod;dp[i]=0;}sol(1,n);printf("%d\n",dp[n]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Core IO学习心得

最近看Core IO的内容&#xff0c;有一些心得给大家共享一下&#xff1a; Core IO作为微软IT基础架构优化框架中的一个部分。该框架包含三个部分&#xff1a;CIO&#xff0c;BPIO和APIO&#xff1a; CIO&#xff08;核心基础架构优化&#xff09;专注于核心基础机构组件&#x…

经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

经典算法研究系列&#xff1a;十、从头到尾彻底理解傅里叶变换算法、上 作者&#xff1a;July、dznlong 二零一一年二月二十日 推荐阅读&#xff1a;The Scientist and Engineers Guide to Digital Signal Processing&#xff0c;By Steven W. Smith, Ph.D。此书地址&#xf…

flash调用js中的方法,让js传递变量给flash (兼容 IE FF) (转)

前几天发表了 将FlashVars写在JS函数中&#xff0c;实现与后台的实时变量更新&#xff0c;但是仅支持 IE&#xff0c;随后与 Luckyer 进行了交流&#xff0c;发现用 SetVariable 可以很方便的实现多浏览器兼容。举例如下。html 页中的 JavaScript 函数&#xff1a;function Get…

经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、下

经典算法研究系列&#xff1a;十、从头到尾彻底理解傅里叶变换算法、下 作者&#xff1a;July、dznlong 二零一一年二月二十二日 推荐阅读&#xff1a;The Scientist and Engineers Guide to Digital Signal Processing&#xff0c;By Steven W. Smith, Ph.D。此书地址&#…

调出sharepoint错误的详细页面

记录一个小技巧&#xff1a; 在开发sharepoint的时候经常出现" An unexpected error has occurred."的页面&#xff0c;让人非常的郁闷。 打开web.config, 找到&#xff1a; <SafeMode MaxControls"200" CallStack"false" DirectFileDepende…

UVA 12298——Super Poker II

题意&#xff1a; 给定一些扑克牌&#xff0c;问这些扑克牌选四色能组成n的方案数&#xff0c;其中遗失了c张牌&#xff0c;这c张不能用&#xff0c;问n从a到b的方案数。 思路&#xff1a; 分析每一种花色&#xff0c;那么每种花色组成的方案数即为x^1x^2x^3x^5&#xff08;…

ERP词汇

我是一个很挑剔的人&#xff0c;当然是对自己&#xff0c;也对我的程序&#xff0c;我喜欢让自己的程序尽可能的完美&#xff0c;当然也包括了命名。 我很重视命名的规范性&#xff0c;也更喜欢别人去遵守共同的命名规范&#xff0c;这样的代码是自解释的&#xff0c;我可以不用…

2016CCPC网络赛赛后总结——回顾与反思

今天的比赛是特别遗憾的一场&#xff0c;如果能多出一题&#xff0c;或许是一个相反的场面&#xff0c;但是&#xff0c;实力就到这里了&#xff0c;瓶颈了&#xff0c;再假设如果毫无意义&#xff0c;一切都是我们平时不严格的训练和懈怠自己造成的&#xff0c;或许说起来难听…

Visual Studio Team System 2008 Team Suite 简体中文正式版

http://www.microsoft.com/downloads/details.aspx?displaylangzh-cn&FamilyIDd95598d7-aa6e-4f24-82e3-81570c5384cb#filelist 这是什么&#xff1f;*** 转载于:https://www.cnblogs.com/zxsoft/archive/2008/02/17/1071038.html

HDU 5832——A water problem 2016CCPC网络赛1001

题意&#xff1a; 给定一个数&#xff0c;问该数是否能够对10001取摸&#xff0c;能够就YES&#xff0c;否则为NO。 思路&#xff1a; 和题目样&#xff0c;水题&#xff0c;直接取摸即可。 code&#xff1a; #include <bits/stdc.h> using namespace std;char s[10…

职业生涯中12个最致命的想法

1、总觉得自己不够好  这种人虽然聪明、有历练&#xff0c;但是一旦被提拔&#xff0c;反而毫无自信&#xff0c;觉得自己不胜任。4、无条件地回避冲突  这种人一般会不惜一切代价&#xff0c;避免冲突。一位本来应当为部属据理力争的主管&#xff0c;为了回避冲突&#xf…

ASP.NET刷新页面的六种方法

ASP.NET刷新页面的六种方法 第一&#xff1a; private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Request.Url.ToString( ) ); } 第二&#xff1a; private void Button2_Click( object sender, System.EventArgs e ) { Response.Wri…

HDU 5842—— Lweb and String CCPC 网络赛 1011

题意&#xff1a; 按字母出现的顺序编号&#xff0c;问最长上升子序列。 思路&#xff1a; 最长为26&#xff0c;出现一个新的字母就加上&#xff0c;答案为字母的种数&#xff0c;无聊的题目。 code&#xff1a; #include <cstdio> #include <cstring> #inc…

LA 3458——Bridge

题意&#xff1a; 建设一座大桥&#xff0c;在桥上建若干个塔&#xff0c;塔高为H&#xff0c;相邻两塔间的距离不能超过D&#xff0c;桥长度为B&#xff0c;线的总长度为L&#xff0c;桥之间的绳索为对称抛物线&#xff0c;问建最少塔的时候的线索的最下端的离地高度y 思路&…

虚拟机照样飞速跑Windows Server2008

今晚下Windows Server2008的镜像下下来了&#xff0c;装在VM上了。给它分配了1G的内存&#xff0c;运行&#xff0c;速度真不错&#xff0c;比现在用的开发的机器的速度要快许多。真爽哟&#xff01;本本是Dell D630,Intel Core2 双核 T7250,2G内存。装的Vista系统&#xff0c;…

20160818_周报日志之二

写在前面 发觉自己真的很欠揍唉&#xff0c;明明上个周立了flag一周要进行一次总结的&#xff0c;结果这个周因为打比赛给忘却了&#xff0c;然后只能今天补了&#xff0c;不要说这个周不干了&#xff0c;下个周重新开始&#xff0c;这是个态度问题&#xff0c;这个周拖延的人…

An Algorithm Summary of Programming Collective Intelligence (1)

就按照最后一章的顺序来说吧。很多名字都不知道中文该怎么说&#xff0c;就直接用英文名称了。 Naive Bayesian Classifier 朴素贝叶斯分类器nb算法是通过学习样本中已经分类的条目&#xff0c;计算生成条目中的特性相对于类别的概率矩阵&#xff0c;然后根据待分类条目中特性在…

20160821_第三周周报

写在前面 心情大概是无比糟糕的&#xff0c;生活上的一些事情是使最近的心情变得很糟糕&#xff0c;昨天打了场cf&#xff0c;昨天21点开始的&#xff0c;因为宿舍要锁门&#xff0c;所以不得不打半个小时然后赶紧回宿舍&#xff0c;打的时候&#xff0c;不断手残&#xff0c;…

hihoCoder 1227 2015 北京网络赛 A题

题意&#xff1a; 给定m个点&#xff0c;然后从这m个点里找到一个点作为圆心&#xff0c;求一个最小的半径使得圆内刚好有n个点&#xff0c;没有压线的点。 思路&#xff1a; 预处理一下各点间的距离&#xff0c;暴力枚举圆心&#xff0c;然后找到排序后的第n个判断即可。坑…

知识的殿堂??!

进入大学都接近三年了&#xff0c;说实话&#xff0c;确实从大学里学到了不少东西&#xff0c;锻炼了心理素质&#xff0c;学会了扯淡&#xff0c;学会了一些技术的东东。平时不知道都忙些什么&#xff0c;不怎么上课&#xff0c;不怎么作业&#xff0c;不知怎么的就具备了这些…