Chess(百度之星初赛B)

2024-02-12 21:58
文章标签 百度 初赛 之星 chess

本文主要是介绍Chess(百度之星初赛B),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Chess Accepts: 1805 Submissions: 5738
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子。一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使其互不攻击的方案数。他经过思考,得出了答案。但他仍不满足,想增加一个条件:对于任何一个車A,如果有其他一个車B在它的上方(車B行号小于車A),那么車A必须在車B的右边(車A列号大于車B)。

现在要问问你,满足要求的方案数是多少。

Input
第一行一个正整数T,表示数据组数。

对于每组数据:一行,两个正整数N和M(N<=1000,M<=1000)。

Output
对于每组数据输出一行,代表方案数模1000000007(1e9+7)。

Sample Input
1
1 1
Sample Output
1

正解

百度之星竟还有这么简单的题目。
车一定最多能摆MIN(n,m)。那么,这题就很简单了。
可以考虑设f[i,j,k]为棋盘大小为i行j列,已经摆放了k个棋子的方案数。
f[i,j,k]:=f[i-1,j,k]+f[i,j-1,k]+f[i-1,j-1,k-1].
时间复杂度:O(n*m*n),最大为:O(1000000000)
空间复杂度:O(n*m*n),最大为:O(1000000000)
这明显是不行的。那么,考虑优化。
发现如果摆放的棋子是最多的,那么行或者列一定是被摆满的,那么就没有必要将行或者列来循环一次。就是说,假设n小于m,那么这n行一定都有棋子。我们便没有必要去枚举一边行,枚举列就行了。如果m小于n则反之。
可以设f[i,j]为在第i个行或列,已经摆放了j个棋子的方案数。
f[i,j]:=f[i-1,j]+f[i-1,j-1]
边做边mod就行了。

代码

varf:array[0..1000,-1..1000] of longint;i,j,n,m,t,p,k:longint;
beginread(t);for i:=1 to t dobeginread(n,m);if n<m thenbeginfillchar(f,sizeof(f),0);f[1,1]:=1;f[1,0]:=1;for j:=2 to m dobeginfor k:=0 to n dobegin      f[j,k]:=(f[j-1,k-1]+f[j-1,k]) mod 1000000007;end;end;writeln(f[m,n]);endelsebeginfillchar(f,sizeof(f),0);f[1,1]:=1;f[1,0]:=1;for j:=2 to n dobeginfor k:=0 to m dobeginif (j=1) and (k=0) thencontinue;f[j,k]:=(f[j-1,k-1]+f[j-1,k]) mod 1000000007;end;end;writeln(f[n,m]);end;end;
end.

这篇关于Chess(百度之星初赛B)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703703

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

百度之星 2015 复赛 1001 (数长方形)

数长方形    Accepts: 595    Submissions: 1225  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数

一、算法思想 目的奔着去抓取百度指数的搜索指数,搜索指数的爬虫不像是其他爬虫,难度系数很高,分析之后发现是图片,坑爹的狠,想了下,由于之前做过身份证号码识别,验证码识别之类,豁然开朗,不就是图像识别麽,图像识别我不怕你,于是就有了思路,果然有异曲同工之妙,最后成功被我攻破了,大致思路如下: 1、首先得模拟登陆百度账号(用selenium+PhantomJS模拟登陆百度,获取cookie) 2

百度智能云向量数据库创新和应用实践分享

本文整理自第 15 届中国数据库技术大会 DTCC 2024 演讲《百度智能云向量数据库创新和应用实践分享》 在 IT 行业,数据库有超过 70 年的历史了。对于快速发展的 IT 行业来说,一个超过 70 年历史的技术,感觉像恐龙一样,非常稀有和少见。 但是数据库之所以有这么长的生命力,核心是在不停的变更和创新。 简单回顾一下数据库的历史,在过去的 70 年里面,数据库一直跟着底层基础设

mhtml图片提取 百度图片下载

如果你需要找一些图片,可以先去百度一下,待相关网页加载完成后,点击保存,即可得到一个mhtml文件。这个文件里的图片会用base64进行存储,只需要找到他们并转化就可以。目前在美篇之类的网站上效果还一般,需要继续排查问题。 效果 代码 大概分为提取所有base64、转化为图片两步。 import base64from io import BytesIOfrom PIL import

使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档 代码:https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file 介绍文档:https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html 2、依赖安装 在使用过程中需要安装库,可以依据代码运行过程中的提示安装。我使用的为python3.7,安装库为: