题目链接

题目描述
Once upon a time, there was a witch named Geor Autumn, who set off on a journey across the world. Along the way, she would meet all kinds of people, from a country full of ICPC competitors to a horse in love with dota—but with each meeting, Geor would become a small part of their story, and her own world would get a little bit bigger.

Geor just arrived at the state of Shu where people love poems. A poem is a permutation (a1,…,an){(a_1,\ldots, a_n)}(a1​,…,an​) of [n]{[n]}[n]. ((a1,…,an)((a_1,\ldots, a_n)((a1​,…,an​) is a permutation of [n]{[n]}[n] means that each ai{a_i}ai​ is an integer in [1,n]{[1,n]}[1,n] and that a1,…,an{a_1,\ldots, a_n}a1​,…,an​ are distinct.) One poem is good if for all integer i{i}i satisfying i>k{i> k}i>k and i≤n{i\le n}i≤n, ai>min⁡(ai−k,…,ai−1){a_i>\min(a_{i-k}, \ldots, a_{i-1})}ai​>min(ai−k​,…,ai−1​). Here min⁡(ai−k,…,ai−1){\min(a_{i-k}, \ldots, a_{i-1})}min(ai−k​,…,ai−1​) denotes the minimum value among ai−k,…,ai−1{a_{i-k}, \ldots, a_{i-1}}ai−k​,…,ai−1​ .

Help Geor calculate how many good poems there are, given n{n}n and k{k}k. To avoid huge numbers, output the answer modulo 998244353{998244353}998244353.

输入描述:
The first line contains two integers nnn and kkk separated by a single space (1≤n≤1071\le n\le 10^71≤n≤107
, 1≤k≤1071\le k\le 10^71≤k≤107 ).

输出描述:
Output only one integer in one line—the number of good poems modulo 998244353{998244353}998244353.

示例1
输入

1 1

输出

1

设 dpidp_idpi​ 为长度为 iii 的序列满足条件的数量。
显然要想满足条件当前序列最小的元素应该放在前 kkk 个位置,假设放在 jjj ,则位置 jjj 之前可以放任何数,即有 Ai−1j−1A_{i-1}^{j-1}Ai−1j−1​ 种方法,位置 jjj 之后的序列可以看做是一个新序列,需要满足条件,因此有 dpi−jdp_{i-j}dpi−j​ 种。因此 dpi=∑j=1min⁡(i,k)Ai−1j−1dpi−jdp_i=\sum\limits_{j=1}^{\min(i,k)}A_{i-1}^{j-1}dp_{i-j}dpi​=j=1∑min(i,k)​Ai−1j−1​dpi−j​,即 dpii!=1i∑j=1min⁡(k,i)dpi−j(i−j)!\frac{dp_i}{i!}=\frac{1}{i}\sum\limits_{j=1}^{\min(k,i)}\frac{dp_{i-j}}{(i-j)!}i!dpi​​=i1​j=1∑min(k,i)​(i−j)!dpi−j​​ 。
令 pi=dpiip_{i}=\frac{dp_i}{i}pi​=idpi​​ ,则 pi=1i∑j=1min⁡(k,i)pjp_i=\frac{1}{i}\sum\limits_{j=1}^{\min(k,i)}p_jpi​=i1​j=1∑min(k,i)​pj​ 。最终答案为 n!pnn!p_nn!pn​ 。时间复杂度为 O(n)O(n)O(n) 。

#include<bits/stdc++.h>using namespace std;
const int N = 1e7 + 10, MOD = 998244353;
int inv[N], p[N], n, k, s;int main() {s = p[0] = inv[1] = 1;for (int i = 2; i <= 10000000; i++)inv[i] = MOD - 1ll * MOD / i * inv[MOD % i] % MOD;scanf("%d%d", &n, &k);for (int i = 1; i <= n; i++) {p[i] = 1ll * inv[i] * s % MOD;s = s + p[i];if (i >= k) s -= p[i - k];if (s >= MOD)s -= MOD;if (s < 0)s += MOD;}int ans = p[n];for (int i = 1; i <= n; i++)ans = 1ll * ans * i % MOD;printf("%d", ans);return 0;
}

2020ICPC上海 E.The Journey of Geor Autumn相关推荐

  1. 2020ICPC上海E The Journey of Geor Autumn

    题目: 给定nnn和kkk,问有多少个[1,n][1,n][1,n]的排列aaa满足对于∀i>k,ai>min⁡1≤j≤k{ai−j}\forall i>k,a_i>\min ...

  2. 组合计数 ---- 2020 icpc 上海 The Journey of Geor Autumn(思维划分问题计数+预处理优化)

    题目链接 题目大意: 就是你有一个nnn的全排列,现在问你去重排这个排列使得对于给定的kkk,满足对于任意的ai,i>ka_i,i>kai​,i>k的都有ai>min(ai−1 ...

  3. 2020icpc上海(重温经典)

    2020icpc上海(重温经典) 导语 涉及的知识点 题目 B D G H I M 参考文献 导语 涉及的知识点 思维,几何,搜索 链接:第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海 ...

  4. 2020icpc上海赛G题 Fibonacci详解

    Fibonacci(icpc2020上海赛) 链接:icpc2020上海赛G题Fibonacci 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语 ...

  5. 2020icpc上海 Mine Sweeper II (思维)

    题目链接:B-Mine Sweeper II_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海) (nowcoder.com)a 题目大意:给你两个大小为 n * m 的扫雷图 A, B ...

  6. 2020ICPC(上海) - Walker(分类讨论+二分)

    题目链接:点击查看 题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少 题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2: p1 ...

  7. 2020ICPC(上海) - Sum of Log(数位dp)

    题目链接:点击查看 题目大意:给出 X 和 Y,求  题目分析:因为涉及到了位运算且看似可以递推,所以考虑数位dp,因为统计答案时的 i 和 j 的与为 0,所以 i + j = i & j, ...

  8. 2020ICPC上海 C.Sum of Log

    题目链接 题目描述 Given two non-negative integers X{X}X and Y{Y}Y, determine the value of ∑i=0X∑j=[i=0]Y[i&a ...

  9. 2020ICPC上海 D Walker(思维、二分、三分)

    链接 题目描述 As a world-famous traveler, Prof. Pang's research interest is to travel as many places as po ...

  10. 2020ICPC上海区域赛总结

    怎么说呢 想过打铁 但没想到真打铁了其实挺难受的 开局十分钟我交了第一发签到题,由于特判没有return0return 0return0白给了一发,加上之后又马上冲了一发结果还是WA了,这时我就一直在 ...

最新文章

  1. 高精地图:为自动驾驶汽车提供动力的新时代地图
  2. 微信小程序,是不是一盘可口的菜!
  3. 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)
  4. 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
  5. 【PC工具】chrome插件: Github 项目代码树形格式展示工具octotree
  6. Scala基础教程(一):简介、环境安装
  7. C语言与C++的区别,从7个角度来区分C语言与C++
  8. 科普dip,dp,sp,dpi,ppi,px,Density
  9. about-ie下模拟input file上传功能失效
  10. Axure电脑web端通用元件库rplib文件格式+移动端app通用元件库rplib文件格式(内含使用教程)
  11. 谷歌不支持调用摄像头麦克风_谷歌突然推出Android 11开发者预览版 新版带来部分新功能和改进...
  12. ssh之雇员管理系统(4)-改进的hibernate测试
  13. html5 元宵节送祝福,元宵节送上真心祝福语
  14. Labview实现画板
  15. 根据身份证号码计算年龄
  16. 怎么把PDF文件转换成图片?这两种方法可以收藏下来
  17. h3c简单配置包括一些简单vlan原理
  18. excel去掉一行文字中的逗号合并在一起_这30个Excel实用技巧,效率大神都忍不住收藏了。...
  19. 服务器开启虚拟控制台
  20. python自动化测试脚本怎么写_自动化测试脚本一般用什么语言写

热门文章

  1. java标点符号用什么意思_标点符号的使用我说他说XX说后面在什么情况下加逗号、冒号、冒号双引号、双引号或者逗号双引号等的区分问题请详细说明谢谢...
  2. HZNU 与班尼特·胡迪一起攻破浮空城 【DP】
  3. 网页视频改变加速倍数的方法
  4. U盘插入电脑提示未能成功安装设备驱动程序,这个要怎么处理呢
  5. Akka and Actors
  6. [RK3399][Android7.1] DDR动态频率调节驱动小结
  7. android手机闹钟程序,Android手机闹钟用法实例
  8. python桌面应用_用Python写个Metro风格的桌面程序
  9. C# vb .net实现胶片效果滤镜
  10. Windows 下安装sql server 2016(附安装包资源)