Rectangle

题目链接(点击)

frog has a piece of paper divided into nn rows and mm columns. Today, she would like to draw a rectangle whose perimeter is not greater than kk.

There are 88 (out of 99) ways when n=m=2,k=6n=m=2,k=6

Find the number of ways of drawing.

Input

The input consists of multiple tests. For each test:

The first line contains 33 integer n,m,kn,m,k (1≤n,m≤5⋅104,0≤k≤1091≤n,m≤5⋅104,0≤k≤109).

Output

For each test, write 11 integer which denotes the number of ways of drawing.

Sample Input

    2 2 6
1 1 0
50000 50000 1000000000

Sample Output

    8
0
1562562500625000000

题意:

给出方格的长m和宽n 要求在其中取出一些矩形 但要求这每个矩形的周长不能超过k 求出满足条件矩形的个数

思路:

跑两层for循环 i和j 分别表示 要构造的矩形 竖直方向的边长、水平方向的边长

复杂度 O(n²)    结果肯定是会T

优化:

枚举水平方向的长度为 j 则竖直方向最大长度为 imaxx = k/2 - j

观察竖直方向能构成矩阵的数目 可以看出来 是一个等差数列:

当imaxx=1时 最多可以构成m个矩形

当imaxx=2时 最多可以构成m-1个矩形

当imaxx=m时 最多可以构成 m-i+1个矩形

所以构成以m为首项以d为公差的等差数列  前i项的和sum:

sum=i*(m+m-i+1)/2

当求出最大j对应的imaxx时 再去求总的和不就 = (i*(m+m-i+1)/2)*(n-j+1))

其中(n-j+1)表示 j为水平方向的边长时可以构成的矩形个数

这样就可以以O(n)的复杂度实现了

代码(wa):

还要吐槽多组输入用while(~scanf("%d",&n)){}  好多次都忘记写v符号 ‘ ~ ’  导致TLE

#include<stdio.h>
typedef long long LL;
int main()
{
LL n,m,k;
while(~scanf("%lld%lld%lld",&n,&m,&k)){
LL sum=0;
for(int i=1;i<=n;i++){ /// 会T
for(int j=1;j<=m;j++){
if(i*2+j*2<=k){
sum+=(n-i+1)*(m-j+1);
}
else{
break;
}
}
}
printf("%lld\n",sum);
}
return 0;
}

AC代码:

代码是用i表示水平方向 j表示竖直方向

#include<stdio.h>
typedef long long LL;
int main()
{
LL n,m,k;
while(scanf("%lld%lld%lld",&n,&m,&k)!=EOF){
LL sum=0;
for(LL i=1;i<=n;i++){
LL j=k/2-i;
if(j<0){
j=0;
}
else if(j>m){
j=m;
}
sum+=(LL)((j*(m+m-j+1))/2)*(n-i+1);
}
printf("%lld\n",sum);
}
return 0;
}

Rectangle【思维+模拟】的更多相关文章

  1. CF--思维练习--CodeForces - 216C - Hiring Staff (思维+模拟)

    ACM思维题训练集合 A new Berland businessman Vitaly is going to open a household appliances' store. All he's ...

  2. 思维+模拟--POJ 1013 Counterfeit Dollar

    Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true silver d ...

  3. C. Okabe and Boxes 思维 模拟 or 线段树

    C. Okabe and Boxes 这个题目是一个有点思维的模拟,当时没有想到, 思维就是这个栈的排序这里,因为每次直接排序肯定会t的,所以不可以这么写,那怎么表示排序呢? 就是直接把栈清空,如果栈 ...

  4. Codeforces Round #706 (Div. 2)B. Max and Mex __ 思维, 模拟

    传送门 https://codeforces.com/contest/1496/problem/B 题目 Example input 5 4 1 0 1 3 4 3 1 0 1 4 3 0 0 1 4 ...

  5. Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维

    题意:博弈题面  给出一个数字序列 (>=11)  有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手  数字序列一定是奇 ...

  6. Codeforces Round #469 (Div. 2)C. Zebras(思维+模拟)

    C. Zebras time limit per test memory limit per test 512 megabytes input standard input output standa ...

  7. codeforces C. Vasya And The Mushrooms (思维+模拟)

    题意:给定一个2*n的矩形方格,每个格子有一个权值,从(0,0)开始出发,要求遍历完整个网格(不能重复走一个格子),求最大权值和,(权值和是按照step*w累加,step步数从0开始). 转载: 题解 ...

  8. Codeforces 758D:Ability To Convert(思维+模拟)

    http://codeforces.com/problemset/problem/758/D 题意:给出一个进制数n,还有一个数k表示在n进制下的值,求将这个数转为十进制最小可以是多少. 思路:模拟着 ...

  9. Codeforces 758C:Unfair Poll(思维+模拟)

    http://codeforces.com/problemset/problem/758/C 题意:教室里有n列m排,老师上课点名从第一列第一排开始往后点,直到点到第一列第m排,就从第二列第一排开始点 ...

随机推荐

  1. JavaScript(对象的创建模式)

    JavaScript和其他语言略有不同,在JavaScript中,引用数据类型都是对象(包括函数).不过,在JavaScript中并没有“类”的概念,这决定了在JavaScript中不能直接来定义“类 ...

  2. poj3376 KMP+字典树求回文串数量(n*n)

    Finding Palindromes Time Limit: 10000MS   Memory Limit: 262144K Total Submissions: 4043   Accepted: ...

  3. 如何在手机上预览本地h5页面

    很简洁的一个方法: 1.安装nodeJS环境 2.在当前所在项目文件夹下输入命令: npm install anywhere -g3.输入命令: anywhere,即可在浏览器以本机ip地址为域名,自 ...

  4. SpringBoot入门系列(十二)统一日志收集

    前面介绍了Spring Boot 异常处理,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html. 今 ...

  5. 阿里巴巴编码规范(Java)证明

    背景 阿里云上有个阿里巴巴编码规范认证,我估算一下时间成本很低,多个认证也没什么坏处,就花了1分钱报了个名.这个认证报名后就可以下载链接下的编码规范,然后参加个考试应该就OK了. 共48页的规范实际上 ...

  6. PIC单片机编译器自带的延时程序

    https://wenku.baidu.com/view/3c94e2934028915f814dc205.html

  7. JAVA自学笔记(4)

    发现JAVA的有趣 Day1 继承不是"继承" 1.0 继承的格式 public class FU { public void method() { System.out.prin ...

  8. 第一次写js轮播图

    仿小米首页轮播图(注意事项) 布局部分 1.用ul包裹li再包裹a的形式来装图片,建立focus类: <div class="focus"> <ul> &l ...

  9. WebSocket是什么,有什么作用和特点?

    WebSocket是一种在单个TCP连接上进行全双工通信的协议. Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手.具有持久化的特性 特点: 保持连接状态.与HTTP ...

  10. prometheus配置pushgateway功能测试

    一.环境: 1.prometheus服务器ip:192.168.0.208 2.node-exporter客户机ip:192.168.0.202 二.测试设计考虑: pushgateway类似一台信息 ...