描述

这里是欢乐的进香河,这里是欢乐的幼儿园。

今天是2月14日,星期二。在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着。校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们。听到这个消息,所有同学都安安静静地排好了队,大家都知道,校长不喜欢调皮的孩子。

同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U。如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是f(x)=Ox^2+Sx+U。

现在校长开始分糖果了,一共有M个糖果。有些小朋友可能得不到糖果,对于那些得不到糖果的小朋友来说,欢乐程度就是1。如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果。(即这一列得不到糖果的小朋友一定是最后的连续若干位)

所有分糖果的方案都是等概率的。现在问题是:期望情况下,所有小朋友的欢乐程度的乘积是多少?呆呆同学很快就有了一个思路,只要知道总的方案个数T和所有方案下欢乐程度乘积的总和S,就可以得到答案Ans=S/T。现在他已经求出来了T的答案,但是S怎么求呢?他就不知道了。你能告诉他么?

因为答案很大,你只需要告诉他S对P取模后的结果。

后记:

虽然大家都知道,即便知道了T,知道了S对P取模后的结果,也没有办法知道期望情况下,所有小朋友欢乐程度的乘积。但是,当呆呆想到这一点的时候,已经彻底绝望了。

格式

输入格式

第一行有2个整数,分别是M和P。

第二行有一个整数A,第三行有一个整数O。

第四行有一个整数S,第五行有一个整数U。

输出格式

一个整数S,因为答案可能很大,你只需要输出S 对P取模后的结果。

样例1

样例输入1

  1. 4 100
  2. 4
  3. 1
  4. 0
  5. 0

样例输出1

  1. 63

限制

对于40%的数据,M<=150。

对于60%的数据,M<=2000。

对于80%的数据,M<=6000。

对于100%的数据,M<=10000,P<=255,A<=10^8,O<=4,S<=300,U<=100。

恶心之极的题目……只能手推一个非常可怕的dp转移方程……详细内容看代码吧

  1. #include<cstdio>
  2. #define rec(x,y) rec[aa[y]+x]
  3. using namespace std;
  4.  
  5. int n,m,a,b,c,p,l1,l2,l3,l0;
  6. int rec[],ans=,aa[],f[];
  7. int main(){
  8. scanf("%d%d%d%d%d%d",&m,&p,&n,&a,&b,&c);
  9. register int i,j;
  10. if (n>m) n=m;
  11. aa[]=;
  12. a%=p;b%=p;c%=p;
  13. f[]=c;
  14. for (i=;i<p;i++){
  15. f[i]=f[i-]+a*(*i-)+b;
  16. while (f[i]>=p) f[i]-=p;
  17. }
  18. for (i=;i<=m;i++) aa[i]=aa[i-]+i-;
  19. for (i=,j=;i<=m;i++,j++,j-=j>=p?p:)
  20. if (i>p) rec(,i)=rec(,(j==?p-:j-)+);else rec(,i)=f[j];
  21. int k=((rec(,)-*rec(,))+*p)%p,y=(*a-rec(,)+*rec(,)+*p)%p;
  22. ans=rec(,m);
  23. for (i=;i<=n;i++){
  24. rec(i,i)=(rec(i-,i-)*f[])%p;
  25. int d=rec(i,i);
  26. j=i+;
  27. d+=((k*rec(i-,j-))+(f[]*rec(i-,j-)));
  28. rec(i,j)=(*rec(i,j-)+d+p)%p;
  29. j++;
  30. l0=aa[j]+i;l1=aa[j-]+i-;l2=aa[j-]+i-;l3=aa[j-]+i-;
  31. for (;j<=m;j++){
  32. d+=((y*rec[l3])+(k*rec[l2])+(f[]*rec[l1]));
  33. rec[l0]=(*rec[l1+]-rec[l2+]+d+p)%p;
  34. l0+=j;l1+=j-;l2+=j-;l3+=j-;
  35. }
  36. ans+=rec(i,m);
  37. }
  38. printf("%d\n",ans%p);
  39. }

UPD at 2017.4.8

原来我这样是暴力水过,有空再写写正解

