UVa10237 Bishops

uva10237 - Bishops 互不攻击的象 Problem B Bishops Input: standard input Output: standard output Time Limit: 4 seconds Memory Limit: 32 MB   A bishop is a piece used in thegame of chess which is played on a board of squa 阅读详情

题目

UVa10237 Bishops

题解

不敢相信这道题居然是我想出来的qwq。

首先发现象是走斜线,所以先考虑把棋盘顺时针旋转45度,板正。然后稍微变化一下格子的形状,就成了这个样子(0表示空格)

                          0
                        0   0
                      0   0   0
                        0   0
                          0

然后你发现,,其实可以每隔一行等价拆成两个棋盘(也就是把黑格和白格拆开)。

    0                               0   0
 0  0  0                            0   0
    0

然后就可以分别dp了,dp[i][j]表示前i行放了j个,可以枚举这一行放不放,要放的话有多少种可能的位置,可以试着写一写转移方程。

但是大小不一,从宽往窄转移的时候会有问题(如果你试了就会知道),但是我们发现,列的顺序与dp结果并没有关系,于是上面左边的图可以等价为.

  0
  0
0 0 0

这样再做就简单多了,先做完这个dp,然后处理每一组数据的时候,枚举黑格白格分别放多少个就行了

代码

//QWsin
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=30+10;

int n,k;
namespace Init{
    ll C[maxn][maxn];
    inline void init_C(){
        C[0][0]=1;
        for(int i=1;i<=30;++i)
            for(int j=0;j<=i;++j)
                if(!j||j==i) C[i][j]=1;
                else C[i][j]=C[i-1][j]+C[i-1][j-1];
    }

    ll dp1[maxn][maxn*maxn],dp2[maxn][maxn*maxn];
    //dp[i][j]表示前i行共放了j列的方案数 
    //分奇偶 1奇2偶 奇数第i层1+(i-1)/2*2 偶数第i层(i+1)/2*2 
    inline int count1(int x){return 1+(x-1)/2*2;}
    inline int count2(int x){return (x+1)/2*2;}

    inline void init_dp()
    {
        dp1[0][0]=dp2[0][0]=1;

        for(int i=1;i<=30;++i)
        {
            //分别处理 
            for(int j=0,sz=count1(i);j<=sz;++j)
            {
                dp1[i][j]+=dp1[i-1][j];
                if(j) dp1[i][j]+=dp1[i-1][j-1]*(sz-j+1);
            }
            for(int j=0,sz=count2(i);j<=sz;++j)
            {
                dp2[i][j]+=dp2[i-1][j];
                if(j) dp2[i][j]+=dp2[i-1][j-1]*(sz-j+1);
            }
        }
    }

    inline void init(){init_C();init_dp();}
}


inline void solve()
{
    ll ans=0;
    using namespace Init;
    for(int x=0;x<=k;++x) 
        ans+=dp1[n][x]*dp2[n-1][k-x];
    printf("%lld\n",ans);
}

int main()
{
    Init::init();
    while(scanf("%d%d",&n,&k)==2&&(n||k)) solve();
    return 0;
}
递推计数问题题目总结 introduction主要总结一些常用的递推计数技巧和题目.包括格点计数.树堆排列数目.分类技巧分类是处理计数问题的重要计数.一定要注意不重不漏.并且常对包含某一个元素的特定情况进行计数,然后在全部加起来.UVA 11038 - How Many O’s? 枚举法,限定每个0的位置分类计数.UVA 10883 - Supermean 找规律,注意大数相除取对数技巧codeforce 785D——— 阅读详情

相关推荐

保姆级教程:手把手教你为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)

本文提供了一份详细的教程,指导开发者如何为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)。从理解下载算法的核心机制到实现FlashPrg.c的核心操作,再到链接脚本与地址映射实战,手把手教你完成定制化SPI Flash下载算法的开发与优化。

weixin_28716769的博客 408

UVA10237:Bishops(dp)

