链接:http://codeforces.com/problemset/problem/215/C

C. Crosses
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

There is a board with a grid consisting of n rows and m columns,
the rows are numbered from 1 from top to bottom and the columns are numbered from 1 from
left to right. In this grid we will denote the cell that lies on row number i and column number j as (i, j).

A group of six numbers (a, b, c, d, x0, y0),
where 0 ≤ a, b, c, d, is a cross, and there
is a set of cells that are assigned to it. Cell (x, y)belongs to this set if at
least one of two conditions are fulfilled:

  • |x0 - x| ≤ a and |y0 - y| ≤ b
  • |x0 - x| ≤ c and |y0 - y| ≤ d

The picture shows the
cross (0, 1, 1, 0, 2, 3) on the grid 3 × 4.

Your task is to find the number of different groups of six numbers, (a, b, c, d, x0, y0) that
determine the crosses of an area equal to s, which are placed entirely on the grid. The cross is placed entirely on the grid, if any
of its cells is in the range of the grid (that is for each cell (x, y) of the cross 1 ≤ x ≤ n; 1 ≤ y ≤ m holds).
The area of the cross is the number of cells it has.

Note that two crosses are considered distinct if the ordered groups of six numbers that denote them are distinct, even if these crosses coincide as sets of points.

Input

The input consists of a single line containing three integers nm and s (1 ≤ n, m ≤ 500, 1 ≤ s ≤ n·m).
The integers are separated by a space.

Output

Print a single integer — the number of distinct groups of six integers that denote crosses with area s and that are fully placed on then × m grid.

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64dspecifier.

Sample test(s)
input
2 2 1
output
4
input
3 4 5
output
4
Note

In the first sample the sought groups of six numbers are: (0, 0, 0, 0, 1, 1), (0, 0, 0, 0, 1, 2), (0, 0, 0, 0, 2, 1), (0, 0, 0, 0, 2, 2).

In the second sample the sought groups of six numbers are: (0, 1, 1, 0, 2, 2), (0, 1, 1, 0, 2, 3), (1, 0, 0, 1, 2, 2), (1, 0, 0, 1, 2, 3).


题意:

给你n*m矩阵,问有多少个不同的    (a, b, c, d, x0, y0) 
  面积等于s。

  • |x0 - x| ≤ a and |y0 - y| ≤ b
  • |x0 - x| ≤ c and |y0 - y| ≤ d

满足这个条件 相当于两个一x0 。y0 为中心的。边长全为奇数的矩形并。

一个矩形长为2a+1,宽为2b+1   还有一个是(2*c+1) * (2*d+1)

做法:

枚举当中一个矩形的长和宽。

假设面积超过s显然不行。

假设等于s。那么还有一个肯定比它小或者相等。

ans+=(n-i/2*2)*(m-j/2*2)*   (((i/2+1)*(j/2+1)-1)*2+1);

(n-i/2*2)*(m-j/2*2) 这个算有多少位子 能够做为矩形 中心

(((i/2+1)*(j/2+1)-1)*2+1)  枚举那个小的边长

假设小于s的话。枚举还有一个矩阵的长度。长度小于i

然后计算宽度。

宽度假设小于m而且也是奇数

ans+=(n-i/2*2)*(m-wid/2*2)*2;    枚举中心点能够在的位置。由于两个矩形不同所以abcd能够对换 所以*2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <malloc.h>
#include <ctype.h>
#include <math.h>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
#include <stack>
#include <queue>
#include <vector>
#include <deque>
#include <set>
#include <map> int main()
{ int n,m,s; scanf("%d%d%d",&n,&m,&s);
__int64 ans=0;
for(int i=1;i<=n;i+=2)//枚举比較长的长方形 长度
{
for(int j=1;j<=m;j+=2)
{
if(i*j>s)
continue;
else if(i*j==s)//一个包括还有一个
{
ans+=(n-i/2*2)*(m-j/2*2)* (((i/2+1)*(j/2+1)-1)*2+1);
// 位子*枚举边长
}
else
{
for(int len=1;len<i;len+=2)//长小的
{
if((s-i*j)%len==0)
{
int wid=(s-i*j)/(len)+j;
//长的 j
//宽的 wid
if(wid<=m&&(wid&1))
ans+=(n-i/2*2)*(m-wid/2*2)*2;
//确定位置 由于不同 所以abcd能够换 *2
}
}
}
}
}
printf("%I64d\n",ans); scanf("%d%d%d",&n,&m,&s);
return 0;
}

