今日打卡:P2241 统计方形(数据加强版)
2026/8/2 2:58:45 网站建设 项目流程

呃,很抱歉有快大半年没更新了,主要是精力有限,不过有空的话我都会加紧更哒!

这么久没来洛谷,这……我哩个天翻地覆啊,我曾经的洛谷呢?!(已崩溃)

不过我看洛谷现在的题单挺好的,来试试《暴力枚举》(嗯兑,暴力的艺术)

今天的运势……

好恐怖,吓哭了

好啦话不多说,上题解!!!


对于这道题,我们先考虑第一个问题

一、算正方形的个数

1.如果我们固定了正方形的右下角(i,j),你能不能算出此时可能的正方形的个数?

2.显然,此时答案为Min(i,j).

3.所以可以枚举右下角,计算此时答案,求和即可。

二、算长方形个数

1.其实算长方形并不常见,但算矩形大家应该经常遇到,所以如果你会算矩形,再联系第一个问题,那答案就转化为 矩形个数-正方形个数.

2.像求解正方形个数一样,固定矩形右下角(i,j),显然此时矩形个数为i*j.

3.同理,求和即可.

时间复杂度:O(n*m),是挺慢的,其实可以写成一个式子

代码如下:

#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main() { ll n,m,i,j,sum=0,sum1=0; cin>>n>>m; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { sum+=min(i,j); sum1+=i*j; } } cout<<sum<<" "<<sum1-sum<<endl; return 0; }

最后,还是向大家道歉,嗯,对不起!!!(求放过)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询