首页 > 其他分享 >2023南海区信息学区赛(初中组)T2棋盘(原始)

2023南海区信息学区赛(初中组)T2棋盘(原始)

时间:2023-12-23 19:46:29浏览次数:24  
标签:优美 WB T2 南海区 普通 棋子 2023 棋盘 代价

第2题     棋盘(原始) 查看测评数据信息

有一个R行C列的棋盘,共有R×C个单元格子,每个单元格子都要放一个棋子,棋子只有黑色或者白色。

如果两个单元格子有公共边,那么称为相邻的格子。

如果一个棋盘满足所有相邻格子的棋子都是不同颜色,那么就称为“优美”棋盘;否则称为“普通”棋盘。

把棋盘上的一个黑色棋子变成一个白色棋子,需要耗费1个能量。

同理,把棋盘上的一个白色棋子变成一个黑色棋子,也需要耗费1个能量。

如果把一个“普通”棋盘变成“优美”棋盘,至少需要消耗D能量,那么该“普通”棋盘的代价就是D。

下面的“普通”棋盘的代价就是2,因为至少要消耗2个能量,才能变成“优美”棋盘

WBWBW

BWBWB

BBWWW

BWBWB

容易发现,代价是D的“普通”棋盘,可能有很多种。

求:总共有多少种不同的代价是D的“普通”棋盘?模1000000007。

 

输入格式

 

一行,3个整数,R,C,D。1<=R,C<=100,  0<=D<=100。

 

 

输出格式

 

一个整数。

 

 

输入/输出例子1

输入:

2 2 1

 

 

输出:

8

 

 

输入/输出例子2

输入:

9 4 15

 

 

输出:

135805043

 

 

样例解释

 

 

 

分析:

假设一个2*2棋盘,为优美棋盘

那么最终状态只可能是

WB     BW
BW     WB

因为相邻格子的棋子都是不同颜色

从优美棋盘到普通棋盘转换,就是用了D步

假设D=3

WB

BW

可能变成

WW

WB

但是!

我们关注一下题目里

下面的“普通”棋盘的代价就是2,因为至少要消耗2个能量,才能变成“优美”棋盘

这个普通棋盘可以是

变左上角的W为B,而不是右上角B,左下角B变W,所以应该是1代价才能变为优化

所以!结论1:

我们发现,代价*2超过棋盘的棋子(上面例子的3*2>2*2),这种情况是不存在的,因为会有更优解

所以答案为0

 

 

 

 

再假设D=2

还是那个优美棋盘,普通棋盘可以是

WW

WW

也可以是

BB

BB

有什么选法呢?C(4,2),总棋盘里4个棋子选2个变色都行

但是注意一下可能会有重复情况

2种优美棋盘

可以分别转换为一个普通棋盘!

代价*2等于棋盘的棋子

答案要除2

2*C(r*c, d)/2

也就是

C(r*c,d)

 

 

 

 

 

 

 

 

再假设D=1

2种优美棋盘

4个棋子1个棋子变

C(4,1),但是这里并不会重复

1.优美

WB

BW

转普通

WW

BW

 

2.优美

BW

WB

转普通

 

发现并不会重复

所以答案是2个棋盘的C(r*c, d)

也就是

代价*2小于棋盘的棋子

答案是2*C(r*c,d)

 

归纳整理一下,注意值比较大,用杨辉三角求解组合数,同时注意数组范围,杨辉数组开N*N会爆,N*M就够了

#include <bits/stdc++.h>
using namespace std;

const int MOD=1000000007;
long long r, c, d, y[10005][115];
int main()
{
	scanf("%lld%lld%lld", &r, &c, &d);
	for (int i=1; i<=r*c+1; i++)
	{
        int t=i;
        y[i][1]=1;
        if (t>105) t=105;
        y[i][t]=1;
		for (int j=2; j<=t; j++)
			y[i][j]=(y[i-1][j]+y[i-1][j-1])%MOD;
	}
	
	if (2*d>r*c) cout<<0;
	else if (2*d==r*c) cout<<y[r*c+1][d+1]%MOD;
	else if (2*d<r*c) cout<<2*y[r*c+1][d+1]%MOD;
	return 0;
}

  注意MOD!