cf 215 C. Crosses yy题的更多相关文章

  1. CF 628B New Skateboard --- 水题

    CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...

  2. CF 628A --- Tennis Tournament --- 水题

    CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...

  3. CF #636 (Div. 3) 对应题号CF1343

    unrated 选手悠闲做题,然后只做出四个滚蛋了 符合 div3 一贯风格,没啥难算法 E最后就要调出来了,但还是赛后才A的 CF1343A Candies 传送门 找到一个 \(x\),使得存在一 ...

  4. [YY题]HDOJ5288 OO’s Sequence

    题意:求这个式子 $\sum \limits_{i=1}^{n} \sum \limits_{j=1}^{m} f(i, j) mod (10^9 + 7)$ 的值 就是对每个区间[i, j]枚举区间 ...

  5. CF 420B Online Meeting 模拟题

    只是贴代码,这种模拟题一定要好好纪念下 TAT #include <cstdio> #include <cstring> #include <algorithm> ...

  6. CF 214B Hometask(想法题)

    题目链接: 传送门 Hometask Time Limit: 2 seconds     Memory Limit: 256 megabytes Description Furik loves mat ...

  7. Codeforces Round #215 (Div. 2) D题(离散化+hash)

    D. Sereja ans Anagrams time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. HDU-4414 Finding crosses 水题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4414 直接暴力判断即可. //STATUS:C++_AC_15MS_232KB #include &l ...

  9. noj 2069 赵信的往事 [yy题 无限gcd]

    njczy2010 2069 Accepted 31MS   224K 1351Byte G++ 2014-11-13 13:32:56.0 坑爹的无限gcd,,,尼玛想好久,原来要x对y算一次,y再 ...

随机推荐

  1. spring4 整合hibernate4时遇到的问题以及解决办法

    配置hibernate时出现了如下错误: Java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver 错误原因:hiber ...

  2. appium之toast处理

    注意 toast要appium1.6.3以上版本才支持,Android 5.0以上(需使用夜神多开模拟器),jdk1.8且配置了环境变量. toast定位 1.先看下toast长什么样,如下图,像这种 ...

  3. 在使用Cocos2d-JS 开发过程中需要用到的单体设计模式

    JavaScript 单体模式的一种实现 T.getInstance = (function () { var instance = null; return function () { return ...

  4. 85. Spring Boot集成RabbitMQ【从零开始学Spring Boot】

    这一节我们介绍下Spring Boot整合RabbitMQ,对于RabbitMQ这里不过多的介绍,大家可以参考网络上的资源进行安装配置,本节重点是告诉大家如何在Spring Boot中使用Rabbit ...

  5. HLG 2025

    确定大小 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 50(15 users) Total Accepted: 12(11 user ...

  6. Hibernate批量更新和批量删除批量添加(转)

    通常,在一个Session对象的缓存中只存放数量有限的持久化对象,等到Session对象处理事务完毕,还要关闭Session对象,从而及时释放Session的缓存占用的内存.批量处理数据是指在一个事务 ...

  7. ngrinder的安装

    1.官网下载war包(ngrinder-controller),可以使用tomcat启动或者直接nohup java -XX:Permsize=200m -jar ngrinder-3.4.1.war ...

  8. Java远程调用BPS流程实现流程运行简单示例

    1.简介:略 2.背景:略 3.目的:自我学习笔记 4.实现过程 (1).画出流程图 如下: 路由活动分支下的条件语句为复杂表达式: ((account<200&&divisio ...

  9. linux下面MySQL变量修改及生效

    今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时), ...

  10. py3.6 + xadmin的自学网站搭建

    xadmin安装 由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了. 说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版 ...