Rectangle【思维+模拟】
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;
}
最新文章
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
- PHP AJAX上传文件
- 浅谈jQuery页面的滚动位置scrollTop、scrollLeft
- 详解MemCached原理
- xml string 相互转换
- TP复习4
- sql中时间的比较方法
- Hoax or what
- NOIP2006 作业调度方案
- onmouseleave与onmouseout区别
- AndroidManifest.xml--android系统权限定义
- kaggle之数字序列预测
- 深入解读JavaScript面向对象编程实践
- VB与报表的交互
- Jquery中toggleClass的两种用法
- node中间层实现文件上传
- MySQL Sending data导致查询很慢的问题详细分析【转载】
- Docker 安装MySQL5.7(三)
- 在阿里云Centos下LNMP环境搭建
- [转]关于ImportError: xxxx.so: undefined symbol: PyFPE_jbuf的解决方案
热门文章
- 避免scrollview内部控件输入时被键盘遮挡,监听键盘弹起,配合做滚动
- Jmeter执行多个sql查询语句
- web自动化之执行js脚本
- 微软:正式发布针对 .NET Core的 Winform 设计器
- [Android应用开发] 01.快速入门
- 慕零的黑夜-头条-第二期(CSDN)[导读:] CSDN的15个bug&;用户意见(很大) 作者:qq3461896724
- 设计Weekday类 代码参考
- 实验三 UML 建模工具的安装与使用
- Rocket - debug - Example: Selecting Harts
- Spring-boot01