UVa 11538 Chess Queen

原创 2016年06月01日 06:57:11


来源:《算法竞赛训练指南》例题2-1、UVa 11538
题目描述:
给定一个n行m列的棋盘,求两个皇后能相互攻击到的放法。(国际象棋中皇后可以攻击同一行、同一列、同一对角线任意远的目标。)
题目分析:
就是喜欢这种直接的数学题。
等价于两个不同的小球放在一个棋盘上同一行或同一列或同一对角线的不同放法,行和列实际上是等价的。
1、同一行的放法:小球A的放下有nm种放法,小球B与它同行有m - 1种放法,故由乘法原理得一共nm(m - 1)种放法。
2、同一列的放法:对称的,有nm(n - 1)种。
3、同一对角线的放法:不妨n <= m(否则交换n、m),则考虑某一方向的对角线,从一个顶点平移到对面顶点,其长度变化为1,…n-1,n,n,…n,n,n-1,…1,中间共m-n+1个n。取定一条对角线,在上面取两个点即可完成任务。注意到另一方向还有镜像的对角线。从而同一对角线放法一共有:

2(2i=1n1C2i+(mn+1)C2n)=2n(n1)(3mn1)3

再有加法原理加起来就可以了。

//  Created by wander on 16/6/1.
//  Copyright © 2016年 W4anD0eR96. All rights reserved.
//  UVa 11538 Chess Queen
//  类型:组合数学

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

unsigned long long n, m;

int main() {
#ifdef DEBUG
  freopen("in", "r", stdin);
  freopen("out", "w", stdout);
#endif
  while (~scanf("%llu%llu", &n, &m) && n + m) {
    if (n > m) swap(n, m);
    printf("%llu\n", n * m * (m + n - 2) + 2 * n * (n - 1) * (3 * m - n - 1) / 3);
  }
  return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

UVa 11538 Chess Queen (组合&分类)

11538 - Chess Queen Time limit: 2.000 seconds http://uva.onlinejudge.org/index.php?option=com_onli...

UVA - 11538 - Chess Queen (数论~)

11538 Chess Queen You probably know how the game of chess is played and how chess queen operates. T...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

UVA 11538 Chess Queen

UVA 11538 Chess Queen

uva 11538 Chess Queen

// uva 11538 Chess Queen // // 题目大意: // // 在 n * m 的棋盘中,放两个皇后,一个黑的,一个白的 // 求能让两个皇后相互攻击的放法,有多少种 // /...

UVA 11538 Chess Queen

Question: You probably know how the game of chess is played and how chess queen operates. Two chess...

例题2.1 象棋中的皇后 UVa11538

1.题目描述:点击打开链接 2.解题思路:本题利用加法原理解决。本题要求统计有多少种放置方法,可以使两个皇后相互攻击。因为只有2个皇后,而能够相互攻击的情况只有3种:同一行,同一列,同一对角线。这3...

uva 10401 Injured Queen Problem

uva 10401 Injured Queen Problem

UVA 10401---Injured Queen Problem+DP

题目链接:点击进入 定义dp[i][j]表示将一个皇后放在第i列第j行有多少种放法.则转移方程dp[i][j]+=dp[i-1][k].如果flag[i]==’?’,1<=j<=n,否则j只能取一个...

UVA 10401 Injured Queen Problem (dp)

题意: 放n∗n棋盘放n个互不攻击Injured Queen有多少种方法放n*n棋盘放n个互不攻击Injured\ Queen有多少种方法 分析: dp[i][j]:=第i列放置皇后在第j行的...
  • lwt36
  • lwt36
  • 2015-11-12 17:58
  • 138

uva 10401 Injured Queen Problem

题意:受伤的皇后只能攻击它这一列的,和它周围的九个格子,题目给出一个字符串,如果第i个字符是?则表示皇后能放在任意位置,如果不是?则表示它指定了必须放在哪一行。问有几种放法。 #include #...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)