bzoj4332;vijos1955:JSOI2012 分零食的更多相关文章

  1. 【BZOJ 4332】 4332: JSOI2012 分零食 (FFT+快速幂)

    4332: JSOI2012 分零食 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 119  Solved: 66 Description 这里是欢乐 ...

  2. [BZOJ 4332] [JSOI2012]分零食(DP+FFT)

    [BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\ ...

  3. BZOJ4332 JSOI2012 分零食 【倍增 + NTT】

    题目链接 权限题BZOJ4332 题解 容易想到\(dp\) 设\(g[i][j]\)表示前\(i\)人分到\(j\)颗糖的所有方案的乘积之和 设\(f(x) = Ox^2 + Sx + U\) \[ ...

  4. bzoj千题计划309:bzoj4332: JSOI2012 分零食(分治+FFT)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4332 因为如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果. 所以设g[i][j] ...

  5. bzoj4332[JSOI2012]分零食

    一下午被这题的精度续掉了...首先可以找出一个多项式的等比数列的形式,然后类似poj的Matrix Series,不断倍增就可以了.用复数点值表示进行多次的多项式运算会刷刷地炸精度...应当用int存 ...

  6. bzoj 4332:JSOI2012 分零食

    描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同 ...

  7. bzoj 4332: JSOI2012 分零食 快速傅立叶变换

    题目: Description 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\(f(x)=O*x^2+S*x+U\) 现 ...

  8. [洛谷P5075][JSOI2012]分零食

    题目大意:有$m(m\leqslant10^8)$个人站成一排,有$n(n\leqslant10^4)$个糖果,若第$i$个人没有糖果,那么第$i+1$个人也没有糖果.一个人有$x$个糖果会获得快乐值 ...

  9. BZOJ 4332: JSOI2012 分零食 FFT+分治

    好题好题~ #include <bits/stdc++.h> #define N 50020 #define ll long long #define setIO(s) freopen(s ...

随机推荐

  1. 运算符关键字。数据区别大小写。日期范围。判空的两种写法。NOT IN的两种写法。IN范围可含NULL,但NOT IN值范围不能含NULL。

    比较:>,<,=,>=,<=,<>(!=) 逻辑:AND,OR,NOT 范围:BETWEEN...AND... 范围:IN,NOT IN 判空:IS NULL, I ...

  2. 【HTML5】HTML5新布局元素

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. ExperDot的博客目录导航

    最近活动 我更新了博客!粒子系统:从零开始画一棵树 Github:[ UWP ] [ JavaScript ] 自然编程  奇幻元纪 上帝创世篇:如何画一颗静态树 女娲补天篇:仿人工拼接碎片 吴刚伐桂 ...

  4. java之自动过滤提交文本中的html代码script代码

    public class test { public static String Html2Text(String inputString) { String htmlStr = inputStrin ...

  5. Spring Dynamic DataSource Routing

    Use AbstractRoutingDataSource to dynamicly switch datasources, see http://spring.io/blog/2007/01/23/ ...

  6. uEditor富文本编辑器

    在配合vue和webpack使用时,在严格模式下注意会报错,需要修改配置. 我采用的方式:----不建议全部取消严格模式,因为一些插件必须要再严格模式才能运行的 对UEditor的严格模式报错文件,取 ...

  7. python爬虫爬取大众点评并导入redis

    直接上代码,导入redis的中文编码没有解决,日后解决了会第一时间上代码!新手上路,多多包涵! # -*- coding: utf-8 -*- import re import requests fr ...

  8. 获取两个时间节点的月份列表&&每个月份的开始时间及结束时间

    //Q:从今天起之前五个月的列表 date_default_timezone_set('PRC'); $time=strtotime('-5 month'); //包含本月 $begin = strt ...

  9. curl -windows下接口通讯

    1,下载curl -----url命令传输工具 2,配置curl环境变量 3,在cmd环境中使用   举例:curl -G http://xxxxxxx.com?+参数 使用:curl -G &quo ...

  10. 实战经验分享之C#对象XML序列化

    .Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象.Serializer的使用比较 ...