#错排,高精度#洛谷 3182 [HAOI2016]放棋子
分析
这题目太迷惑人了:
每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列
\(n\) 个棋子也满足每行只有一枚棋子,每列只有一枚棋子
仔细想想会发现求的是错排方案,那也就是\(D(n)=(n-1)(D(n-1)+D(n-2))\)
题目要求高精度
代码
#include <cstdio>
#include <cstring>
#define rr register
using namespace std;
typedef long long lll;
const lll mod=1000000000;
struct Big{
lll p[61]; int len;
inline Big operator +(const Big &t)const{
rr lll g=0,s=0; rr Big c;
c.len=len>t.len?len:t.len,
memset(c.p,0,sizeof(c.p));
for (rr int i=1;i<=c.len;++i)
s=p[i]+t.p[i]+g,c.p[i]=s%mod,g=s/mod;
if (g) c.p[++c.len]=g;
return c;
}
inline void mul_int(int x){
rr lll g=0,s=0;
for (rr int i=1;i<=len;++i)
s=p[i]*x+g,p[i]=s%mod,g=s/mod;
while (g) p[++len]=g%mod,g/=mod;
}
inline void Print(){
printf("%lld",p[len]);
for (rr int i=len-1;i;--i)
printf("%09lld",p[i]);
}
}dp[211];
signed main(){
rr int n; scanf("%d",&n);
if (n==1) return !printf("0");
if (n==2) return !printf("1");
dp[1].p[dp[1].len=1]=0,
dp[2].p[dp[2].len=1]=1;
for (rr int i=3;i<=n;++i)
dp[i]=dp[i-1]+dp[i-2],
dp[i].mul_int(i-1);
dp[n].Print();
return 0;
}
#错排,高精度#洛谷 3182 [HAOI2016]放棋子的更多相关文章
- 洛谷 P3182 [HAOI2016]放棋子(高精度,错排问题)
传送门 解题思路 不会错排问题的请移步——错排问题 && 洛谷 P1595 信封问题 这一道题其实就是求对于每一行的每一个棋子都放在没有障碍的地方的方案数. 因为障碍是每行.每列只有一 ...
- 洛谷P3182 [HAOI2016]放棋子
P3182 [HAOI2016]放棋子 题目描述 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要 ...
- 洛谷 P3182 [HAOI2016]放棋子(错排问题)
题面 luogu 题解 裸的错排问题 错排问题 百度百科:\(n\)个有序的元素应有\(n!\)个不同的排列,如若一个排列使得所有的元素不在原来的位置上,则称这个排列为错排:有的叫重排.如,1 2的错 ...
- 错排问题 && 洛谷 P1595 信封问题
传送门 一道裸的错排问题 错排问题 百度百科上这样说 就是对于一个排列,每一个数都不在正确的位置上的方案数.n 个元素的错排数记为 D(n). 公式 D(n)=(n−1)∗(D(n−2)+D(n−1) ...
- [洛谷P3158] [CQOI2011]放棋子
洛谷题目链接:[CQOI2011]放棋子 题目描述 在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同 颜色的棋子不能在同一行或者同一列.有多少祌方法?例如,n=m=3,有两个 ...
- 洛谷P3158 [CQOI2011]放棋子 组合数学+DP
题意:在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列.有多少祌方法? 解法:这道题不会做,太菜了qwq.题解是看洛谷大佬的. 设C是组合数, ...
- 【BZOJ4563】[Haoi2016]放棋子 错排+高精度
[BZOJ4563][Haoi2016]放棋子 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- bzoj4563: [Haoi2016]放棋子(错排+高精)
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status] ...
- [Haoi2016]放棋子 题解
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 285[Submit][Status] ...
- [HAOI2016] 放棋子及错排问题
题目 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足 ...
随机推荐
- 【Android逆向】frida hook so 函数
1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 ja ...
- 【Azure Fabric Service】Service Fabric 遇见错误信息记录 - The process/container terminated with exit code:2148734499
问题描述 Service Fabric 在升级 Application 过程中,发布了新的代码后,启动应用中遇见了如下错误: Error message: System.Hosting' report ...
- 答对这 9 题你就超越了 83.3% 的图数据库 NebulaGraph 用户
熟悉 NebulaGraph 社区的小伙伴可能都知道一个技能认证叫做:NGCP,全称 NebulaGraph Certified Professional.用户在考试认证期间在 1 个小时内回答 10 ...
- 闭关修炼180天----手写迷你版的tomcat-Minicat
手写迷你版的tomcat-Minicat 小谈Tomcat Tomcat请求处理⼤致过程 Tomcat是⼀个Http服务器(能够接收并且处理http请求,所以tomcat是⼀个http服务器) 我们使 ...
- XAF Blazor FilterPanel
前言 XAF列表视图(ListView)中的过滤(Filter),可以在ListView模型的Filters节点中添加,添加的过滤项(FilterItem)会在列表视图的工具栏中以下拉列表的形式显示, ...
- centos解决 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
一.下载 openssl 编译安装 openssl 官方下载地址:https://www.openssl.org/source/ wget https://github.com/openssl/ope ...
- KEIL5新建工程0810
在保存各种项目的文件夹内创建一个项目文件夹1新建工程到文件夹1 选择芯片添加工程的必要文件(固件库) STM32程序是从启动文件开始,复制这些文件到文件夹A的新建Start文件夹下 stm32f10x ...
- Android设备上运行live555的推流程序
在live555使用NDK21编译出arm64-v8a和armeabi-v7a中我们编译出了v8a和v7a的可执行文件 我们可以使用testH264VideoStreamer程序进行推流 我们将tes ...
- Miracast技术详解(三):RTP & MPEG2-TS
目录 Miracast音视频流概述 抓包准备 RTP MPEG2-TS TS分组 适配域 PCR PID PSI PAT PMT PES 总结 Miracast音视频流概述 在上一篇文章中,我们已经成 ...
- 今日头条Linux 运维工程师面试真题
今日头条Linux 运维工程师面试真题 首先我们来看下今日头条 Linux 运维工程师招聘岗位要求: [岗位定义]系统运维工程师 [岗位薪资]10K-24K [基本要求]北京 / 经验 3-5 年 / ...