题目

别人的题解

第二类斯特林数(理解题解中的公式有很大帮助)。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <deque>
#include <stack>
using namespace std;
typedef long long ll;
typedef vector<int> veci;
typedef vector<ll> vecl;
typedef pair<int, int> pii;
template <class T>
inline void read(T &ret) {char c;int sgn;if (c = getchar(), c == EOF) return ;while (c != '-' && (c < '0' || c > '9')) c = getchar();sgn = (c == '-') ? -1:1;ret = (c == '-') ? 0:(c - '0');while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');ret *= sgn;return ;
}
inline void out(ll x) {if (x > 9) out(x / 10);putchar(x % 10 + '0');
}
const int mod = 998244353;
const int maxn = 2e5 + 10;
ll fac[maxn] = {0};
ll quickpow(ll a, ll b) {ll ans = 1, base = a;while (b) {if (b & 1) ans = ans * base % mod;base = base * base % mod;b >>= 1;}return ans;
}
ll C(ll n, ll m) {return fac[n] * quickpow(fac[m] * fac[n - m] % mod, mod - 2) % mod;
}
int main() {ll ans = 0, n, k;read(n), read(k);if (k > n - 1) {out(0);return 0;}fac[0] = fac[1] = 1;ll m = n - k;for (int i = 2; i < maxn; i++) fac[i] = (fac[i - 1] * i) % mod;for (int i = 0; i <= m; i++) {if (i % 2 == 0) ans += C(m, i) * quickpow(m - i, n) % mod;else ans = ans - C(m, i) * quickpow(m - i, n) % mod + mod;ans %= mod;}ans = (ans * C(n, m)) % mod;if (k) ans = (ans << 1) % mod;out(ans);return 0;
}

codeforces E. Placing Rooks相关推荐

  1. Codeforces 1342E Placing Rooks(容斥+组合数学)

    题目链接:E. Placing Rooks 题意:给定一个N*棋盘,要求摆放n个rooks(国际象棋里能横竖走的那啥),使得每个格子都能被rooks攻击到,并且正好有k对rooks能相互攻击到,求有多 ...

  2. CF1342E. Placing Rooks

    CF1342E. Placing Rooks Solution 有一个显然的性质: 要么每行都有至少一个,要么每列至少有一个. 只看每行有至少一个的情况: 显然必有n−kn-kn−k列有棋子. 考虑容 ...

  3. Educational Codeforces Round 86 (Rated for Div. 2) Apr/26/2020 22:35UTC+8

    Educational Codeforces Round 86 Rated for Div. 2 A. Road To Zero B. Binary Period(找最小周期) C. Yet Anot ...

  4. SMSC2021 Day11Day12 部分题解

    SMSC2021 Day11&Day12 Day11 数对 pair (数论,同余,计数) 序列 seqn (计数,动态规划,拆分贡献思想) Day12 构造图 graph (数论,约数,质数 ...

  5. Codeforces Global Round 21 E. Placing Jinas

    Problem - E - Codeforces (Unofficial mirror by Menci) E. Placing Jinas 题目大意:每个点相当于(0,0)到每个点(只能向下和向右走 ...

  6. 【Educational Codeforces Round 138】A. Cowardly Rooks

    Educational Codeforces Round 138中A. Cowardly Rooks Codeforces比赛记录 文章目录 题目链接: 一.A. Cowardly Rooks 题目意 ...

  7. Codeforces 985A. Chess Placing(1ni)(水题)(div.2)

    A. Chess Placing time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  8. Codeforces 524E Rooks and Rectangles 线段树

    区域安全的check方法就是, 每行都有哨兵或者每列都有哨兵,然后我们用y建线段树, 维护在每个y上的哨兵的x的最值就好啦. #include<bits/stdc++.h> #define ...

  9. CF-Educational Codeforces Round 44 (Rated for Div. 2)-A-Chess Placing

    ACM模版 描述 题解 凑等差数列,一种是 a1=1a1=1a_1 = 1,一种是 a1=2a1=2a_1 = 2,取凑成这两种等差数列的代价中较小的,注意序列并没有保证有序,所以需要先排序. 代码 ...

最新文章

  1. 为什么要设置java环境变量_为什么要配置JDK环境变量?
  2. Qt 学习之路 2(79):QML 组件
  3. iOS----JSON解析
  4. 信息化基础建设 工作流开发
  5. 【教育】斯坦福开学演讲:为什么很多人顶级学校毕业,却终身平庸?
  6. opencv python 基于分水岭算法的图像分割
  7. python拦截游戏封包_TCP封包拦截类模块 API HooK封包拦截源码
  8. 画法几何4---轴测投影图---二维平面描述三维物体
  9. Unity实战篇 | 游戏中控制 地图无限自动化生成 的方法,进一步优化项目
  10. →箭头符号大全复制_特殊符号大全8908194
  11. 苹果屏蔽更新描述文件_iOS屏蔽更新文件失效,教你两个技巧暂停更新
  12. 无界鼠标 (Mouse without Borders) 一套键鼠控制多台电脑的工具(可跨电脑拷贝/拖放文件)
  13. oracle现金流量表逻辑,【实战】编制现金流量表的一些个人理解(附下载勾稽表)...
  14. 从事IT5年的历程--续(学习经)
  15. Python数据分析入门与实践-笔记
  16. 安装autoconf
  17. 为什么8G运行内存的电脑,开几个WORD文档,运行内存就被占满了,WPS很占用内存吗
  18. STM32F407ZGT6芯片介绍
  19. 中兴u31网关服务器位置,中兴LTE-U31网管简易操作指南
  20. python基金筛选_手把手教你用python选基金

热门文章

  1. adb查看手机设备型号、品牌、机型等信息
  2. 三阶幻方java解法_蓝桥杯决赛 Java大学B组 第二题 反幻方
  3. mysql外码内码定义_内码和外码分别是什么啊?
  4. ECCV2022 Workshop | 复杂环境中的多目标跟踪和分割
  5. sxt_(015)_request处理表单数据及乱码
  6. 关于网络渗透的过程以及感想记录
  7. Adobe PS常用快捷键
  8. 华为公司软件编程规范
  9. 使用 Microsoft Teams Toolkit for Visual Studio 高效构建一个指示板
  10. USACO--3.2Feed Ratios