题意:N*N的表格,给K只棋子放进去,要求同一斜线上至多有一只棋子,求方案数。 思路:首先将棋盘转45°,就变成横竖的问题了,显然奇数行和偶数行是无冲突的,考虑分开计算,到时候用乘法原理加起来即可,尽管每一行的格子数先增后减,将短的行先计算也无影响,又显然奇数行比偶数行多1行,最后要再计算一次。dp[i][j] = dp[i-1][j](这行不放) + dp[i-1][j-1]*(line[i]

junior19的博客 498

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

互不攻击的象 (Bishops,UVa 10237)

1 #include <iostream> 2 #include <string.h> 3 #include <string> 4 #include <fstream> 5 #include <algorithm> 6 #include <stdio.h> 7 #include <...

diwei4889的博客 257

NAO V6 开发环境的配置(附所有文件)

NAO V6开发环境配置前言环境Robot SettingsChoregraphe 2.8.5.10python2.7+naoqi2.8+opencv4.1.0putty与FileZilla 前言 学校的机器人摸索了一段时间,之前摸爬滚打探索环境,之前没接触这类机器人可能会非常艰辛,希望能给需要的人一些帮助。Nao与pepper通用 环境 win10(x64)+naoqi2.8 1、Robot S...

wbhhello的博客 3219

Matlab TreeBagger实战:用随机森林预测房价的5个关键步骤(附完整代码)

本文详细介绍了使用Matlab的TreeBagger工具包构建随机森林模型预测房价的完整流程。通过波士顿房价数据集实战,涵盖数据预处理、模型构建、参数调优、特征重要性分析及高级应用(如分位数回归)等5个关键步骤,并附有完整代码,帮助读者快速掌握这一强大的回归分析工具。

ol789012的博客 444

uva 10237 - Bishops(dp)

题目链接:uva 10237 - Bishops 题目大意:给出n和k,问在n∗n的棋盘上放k个主教互相不攻击能有多少种方法,主教的攻击方式是斜线。 解题思路:将棋盘旋转45度,然后将黑白格子互相分开,因为在国际里面,黑格的主教是永远无法攻击到白格的主教。所以将黑白格分开考虑。 然后对于一种格子的颜色来说,它就类似与在一个棋盘上放车,dp[i][j]表示i行放了j个车,dp[i][j

不慌不忙、不急不躁 2080

STM32 MCU解除读保护的方法及STM32CubeProgrammer的应用

下面是一个简单的源代码示例,演示如何在STM32CubeProgrammer中使用命令行界面(Command-Line Interface,CLI)来解除STM32 MCU的读保护。通过按照这些步骤操作,您可以成功解除STM32 MCU的读保护,并在需要的时候进行调试、烧录或修改固件。模块调用了STM32CubeProgrammer的命令行界面(CLI),并传递了相应的参数来解除STM32 MCU的读保护。请注意,在进行任何与读保护相关的操作之前,请确保您拥有合法的授权和权利,以避免潜在的安全风险。

ZwcCsharp的博客 3549

uva 10237 bishops

Problem B Bishops Input: standard input Output: standard output Time Limit: 4 seconds Memory Limit: 32 MB   A bishop is a

chengouxuan的专栏 1208

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

【Docker】完美解决拉取镜像超时报错:ERROR: Get https://registry-1.docker.io/v2/

因为我们下载的镜像是外网的镜像资源,所以下载的速度会非常的慢,甚至大概率下载时会报错,所以需要我们配置一个国内的服务器镜像地址,国内服务器镜像地址有很多,这里咱们就说一下阿里镜像加速器的配置方法。

liu_chen_yang的博客 12万+

UVA - 10237 Bishops

A bishop is a piece used in thegame of chess which is played on a board of square grids. A bishop can only movediagonally from its current position and two bishops attack each other if oneis on the pa

那些年 1590

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 518

UVA 10237 Bishops

Problem B Bishops Input: standard input Output: standard output Time Limit: 4 seconds Memory Limit: 32 MB   A bishop is a piece used in the game of chess which is played on a board of squar

We Can 699

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UVa 10237 Bishops (组合数学)

10237 - Bishops Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1178 A bishop is a piece used in the game of chess which

AC,∑ndless 1860

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UVA 10237 - Bishops(递推)

UVA 10237 - Bishops 题目链接 题意:问一个n * n棋盘能放k个主教(攻击斜线)的方案数。 思路:递推,首先考虑一个问题,在一个n∗n棋盘上,放k个车的方案数。 那么设dp[i][j]为i行用了j个车的方案数,由于每行只能放一个车,那么考虑i行放不放车,如果放车,那么能放的位置有n−(j−1)个位置,为dp[i−1][j−1]∗(n−(j−1))。 如果不放那

Remilia's 1809

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVA10237 - Bishops

棋盘上的套路

ACoder 317

uva 10237 Bishops 黑白染色处理

题意:在n*n行棋盘里放置k个棋子,要保证这些棋不在同一斜行,问有多少种放置方式。 方法:黑白染色,黑白格子之间相互不影响。 用dp[i][j]表示第i斜行放置j个棋子,c[i]表示第i斜行有多少棋子。 #include #include #include #include #include #include #include #include using namespace std; #p

MY专栏 421

组合计数·棋盘统计

相关习题: 1. Uva 10237 Bishops 题意:两个象不攻击,当且仅当它们不处在同一条斜线上。输入整数$n(n \leq 30)$,统计在一个$n \times n$的棋盘上放$k$个互不攻击的象有多少种方法。如$N=8, k = 6$时有$5599888$种。 分析:解决本题需要注意两个事实: 1.在棋盘上着色(如上图)不同的位置互不相干,因此可以独立处理。 2.每个...

weixin_34336526的博客 127

UVa Problem 861 Little Bishops (棋盘上的象)

// Little Bishops (棋盘上的象) // PC/UVa IDs: 110801/861, Popularity: C, Success rate: high Level: 2 // Verdict: Accepted // Submission Date: 2011-06-19 // UVa Run Time: 0.024s // // 版权所有(C)2011,邱秋。metaph...

peizhiinfo 149

《算法竞赛入门经典——训练指南》第二章相关内容

#《算法竞赛入门经典——训练指南》第二章相关内容 由于动态规划的高阶比较难,所以伴随这数论一起刷 红色为做了黄色不懂的 希望各位大牛能帮帮小弟 勘误 P112.例题4,LA3516的图画错了,请参考原题:https://icpcarchive.ecs.baylor.edu/external/35/3516.html [第二次印刷改正]p180. 表2-8 第一行信息有误,应为:

lyc 3593

《算法竞赛入门经典——训练指南》第二章题库

UVa特别题库 UVa网站专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=442 注意,下面注有“extra”的习题并没有在书中出现,但在上面的特别题库中有,属于附加习题。 基础练习 (Basic Problems)

sxk 3861

《算法入门经典大赛——培训指南》第二章考试

UVa特别考试 UVa站点专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8&amp;category=442 注意。以下注有“extra”的习题并没有在书中出现。但在上面的特别题库中有。属于附加习题。 基础练习 (Basic Prob...

weixin_34087301的博客 184
上一篇: LA3357 Pinary
下一篇: LA4258 Metal
QWsin
博客等级 码龄11年 51粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值