标签:优美,WB,T2,南海区,普通,棋子,2023,棋盘,代价
From: https://www.cnblogs.com/didiao233/p/17923508.html

相关文章

  • 2023南海区信息学区赛(初中组) T3 步数(原始)
    第3题   步数(原始) 查看测评数据信息有一个二维网格,从上往下,行的编号从1至n,从左往右,列的编号是1至m。第i行第j列的格子编号为(i,j),如果 a[i][j]为'@',表示格子(i,j)有障碍物,如果a[i][j]为'.'则表示格子(i,j)可通行。奶牛bessie当前在 格子(r1,c1),它每一步可以选择......
  • 2023
    2023/11/4简单看完翁恺C语言入门后的一些难点经典的素数打印,以及观察改良后的代码,还有构造素数表二进制的补码很关键,理解了它就能理解字节的知识8个字节的二进制数的范围,加了unsigned就非负且乘二了,还加了有形象的图说明超过那个范围就会回环往复,inf表示无穷,nan表示不存在浮......
  • 2023南海区信息学区赛(初中组) T1二进制整除
    第1题   二进制整除 查看测评数据信息交换二进制数相邻两个位置的数字,需要花费1元的代价。读入整数n以及n位二进制数(也许有前导0),你需要依次回答n个独立的问题,第i个问题(1<=i<=n)是这样的:假如要使得读入的二进制数是2^i的倍数,至少需要花费多少元的代价?如果不可能,则输出......
  • 2023-2024-1 20231416《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标自学《C语言程序设计》第十二章并完成云班课测试作业正文 https://www.cnblogs.co......
  • 按马哥教育关于2023版Linux云计算SRE工程师掌握知识类别,你会了哪些?
    模块1:Linux新手快速基础入门模块2:面试必备-企业级Shell脚本编程实战模块3:Linux系统结构、内核、进程进阶模块4:网络管理管理及互联网通信实战模块5:互联网常见服务应用实战模块6:网络安全、加密及安全通信实战模块7:安全加固内核防火墙Iptables模块8:企业级Web-LA/NMP架......
  • Test20231016
    考得真烂。被初一dalao薄纱。[题面+std](https://www.wenshushu.cn/drive/cfraky1du37)。T1:数学结论题:裴蜀定理,即:$a\timesx+b\timesy=\gcd(a,b)$T2:小清新贪心题,清楚一点性质**从点$i\toj(j>i)$然后又从点$j\tok(j>k)$那么为什么不能从$i$直接到$k$呢?**根据......
  • 2023-12-23训练总结
    T1计数ProblemDescriptionInputOutputSampleInputCopy210SampleOutputCopy90DataConstraint忘记初始化了调了半个小时。维护\(f_{i,0/1}\)表示长度为\(i\),最高位为\(0\)/不为\(0\)的合法方案数。明显有:\[f_{i,0}\getsf_{i-1,1}\\f_{i,1}\g......
  • 2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河 敌军在T
    2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭现在军队只找到了1只小船,这船最多能同时坐上2个士兵。当1个士兵划船过河,用时为a[i]当2个士兵坐船同时划船过河时,用时为max(a[j],a[i])两士兵中用时最......
  • 2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河 敌军在T
    2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭现在军队只找到了1只小船,这船最多能同时坐上2个士兵。当1个士兵划船过河,用时为a[i]当2个士兵坐船同时划船过河时,用时为max(a[j],a[i])两士......
  • [CSP-S 2023] 密码锁
    题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从\(0\)到\(9\)的数字。每个拨圈都是从\(0\)到\(9\)的循环,即\(9\)拨动一个位置后可以变成\(0\)或\(8\),因为校园里比较安全,小Y采用的锁车方式是:从正确密码开始,随机转动密码锁仅一次;每次都是以某个幅度......