【组合计数】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的前缀和公式我就不推了。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m;
int main(){
	while(1){
		cin>>n>>m;
		if(n==0 && m==0){
			break;
		}
		if(n>m){
			swap(n,m);
		}
		cout<<2ll*n*(n-1ll)*(3*m-n-1ll)/3ll+n*m*(m-1ll)+n*m*(n-1ll)<<endl;
	}
	return 0;
}
时间: 2024-12-21 18:53:15

【组合计数】UVA - 11538 - Chess Queen的相关文章

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?

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

UVA - 11538 - Chess Queen (数论~)

11538 Chess Queen You probably know how the game of chess is played and how chess queen operates. Two chess queens are in attacking position when they are on same row, column or diagonal of a chess board. Suppose two such chess queens (one black and

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

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

uva 11538 - Chess Queen(组合数)

UVa  Online Judge https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2533 [题意] 给定一个棋盘,在棋盘上放两个皇后(一白一黑),求使得两个皇后相互攻击(在一行.一列.对角线均可相互攻击),求方案数. 计数问题,分类: 1.在一行或一列:n*m(m-1),m*n*(n-1) 2.在对角线,假设n<m,则各对角线长度

UVa 11538 Chess Queen

在n × m 的棋盘上放两个互相攻击的皇后,问有多少种方法 这道题重点不在于编程,而是数学公式的推导.其中还用到了Σ(i2)的公式,看来我高中数学没白学,嘎嘎 至于推导过程,看大白书吧,嘿嘿.对了,书中有一步貌似有个小错误,不过不影响结果 1 //#define LOCAL 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 6 int main(void) 7 { 8 #ifdef LOCAL

Uva 10401 Injured Queen Problem ( 计数DP)

Problem I Injured Queen Problem Input: standard input Output: standard output Time Limit: 6 seconds Memory Limit: 32 MB Chess is a two-player board game believed to have been played in India as early as the sixth century. However, in this problem we

HDU 4832 组合计数dp

Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 509    Accepted Submission(s): 198 Problem Description 小度和小良最近又迷上了下棋.棋盘一共有N行M列,我们可以把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,"王"在棋盘上的走法遵循十字

uva 11195 Another queen (用状态压缩解决N后问题)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2136 Problem A Another n-Queen Problem I guess the n-queen problem is known by every person who has studied backtracking. In this problem you s