Description

Time Limits: 1500 ms Memory Limits: 262144 KB

Input

第一行两个整数 n, a,含义如题所示。
为了避免输入量过大,第二行五个整数 bx, by, cx, cy, p,按照下列代码
来生成 b 和 c 数组。

b[0]=by+1;c[0]=cy+1;
for(int i=1;i<n;i++){
b[i]=((long long)b[i-1]*bx+by)%p+1;
c[i]=((long long)c[i-1]*cx+cy)%p+1;
}

Output

输出一行一个整数,表示期望花费。

Sample Input

Sample Input1

0 6432
4602677 3944535 2618884 6368297 9477531

Sample Input2

1 3639650
6136976 5520115 2835750 9072363 9302097

Sample Input3

10 2
2 33 6 66 2333333

Sample Input4

200 5708788
0 0 0 0 1

Sample Output

Sample Output1

6432

Sample Output2

150643649

Sample Output3

976750710

Sample Output4

696441597

Data Constraint


思路

对于每次合成x级(x>=2),是使用x-1,x-2级武器各一把来合。
设P为合成x级成功的概率,那么有:
概率为P合成x级,概率为(1-P)合成x-1级。
对于概率为(1-P)时,此次合成相当于浪费一把(x-2)级的武器。

dp[i]表示合成第i级武器的期望花费。
则有:dp[i]=dp[i-1]+dp[i-2]*(1/P)
其中1/P为合成次数的期望值,表示合了这么多次后,终于成功。

但是这题卡常,得先线性求一波逆元,转移时O(1)使用。

代码

#include<cstdio>
#include<algorithm>
using namespace std;
const long long ONE=1;
const int MAXN=10000007;
const int MOD=998244353;
int bx,by,cx,cy,p;
int N,A,b[MAXN],c[MAXN];
long long dp[MAXN],f[MAXN];
long long quick_Pow(long long x,int y){if(y==0)return 1;if(y==1)return x;if(y%2)return (x*quick_Pow((x*x)%MOD,y/2))%MOD;return quick_Pow((x*x)%MOD,y/2);
}
long long P(int i){if(i==0)return (c[0]*f[min(b[0],c[0])])%MOD;if(c[i]<=b[i-1])return 1;else return (c[i]*f[b[i-1]])%MOD;
}
int main(){freopen("forging.in","r",stdin);freopen("forging.out","w",stdout);f[0]=0;f[1]=1;for(int i=2;i<=1e7;i++)f[i]=MOD-(((MOD/i)*f[MOD%i])%MOD);scanf("%d%d",&N,&A);scanf("%d%d%d%d%d",&bx,&by,&cx,&cy,&p);b[0]=by+1;c[0]=cy+1;for(int i=1;i<N;i++){b[i]=(ONE*b[i-1]*bx+by)%p+1;c[i]=(ONE*c[i-1]*cx+cy)%p+1;}dp[0]=A;if(N>=1)dp[1]=(P(0)*dp[0]+dp[0])%MOD;for(int i=2;i<=N;i++)dp[i]=(dp[i-2]+dp[i-1]*P(i-1))%MOD;printf("%lld\n",dp[N]);
}
/*
0 6432
4602677 3944535 2618884 6368297 94775311 3639650
6136976 5520115 2835750 9072363 930209710 2
2 33 6 66 2333333200 5708788
0 0 0 0 1
*/

【JZOJ】6271. 锻造 (forging)相关推荐

  1. 6271. 2019.8.4【NOIP提高组A】锻造 (forging)

    6271. 2019.8.4[NOIP提高组A]锻造 (forging)  (File IO): input:forging.in output:forging.out Time Limits: 15 ...

  2. jzoj 6271. 2019.8.4【NOIP提高组A】锻造 (forging)

    Description 详见OJ Solution 这题看题目就知道是期望\(DP\)了. 先刚了2h\(DP\)式,得到\(f[i]=f[i-1]+f[i-2]+f[i-1]*(1-p)+...\) ...

  3. 九校联考-DL24凉心模拟Day2T1 锻造(forging)

    1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉 ...

  4. 【九校联考-24凉心模拟】锻造(forging)

    题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打, 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自 己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他 ...

  5. 锻造 (forging)

    文章目录 题目 分析 代码 题目 Description Input 第一行两个整数nnn,aaa,含义如题所示. 为了避免输入量过大,第二行五个整数bxbxbx,bybyby,cxcxcx,cycy ...

  6. 【JZOJ6271】锻造 (forging)

    description analysis 首先看一下p=1p=1p=1,即111以后的合成一定成功的情况 如果按照求期望值的一般做法求两把000合成111的期望,会画出一棵无穷大的树 这个的期望值就是 ...

  7. 九校联考-DL24 凉心模拟 Day2T1 锻造 (forging)

    题目描述 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打,于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他自己 ...

  8. 01 | 机械专业英语词汇

    金属切削 metal cutting机床 machine tool金属工艺学 technology ofmetals刀具 cutter摩擦 friction联结 link传动 drive/transm ...

  9. 汽车英语词汇 (2012了 大家抓紧学习)

    汽车英语词汇 (2012了 大家抓紧学习) 2012年01月08日 汽车英语词汇 中文名词 英语翻译 中文名词 英语翻译 工位 station 保险杠 bumper 内饰 trim 返工 re-doi ...

最新文章

  1. WinCE开机默认语言设置 .
  2. SVN中检出(check out) 和 导出(export) 的区别
  3. 火爆 GitHub 的 16 张机器学习速查表,值得收藏!
  4. CentOS Linux防火墙配置及关闭
  5. javascript --- [小练习]变量提升、优先级综合
  6. sql中怎么根据汉字的拼音首字母查询
  7. 12.2 新特性:锁信息获取之在线删除索引
  8. 第十五回(二):文会内战平分秋色 树下阔论使坏心焦【林大帅作品】
  9. GitHub 上数十个 NetBeans 开源项目被卷入供应链攻击
  10. Android:SQLiteOpenHelper数据库的两套API
  11. 深入了解什么是服务网格
  12. ORACLE成果,天天10问(四)
  13. 5万字、97 张图总结操作系统核心知识点
  14. JS控制DIV的显示隐藏 。js中radio的取值 。JS控制select的方法(摘取)。js 控制表单中SELECT
  15. linux usb 从芯片,新人求教,怎么烧录Linux系统到一个小芯片上?
  16. 工业控制网络通信协议概览 2020年7月27日
  17. 季琦:VC青睐的“攻城略地者”
  18. python_判断是否回文
  19. Hadsky_v6.4.2轻论坛短信插件
  20. C++中const int*, const int * const, 和 int const *区别

热门文章

  1. 上海联想计算机维修,联想笔记本在上海的官方修理点在哪里?
  2. java 交集_Java大集合求交集的方法比较
  3. java 数组求交集_Java数组的交集、并集
  4. LabView-之7: 移位寄存器
  5. oracle 变更字段名称_oracle怎么修改字段名称?
  6. 【C语言】通讯录设计
  7. 我正在参加博客之星评选,2022年「博客之星」参赛博主:小天狼星_布莱克
  8. 中国直播传媒产业高峰论坛在京成功举办
  9. form标签的action属性怎么用?form标签action属性的用法介绍(附实例)
  10. 深度解析:一文看懂CVPR 2017五大研究前沿