1957C - How Does the Rook Move?

题目链接:How Does the Rook Move?

如图:

因为每行每列都只能放一个棋子,因此我们用绿点来表示下的棋子,发现一个规律,当红色格子都被绿线划过时,那么就不能下棋子。当这个白色点放在x=y这个点,也就是横纵坐标相等时,红色这个点只占了一个,而当x!=  y时,占了两个红色格子,然后剩余我们可以填的就是剩下的蓝色格子,和两个红色格子没填,因此转化一下形成了右图。

再看如下图:

首先我们可以得知,每个棋子先下哪里后下哪里最后的结果不变,说的通俗一点,假设给你看别人刚下完的围棋,你知道白棋哪个位置是第一次下的吗?

因此最后的结果跟顺序无关,那么我们可以从最后一个点枚举,我们一次操作可以占一个红色格子,可以占两个红色格子,那么假设占一个格子,最后剩余的红点就是n-1,如果取两个格子,那么我们要从蓝色的区域里面取,也就是从( n - 1 )个格子里面选一个,又因为这是镜像的,所以我们可以选白棋也可以选黑棋,因此要×2.

所以最后的结论就是:
f(n)=f(n-1) + 2*(n-1)*f(n-2) 

代码附上:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N =3e5+5;
const int mod = 1e9+7;
int f[N];
int n,k;void solve(){cin>>n>>k;int m=n;for(int i=1;i<=k;i++){int x,y;cin>>x>>y;if(x==y)m-=1;else m-=2; }memset(f,0,sizeof(f));f[0]=f[1]=1;for(int i=2;i<=m;i++){f[i]=(f[i-1]+(2*(i-1)*f[i-2])%mod)%mod;}cout<<f[m]<<"\n";
}signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/640441.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用Docker部署DashDot访问本地服务器面板

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等&#xff0c;并且拥有API接…

【解决】echarts条形图纵坐标显示不全

先说结论&#xff1a; option:{...grid: {containLabel: true},... }这个属性是控制整体的坐标标签的。加上这个就可以显示完整了。然后再根据其他属性调整标签的字体、颜色之类的 yAxis : [{...axisLabel:{width:100,overflow:break,truncate:...,color:red,fontSize:10,},..…

配置nodejs的俩小脚本

介绍&#xff1a;共两个脚本。 脚本1&#xff0c;用来配置环境变量&#xff0c;生成环境变量所需的配置信息&#xff0c;然后自己添加到系统环境变量里去 特别注意&#xff1a;该脚本需要放到nodejs目录下面&#xff0c;如果不是&#xff0c;则无法生成环境变量配置文本内容 另…

换行符导致字符串无法匹配

我运行一句sql的时候&#xff0c;发现对应的字段查询不出结果 但是我使用navicat查看列表的时候并没有发现什么异常 然后我用接口调的时候发现了异常&#xff0c;这个数据的前面有个换行符&#xff0c;但是用navicat之类的工具是看不出来的&#xff0c;因此对于备注这种东西最…

mPEG-OPSS,Methoxy PEG OPSS常用于制备高分子材料和纳米材料

【试剂详情】 英文名称 mPEG-OPSS&#xff0c;Methoxy PEG OPSS 中文名称 聚乙二醇单甲醚二巯基吡啶&#xff0c; 甲氧基-聚乙二醇-巯基吡啶 外观性状 由分子量决定&#xff0c;液体或者固体 分子量 1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&#xff0c;6k&…

【问题】java查询MySQL时,mysql查询tinyint类型 的数据时,0会被转为false,1或以上会转为true

在做接口测试的数据库断言时&#xff0c;发现type字段断言总是失败&#xff0c;期望是0&#xff0c;打印数据库实际值是false 查看数据库格式&#xff1a; 解决&#xff1a; 在数据库url上&#xff0c;添加&#xff1a;&tinyInt1isBitfalse ——可解决java查询MySQL时&a…

MySQL数据库中备份和查询

总所周知我们用到的数据有可能丢失&#xff0c;那么我们就可以通过备份把数据找回&#xff0c;如何操作&#xff1a;请先看下面讲解 备份&#xff1a; 导出&#xff1a; 先对数据库进行备份&#xff0c;然后提取备份文件中的SQL语句 这就是我们导出数据&#xff0c;导出了就有…

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

go的编译以及运行时环境

开篇 很多语言都有自己的运行时环境&#xff0c;go自然也不例外&#xff0c;那么今天我们就来讲讲go语言的运行时环境&#xff01; 不同语言的运行时环境对比 我们都知道Java的运行时环境是jvm &#xff0c;javascript的运行时环境是浏览器内核 Java -->jvm javascript…

android学习笔记(五)-MVP模式

1、MVP模式demo的实现&#xff0c;效果下&#xff1a; 2、创建一个Fruit类&#xff1a; package com.example.listview; //Fruit类就是Model&#xff0c;表示应用程序中的数据对象。 public class Fruit {private int imageId;private String name;private String price;publi…

内存卡损坏难开启,数据恢复有妙招

故障初现&#xff1a;内存卡损坏难开启 在我们的日常生活中&#xff0c;内存卡作为一种常见的存储设备&#xff0c;承载着大量的照片、视频、文档等重要数据。然而&#xff0c;有时我们可能会遭遇这样的困境&#xff1a;当试图打开内存卡时&#xff0c;却发现它无法被正常识别…

Vitis HLS 学习笔记--优化指令-BIND_OP_STORAGE

目录 1. BIND_OP_STORAGE 概述 1.1 BIND_OP 1.2 BIND_STORAGE 2. 语法解析 2.1 BIND_OP 2.2 BIND_OP 用法示例 2.3 BIND_STORAGE 2.4 BIND_STORAGE 示例 3. 实例演示 4. 总结 1. BIND_OP_STORAGE 概述 BIND_OP_STORAGE 其实是两个优化指令的合称&#xff1a;BIND_OP…