description


analysis

  • 首先看一下\(p=1\),即\(1\)以后的合成一定成功的情况

  • 如果按照求期望值的一般做法求两把\(0\)合成\(1\)的期望,会画出一棵无穷大的树

  • 这个的期望值就是$$a+\sum{∞}_{i=1}ap(1-p){i-1}$$

  • 通过数列知识或者打表找规律可以知道这个值为\(a+{a\over p}\)(或者说是\(f[0]+{f[0]\over p}\))

  • 设\(f[i]\)为合成一把\(i\)级剑的期望,\(f[1]\)单独计算,后面的\(f[i]=f[i-1]+f[i-2]\)

  • 扩展到\(100pts\)的情况,如果\(i\)级剑合成失败了,会产生一把\(i-2\)级的剑

  • 也就是说下一次合成\(i\)级剑,只需要合成\(i-1\)级剑,不需要再搞来一把\(i-2\)级剑

  • 同理再画一棵期望树,每次成功的代价是\(f[i-1]\),一开始就有的代价是\(f[i-2]\)

\[f[i-2]+\sum_{i=1}^∞f[i-1]p(1-p)^{i-1}
\]

  • 根据已知的规律,所以\(f[i]={f[i-1]\over p}+f[i-2]\)

  • 下次要好好动脑,\(60pts\)都想出来了,要想再深入一点,争取拿分


code

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 10000005
#define mod 998244353
#define ll long long
#define reg register int
#define max(x,y) ((x>y)?(x):(y))
#define min(x,y) ((x<y)?(x):(y))
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i) using namespace std; int inv[MAXN],b[MAXN],c[MAXN],f[MAXN];
int n,a,bx,by,cx,cy,p;
ll tmp; inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
int main()
{
freopen("T1.in","r",stdin);
//freopen("forging.in","r",stdin);
//freopen("forging.out","w",stdout);
n=read(),a=read(),bx=read(),by=read(),cx=read(),cy=read(),p=read();
inv[1]=1;fo(i,2,p)inv[i]=1ll*inv[mod%i]*(mod-mod/i)%mod;
b[0]=by+1,c[0]=cy+1,f[0]=a;
fo(i,1,n)
{
b[i]=((ll)b[i-1]*bx+by)%p+1;
c[i]=((ll)c[i-1]*cx+cy)%p+1;
tmp=(1ll*c[i-1]*inv[min(c[i-1],b[max(i-2,0)])])%mod;
f[i]=(1ll*(f[max(i-2,0)]+1ll*f[i-1]*tmp%mod))%mod;
}
printf("%d\n",f[n]);
return 0;
}

【JZOJ6271】锻造 (forging)的更多相关文章

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

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

  2. 锻造(forging)

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

  3. 手机金属外壳加工工艺:铸造、锻造、冲压、CNC

    现如今金属手机成为行业的热点,在消费电子产品中应用越来越广,本文详细介绍几种金属加工工艺及相关产品应用. 1.CNC+阳极:iPhone 5/6, HTC M7 2.锻造+CNC:华为P8,HTC M ...

  4. 九校联考-DL24凉心模拟Day2总结

    T1 锻造 forging 题目描述 "欢迎啊,老朋友." 一阵寒暄过后,厂长带他们参观了厂子四周,并给他们讲锻造的流程. "我们这里的武器分成若干的等级,等级越高武器就 ...

  5. 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2

    A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...

  6. [JZOJ6271] 2019.8.4【NOIP提高组A】锻造

    题目 题目大意 武器的每个级别有固定的两种属性\(b_i\)和\(c_i\) 可以用\(a\)的代价得到一把\(0\)级的武器. 可以将\(x\)级武器和\(y=\max(x-1,0)\)级武器融合锻 ...

  7. MOT南京站 | 卓越研发之路:锻造顶级后端系统

    代码是互联网企业信息化核心,也是众多研发团队智慧的结晶,如何将代码发挥到最大价值?如何用代码快.准.好的实现需求?相信这是很多IT从业者所困扰的问题. MOT南京站首期以『锻造顶级后端系统』为主题,我 ...

  8. S老师 背包系统 装备系统 锻造系统 学习

    Inventory using UnityEngine; using System.Collections; using System.Collections.Generic; using Syste ...

  9. 锻造完美U盘小偷:活用消息机制

    锻造完美U盘小偷:活用消息机制作者:灰狐来源:灰狐's Blog 注:本文已发表在<黑客防线>2008年第1期,转载请注明出处. 以前经常看到有人做出一些蛮有意思的小工具,其中最多的似乎就 ...

随机推荐

  1. vue 在微信中设置动态标题

    1.安装插件 cnpm install vue-wechat-title --save 2.在main.js中引入 import VueWechatTitle from 'vue-wechat-tit ...

  2. 转载:vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    原文链接:http://www.cnblogs.com/newpanderking/articles/3372969.html >LINK : fatal error LNK1123: 转换到 ...

  3. Jmeter-Json提取器、用户定义变量配置

    一.Jmeter用户定义的变量,一般用于配置全局变量 1.选择用户定义的变量菜单 2.配置需要的用户定义变量 这里我添加常用的localhost和port 3.如何使用 需要使用${...}进行引用 ...

  4. jq-demo-阻止冒泡,阻止默认行为

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

  5. 49. ArrayList LinkedList中特有的方法

    集合的体系:--------------| Collection  单列集合的根接口 ----------| List 如果实现了List接口的集合类,该类具备的特点是:有序,可重复 ------|A ...

  6. Java集合中的Map接口怎么使用?

    Map(双列集合框架) 1.Map接口及实现类概述 Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 coll ...

  7. quartz的使用(二.基本过程)

    1.关于各个要素的创建,SchedulerFactoryBean,CronTriggerFactoryBean及JobDetailFactoryBean全部实现spring中的FactoryBean& ...

  8. Hive创建表|数据的导入|数据导出的几种方式

    * Hive创建表的三种方式 1.使用create命令创建一个新表 例如:create table if not exists db_web_data.track_log(字段) partitione ...

  9. NOIp2018集训test-9-5(am)

    Problem A. maze 递归处理,题解写得真简单. 我大概这辈子也写不出来这种东西吧. Problem B. count 容易发现合法的数中一定有且仅有两个数加起来等于10,其他数两两配对加起 ...

  10. 2.RabbitMQ Window环境安装

    RabbitMQ环境的安装分别介绍在Window和Linux下两个环境的安装过程.   Window安装RabbitMQ,RabbitMQ安装文件是64位的,所以Window系统必须是64位的.安装R ...