uva 11538 计数原理

分为皇后在同一行、同一列、同一对角线的情况分别计数相加即可。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <climits>
 5 using namespace std;
 6
 7 typedef long long ll;
 8
 9 ll a( ll n, ll m )
10 {
11     return n * m * ( m - 1 );
12 }
13
14 ll b( ll n, ll m )
15 {
16     return a( m, n );
17 }
18
19 ll d( ll n, ll m )
20 {
21     return n * ( n - 1 ) * ( n - 2 ) / 3 * 4 + 2 * ( m - n + 1 ) * n * ( n - 1 );
22 }
23
24 int main ()
25 {
26     ll n, m;
27     while ( cin >> n >> m )
28     {
29         if ( n == 0 && m == 0 ) break;
30         if ( n > m ) swap( n, m );
31         cout << a( n, m ) + b( n, m ) + d( n, m ) << endl;
32     }
33     return 0;
34 }
时间: 2024-07-29 10:15:43

uva 11538 计数原理的相关文章

【组合数学】计数原理

计数原理     ①抽屉原理               有N个抽屉,N+1个苹果,那么至少有一个抽屉有两个或两个以上的苹果.               有N个抽屉,N-1个苹果,那么至少有一个抽屉没有苹果.       ②加法原理         如果A类物品有a个,B类物品有b个,那么A类物品或B类物品共有a+b个(没有性质相同的情况下)       ③乘法原理         如果A有a中发生方式,B有b中发生方式,那么发生事件A与B有a*b中发生方式.       ④容斥原理 ∪=并

专题——计数原理

由于最近在研究数论,所以这期为大家带来一个数论中的专题--计数原理,下面我们来看四个概念: 一.配对原理: 对于集合A.B,如果存在一个一一映射,f:A→B,则|A|=|B|,假如我们很难计算A的值,不如转变方法,先计算B的值,再根据一一映射反推A,这时就需要找到这样一个易于计算的B,这需要很高的技巧.二.容斥原理: <1>容斥原理 把集合A分成子集A1,A2,A3,-,Am,即:A=A1∪A2∪A3-∪Am ,简单的来说,要求的集合是等于全集减去所有子集相交的重复的部分. <2>

uva 11538 - Chess Queen(数论)

题目链接:uva 11538 - Chess Queen 题目大意:在一个n?m的棋盘上,放两个皇后,要求两个皇后可以互相攻击,求有多少种放法. 解题思路:因为皇后的攻击范围为竖线.横线和斜线,所以枚举每条上两个皇后放的位置,比如一条斜线有8个,那么放两个皇后的种数就有C(82)种. 行数n,每行m个位置C(m2)?n 列数m,每列n个位置C(n2)?m 斜线,2?(2?∑i=1n?1i?(i?1)+(m?n+1)?n?(n?1)),因为正斜线和翻斜线,所以要乘以2 最后公式化简为2?n?(n?

数学计数原理(P&#243;lya,高精度):SGU 294 He&#39;s Circles

He's Circles He wrote n letters "X" and "E" in a circle. He thought that there were 2n possibilities to do it, because each letter may be either "X" or "E". But Qc noticed that some different sequences of letters ca

[从头学数学] 第195节 计数原理

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼. 这次要研究的是[计数原理]. 正剧开始: 星历2016年04月25日 10:22:16, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[计数原理]. <span style="font-size:18px;"> if (1) { var r = 20; config.setSector(1,10,1,1.5); config.graphPaper2D(0, 0

UVA 11538 - Chess Queen(数论+计数问题)

题目链接:11538 - Chess Queen 题意:给一个n*m棋盘,问放两个皇后,使得两个皇后互相能攻击到,有几种放法 思路:分横竖,对角线来考虑. 横:n * A(m, 2)种 竖:m * A(n, 2)种 对角线:由于有两条,可以算一条再乘2 2 * 所有对角线和(A(对角线格数,2)). 那么对角线格数为:(1, 2, 3, 4 ... n .n .n .n.n - 1. .. 4. 3 .2. 1) 然后为n的有m - n + 1条(m >= n) 所以答案为:2*(2*∑i*(i

STM32F4_TIM基本延时(计数原理)

Ⅰ.概述 STM32的TIM定时器分为三类:基本定时器.通用定时器和高级定时器.从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了.很多初学者甚至工作了一段时间的人都不知道STM32最基本的计数原理. 虽然STM32定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少us.ms等. 接下来我会讲述关于STM32最基本的计数原理,详细讲述如何做到(配置)计数1us的延时,并提供实例代码供大家参考学习

【组合计数】UVA - 11538 - Chess Queen

考虑把皇后放在同一横排或者统一纵列,答案为nm(m-1)和nm(n-1),显然. 考虑同一对角线的情况不妨设,n<=m,对角线从左到右依次为1,2,3,...,n-1,n,n,n,...,n(m-n+1个n),n-1,n-2,...,2,1 还有另一个方向的对角线,所以算出来之后要乘二. 即答案为2(2*Σ(i to n-1) (i(i-1))    +   (m-n+1)n(n-1)) Σ(i to n-1) (i(i-1))怎么算呢? 可以拆成Σi2 - Σi , i2的前缀和公式我就不推了

【基本计数方法---加法原理和乘法原理】UVa 11538 - Chess Queen

题目链接 题意:给出m行n列的棋盘,当两皇后在同行同列或同对角线上时可以互相攻击,问共有多少种攻击方式. 分析:首先可以利用加法原理分情况讨论:①两皇后在同一行:②两皇后在同一列:③两皇后在同一对角线( / 或 \ ): 其次利用乘法原理分别讨论: ①同一行时(A),先选某一行某一列放置其中一个皇后,共m*n种情况:其次在选出的这一行里的其他n-1个位置中选一个放另一个皇后:共m*n*(n-1)种情况: ②同一列时(B)情况相同,为n*m*(m-1)种情况: ③同一对角线(D)上时,先讨论 /