Description

详见OJ

Solution

这题看题目就知道是期望\(DP\)了。
先刚了2h\(DP\)式,得到\(f[i]=f[i-1]+f[i-2]+f[i-1]*(1-p)+...\),然后不会化简,最后崩盘。
正解也是设f[i]表示生成第i级的剑的期望费用。
可以得到\(f[i] = f[i - 1] + f[i - 2] + (1 - p) * (f[i] - f[i - 2])\)
解方程即可,得到:
\[f[i] = f[i - 2] + f[i - 1] * (k/c[i - 1])\](\(k\)为题目所给的\(k\))
要用逆元(考场逆元直接用成了\(/(k!)\),而需要的是\(/k\)。。。)
\[f[i] = f[i - 2] + f[i - 1] * k * ny[c[i - 1]] * jc[c[i - 1] - 1]\]
此题需要卡常!!!

Code


#include <cstdio>
#include <algorithm>
#define N 10000010
#define ll long long
#define mo 998244353
#define fo(x, a, b) for (register int x = a; x <= b; x++)
#define fd(x, a, b) for (register int x = a; x >= b; x--)
using namespace std;
const int maxn = 10000000;
int n, A, bx, by, cx, cy, p, k;
int b[N], c[N], f[N], jc[N], ny[N];inline int read()
{int x = 0; char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();return x;
}int ksm(int x, int y)
{int s = 1;while (y){if (y & 1) s = (ll)s * x % mo;x = (ll)x * x % mo; y >>= 1;}return s;
}void ycl()
{jc[0] = jc[1] = 1;fo(i, 2, maxn) jc[i] = (ll)jc[i - 1] * i % mo;ny[maxn] = ksm(jc[maxn], mo - 2);fd(i, maxn - 1, 1) ny[i] = (ll)ny[i + 1] * (i + 1) % mo;
}int main()
{freopen("forging.in", "r", stdin);freopen("forging.out", "w", stdout);n = read(), A = read();if (n == 0) {printf("%d\n", A); return 0;} ycl();bx = read(), by = read(), cx = read(), cy = read(), p = read();b[0] = by + 1, c[0] = cy + 1;fo(i, 1, n - 1){b[i] = ((ll)b[i - 1] * bx + by) % p + 1;c[i] = ((ll)c[i - 1] * cx + cy) % p + 1;}f[0] = A; k = std::min(c[0], b[0]);f[1] = (f[0] + (ll)f[0] * c[0] % mo * ny[k] % mo * jc[k - 1] % mo) % mo;fo(i, 2, n){k = std::min(c[i - 1], b[i - 2]);f[i] = (f[i - 2] + (ll)f[i - 1] * c[i - 1] % mo * ny[k] % mo * jc[k - 1] % mo) % mo;}printf("%d\n", f[n]);return 0;
}

jzoj 6271. 2019.8.4【NOIP提高组A】锻造 (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. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  3. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  4. 津津的储蓄计划 NOIp提高组2004

    这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...

  5. 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)

    信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...

  6. {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C

    2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...

  7. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

  8. NOIP 提高组 复赛 历年 试题

    NOIP 提高组  复赛  历年 试题 NOIP 2017 提高组 复赛  试题 https://wenku.baidu.com/view/70de9e29854769eae009581b6bd97f ...

  9. noip提高组初赛有感——

    本人第一次考试,感觉还好吧,误打误撞报了个提高组,觉得还是有点亏了(把普及组的脸甩在地上狠狠摩擦那种)..蒟蒻的我答后面的题时就开始困难了,但多选题答得还可以.考场有提前交卷的,大神总是很多呀- 不过 ...

  10. NOIP提高组1900~1909以及1986集合答案

    1900:[17NOIP提高组]时间复杂度时间限制: 1000 ms 内存限制: 262144 KB 提交数: 670 通过数: 287 [题目描述] 给出了他自己算出的时间复杂度,可他的编程老师实在 ...

最新文章

  1. IT职场人生系列之十四:经验积累
  2. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十六)利用PC端和移动端BUG
  3. BASIC-8 回文数
  4. 自己动手写UI库——引入ExtJs(布局)
  5. 关于string,我今天科普的
  6. 少儿编程100讲轻松学python(三)-python如何重命名文件
  7. JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)
  8. RandomShuffleQueue '_1_input/shuffle_batch/random_shuffle_queue' is closed and has insufficient elem
  9. Swin Transformer(W-MSA详解)代码+图解
  10. DHPST分销系统 YEP分销云主机分销系统源码
  11. 《编译原理》学习笔记 ·001【第一章:总论】
  12. SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
  13. H.264 sequence parameter sets成员值含义学习笔记
  14. 计算机无法用630打印机,手把手为你解决win10系统安装630k打印机驱动的设置方法...
  15. 开发完微信小程序后,怎样做好微信小程序运营?
  16. E - Alarm Clock (尺取法)
  17. mt8735 android5.1调试MIC增益参数和去除录制的音频文件播放有电流声
  18. android红外遥控驱动
  19. 【Web开发】良心教程视频推荐
  20. html 移动互联网终端的javascript touch事件,touchstart, touchend, touchmove

热门文章

  1. 计算机网络复习--名词解释
  2. 前端工程师掌握这18招,就能在浏览器里玩转深度学习
  3. 读书笔记-精准努力-只要有用陷阱
  4. Python小白的学习日志:分析化学中pH值计算小程序
  5. Vortex Wargame通关记录——Level 1
  6. r730服务器安装2012系统,poweredg r730服务器安装win server2012 r2安装步骤
  7. 重走长征路---OI每周刷题记录---11月4日 2013
  8. java查询数据库并显示窗口,面试总结
  9. HostMonitor是一款功能强大的运维管理软件
  10. scrapy爬取智联招聘,MongoDB存储数据