uva 11538 Chess Queen

简介: 点击打开链接 题意:给定一个n*m的矩阵,问有多少种方法放置两个相互攻击的皇后?规定在同一行同一列和同对角线的能够相互攻击 思路: 1 先考虑同一行的情况,n行就有n种情况,每一行有m*(m-1)种,总的是n*m*(m-1); 2 考虑同...

点击打开链接

题意:给定一个n*m的矩阵,问有多少种方法放置两个相互攻击的皇后?规定在同一行同一列和同对角线的能够相互攻击

思路:

1 先考虑同一行的情况,n行就有n种情况,每一行有m*(m-1)种,总的是n*m*(m-1);

2 考虑同一列的情况,m列就是m种情况,每一列有n*(n-1)种,总的是m*n*(n-1);

3 最后考虑同对角线的情况,因为n > m和 n <= m的情况是不一样的,我们先假设 n <= m

   通过画图我们知道,所有的/对角线,从左到右的长度分别为1 2 3 ... n-1 n n ...n n(有m-n+1个) n-1 ... 1

   那么总的就是1*(1-1)+2*(2-1)+...(n-1)*(n-1-1)+(m-n-1)*n*(n-1)+(n-1)*(n-1-1)+...+2*(2-1)+1*(1-1)

   因为还有\的情况,因为总的还要乘2

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

typedef long long int64;

int64 n , m;

int64 solve(){
    int64 ans = 0; 
    if(n > m)
        swap(n , m);
    // same row
    ans += n*m*(m-1); 
    // same col
    ans += m*n*(n-1);
    // same duijiao
    ans += 2*(2*((n-1)*n*(2*n-1)/6-n*(n-1)/2)+(m-n+1)*n*(n-1));
    return ans;
}

int main(){
    while(cin>>n>>m && n+m){
        cout<<solve()<<endl;
    }
    return 0;
}



目录
相关文章
uva 10340 all in all
输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串是。
45 0
uva10152 ShellSort
uva10152 ShellSort
65 0
UVa 10082 WERTYU
Problem Description A common typing error is to place the hands on the keyboard one row to the right of the correct position.
892 0
uva 1388 - Graveyard
点击打开链接uva1388 思路:数学 分析: 1 我们把原先的n个墓碑看成是园内的正n变形,现在的n+m个墓碑看成是园内的正n+m变形。那么通过画图我们可以知道当这个两个正多边形有一个点重合的时候移动的总距离最小 2 那么我们把这个圆进...
1019 0
uva 11627 Slalom
点击打开链接uva 11627 思路:二分答案 分析: 1 给定S个滑雪板的速度,问是否可以找到一个滑板使得通过所有的门的时间最少,如果找不到输出IMPOSSIBLE 2 很明显的二分题目,我们知道了二分那应该怎么判断是否可以通过所有...
1069 0
|
C++
uva10905
题意:给定n个数字字符串,求他们能组成的最大数字字符串。 做法:用,cmp比较函数比较s+t与t+s即可。 代码: #include #include #include #include #include #define zz using namespace st...
778 0
UVA3295
题意:给出一个a*b的网格,在网格上取不共线的三点构成三角形,求三角形总数。分析:就是一一道简单的组合数计算题目,设总结点数为n,则取三个节点的个数为C(n,3),然后减去横向、竖向、斜向的三点共线的个数即可,斜线三点共线等价于所枚举的矩形的长宽成倍数关系,即gcd不为1 代码如下: #incl...
660 0
|
安全
UVA3644
题意:有一些简单化合物,每个化合物都由两种元素组成,每个元素用一个大写字母组成,你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上,但是这里存在一个安全隐患,如果车上存在k个简单化合物,正好包含k中元素,那么他们将组成一个易爆易燃的化合物,为了安全起见,每当你拿到一个化合物的时候,如果他和已装车的化合物形成易爆化合物,你就应当拒绝装车,否则就应该装车,编程输出有多少个没有装车的化合物。
518 0
|
人工智能
uva10382 Watering Grass
题意:有一块草坪,长为l,宽为w,再起中心线的不同位置处装有n个点状的喷水装置。每个喷水装置i可以将以它为中心,半径为ri的圆形区域润湿,请选择尽量少的喷水装置,把整个草坪全部润湿。 分析:对于直径小于宽度的喷水装置其实可以忽略,剩下的问题转换成了最小区间覆盖问题,即:用最少数量的区间去覆盖给定的...
821 0