C. How Does the Rook Move?
题解
1.没有棋下也算一种情况!!!!!!!!!
2.前k次放置,如果放在对角线上,会把原先n阶矩阵分解成n-1阶矩阵,如果没放在对角线上,会分割成n-2阶矩阵
3.不管如何放置,到最后第一列总有且仅有一颗棋子,第一列的第一行只能放白棋,第2到第n行可以放白棋或黑棋,所以第一列的放置有
code
#include<bits/stdc++.h>
#define ll long long
const ll mod=1e9+7;
using namespace std;
ll t2[300005]={0};
ll ans[300005]={0};
int main()
{
ans[0]=1;
for(ll i=1;i<=300002;i++)
{
t2[i]=i*2LL;
t2[i]%=mod;
}
ans[1]=1;
ans[2]=3;
for(ll i=3;i<=300002;i++)
{
ans[i]+=ans[i-1];
ans[i]%=mod;
ans[i]+=ans[i-2]%mod*t2[i-1]%mod;
ans[i]%=mod;
}
ll t;
cin>>t;
while(t--)
{
ll n,k;
cin>>n>>k;
ll cnt=0;
for(ll i=1;i<=k;i++)
{
ll x,y;
cin>>x>>y;
if(x!=y) cnt+=2;
else cnt++;
}
cout<<ans[n-cnt]%mod<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下