uva11538】的更多相关文章

画个图就很容易推出公式: 设mn=min(m,n),mx=max(m,n) 对角线上: 横向:m*C(n,2) 纵向:n*C(m,2) 因为所有的C函数都是只拿了两个,所以可以优化下.不过不优化也过了= = #include <iostream> using namespace std; #define LL long long int n,m; LL P(long n,long m) { ; ) { p*=n; n--; m--; } return p; } LL C(long n,long…
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2533 题意:在n*m的棋盘上放两个(黑和白)相互攻击的皇后,求有多少种方法?  0<=(n,m)<=10e6; 下图是2*2的方案数12: 很明显要按行列还有对角三种来考虑,每种的方案数相加即可: 每一行我们要从m个格子中选择2个进行放所以方案数是m*(m-1),共有…
解题思路: 1. 计数问题, 有三种相对摆放方式: 水平, 竖直, 对角线. 根据加法原理即可, 并且没有交集. 水平和竖直是一样的, 只要n*m矩形旋转90度. 所以结果是: n*m*(m-1)+n*m*(n-1); 2. 对角线复杂些, 先来确定对角线的长度: 1,2,3,...,n-2,n-1,n,n,n,...,n,n,n-1,n-2,...,2,1; 其中n的个数是m-n+1 (其中假设m>n); 结果: 2*(2*∑i*(i-1) + (m-n+1)*n*(n-1))  其中累加的范…
题意 给一个\(n \times m\)的棋盘,输出有多少种方法放置两个互相攻击的皇后. \(n,m \leq 10^6\) 分析 参照刘汝佳的题解. 横.竖.斜三种情况互不相干,加法原理统计. 横竖都好计算,斜着需要推一推. 然后注意溢出问题. 代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<set> #include<ma…
传送门 Description 给你一个n*m的棋盘,在棋盘上放置一黑一白两个皇后,求两个皇后能够互相攻击的方案个数 Input 多组数据,每组数据包括: 一行,为n和m 输入结束标志为n=m=0. Output 对于每组数据,输出: 对应的放置方案数 Sample Input Sample Output Hint n,m≤1e6,n和m不全为1.保证最终答案在long long int范围之内 两个皇后能相互攻击,当且仅当他们在同一列,同一行,或同一斜线上. 黑白两个皇后位置相反算两种不同的方…
A Chess Queen Problem A Chess Queen  Input: Standard Input Output: Standard Output 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 diagona…
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 // // Created by Candy on 24/10/2016. // Copyright © 2016 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <cst…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2533 Root 11538 - Chess Queen Time limit: 2.000 seconds You probably know how the game of chess is played and how chess queen operates. Two chess qu…
https://vjudge.net/problem/UVA-11538 题意: n×m的棋盘,有多少种方法放置两个相互攻击的皇后? 思路: 这两个皇后互相攻击的方式只有3种,在同一行,在同一列,或在同一对角线.因为每种情况没有交集,所以可以用加法原理. 先考虑同一行,每一行都有种放法,共有n行,所以就是n×m×(m-1). 列与行的情况是相同的. 考虑对角线,如图,从左到右对角线的长度为1,2,3,...n-1,n,n...n(m-n+1个n),n-1,n-2,...2,1 因为还有另一个对角…
https://vjudge.net/problem/UVA-11538#author=0 将两个不同的皇后放入N*M棋盘中,问使得二者可以相互攻击的方案个数.有可能在同一行,同一列,同一对角线,分开讨论. 令ans=A(N,M)+B(N,M)+D(N,M);  显然 A(N,M)=N*M*(M-1), B(N,M)=A(M,N)=N*M*(N-1).对于对角线我们只考虑一面的然后乘以二就好了, 观察可得对角线长度的变化是1,2,3..n,n,n....3,2,1 ,其中n的个数是n-m+1个,…