夜暗方显万颗星,灯明始见一缕尘

news/2024/11/25 15:43:32/

题目链接:L-夜暗方显万颗星,灯明始见一缕尘_第十八届西南科技大学ACM程序设计竞赛(同步赛) (nowcoder.com)

人不该太清醒,过去的事情就让它过去,不必反复咀嚼。一生不长,重要的事儿也没那么多。天亮了,又赚了。自认为迷惑的时候,往往才能看清方向与人生美好的可贵与价值意义。

顺应生活之路,无论走向哪种极端,我们都会在不一样的处境找到不一定的答案,从而不断平衡自己。我们需要这样一种能力,也需要去选择认同。自认为不错的时候,往往可以瞥见我们人生生活上本来存在的不足。

浩瀚星辰,万里银河;红烛微尘,夜临灯始。我们把这个夜空看做一个二维平面,则以某一点为原点建立一个笛卡尔坐标系。坐标系内有以下物体:"星"、"尘"、"灯"。

①:"星"是一个 n×m 的矩形区域,它能够发出光芒。其左下角顶点坐标为 (0,0) ,右上角顶点坐标为 (n,m)。

②:"尘"是一个 x×y 的矩形区域,它可以也必须完全放置在"星"的表面之上,遮蔽"星"所发出的光芒。保证"尘"至少有一种完全放置在"星"的范围内的方法。

③:"灯"是"尘"遮蔽了"星"之后,"星"剩下的部分 (剩余部分通常是 "L" 型或 "一字" 型) 。

"灯"中的每一个矩形都能为"灯"提供 1 点能量。给定"星"的位置和"尘"的大小,请制订一个放置"尘"的方案,使得"灯"能提供的总能量最多,求出这个最多的总能量数。("尘"必须完全放置在"星"的范围内,即:"尘"  "星" = "星" 且 "尘"  "星" = "尘" )

输入描述:

输入仅一行,输入 4 个正整数 n,m,x,y (1≤n,m≤103,1≤x,y≤min(n,m)),分别表示"星"的区域以及"尘"的大小。

输出描述:

输出仅一个整数,表示"灯"最多可以提供的总能量数。

示例1

输入

1 3 1 1

输出

3

示例2

输入

2 3 1 2

输出

9

这是一个结论题,队伍在打比赛时被卡了好久,第一眼看起来像是一个递推,在这里有一个结论。

首先,题目要求的是在大矩形边长分别为(n,m)中加入一个小矩形(x,y),求剩余部分的矩形的子矩形的最多的数量。

首先需要推断出,证明就不放了,需要用到均值不等式且比较繁琐(我不会)。其实不难看出将这个小矩形放在角落应该是最合适的,能够方便其他图形连成片,使得总数最多。

所以最大值就变成了两者之一。也就是大矩形的长和小矩形长同向,或者大矩形和小矩形的长垂直。

剩余部分是一个“L”形或者特殊情况是一个矩形。L形的矩形数量可以通过用两个大矩形减去中间共有的小矩形的子矩形数量求得。

故在此封装函数,便于求在矩形中的子矩形的数量。

将矩形看成一维的,总数就是n*(n+1)/2。若将其看成二维,则是(n*(n+1)/2)*(m*(m+1)/2)。

代码如下:

#include<iostream>
using namespace std;
typedef long long ll;
ll get(ll x)
{return x*(x+1)/2;
}
ll sum(ll n,ll m)
{ll res=get(n)*get(m);return res;
}
ll maxn=0;
int main()
{ll n,m,x,y;cin>>n>>m>>x>>y;if(n>=x&&m>=y){maxn=sum(n-x,m)+sum(n,m-y)-sum(n-x,m-y);}//cout<<maxn;if(n>=y&&m>=x){maxn=max(maxn,sum(n-y,m)+sum(n,m-x)-sum(n-y,m-x));}cout<<maxn;return 0;
}


http://www.ppmy.cn/news/722689.html

相关文章

Excel添加目录索引

sheet比较多的时候&#xff0c;在第一个sheet设置成目录索引可以方便的处理的找到相关表。仅仅记录步骤&#xff0c;excel的公式原理未知。 step1 选中B1单元格&#xff0c;单击公式-定义名称。 输入名称【索引目录】&#xff0c;引用位置公式 INDEX(GET.WORKBOOK(1),ROW(A1)…

word导航窗显示二级目录

想要的效果 二级标题的文字必须独占一行&#xff0c;否则无法在导航窗口中出现。 自定义标题的样式&#xff1a; 选中文字&#xff0c;在工具栏中的“ 标题 n ” 按钮上右击&#xff0c;选择 “ 修改 ”

《工程建设监理》

题目&#xff1a;我国建设领域改革实行了多项配套制度&#xff0c;其中项目法人责任制与建设工程监理制之间的关系是&#xff08;&#xff09; 题目&#xff1a;下列关于建设程序与建设工程监理关系的表述中&#xff0c;正确的是&#xff08;&#xff09; 题目&#xff1a;建…

重装系统重启后无法进入系统解决方法

重启无法进入系统怎么办?让大家平日里使用小白装机系统的话&#xff0c;很有可能会由于没有办法顺利的进行引导菜单而导致无法进入系统下面&#xff0c;小编今天教大家小白装机重启无法进入系统解决方法。 方法/步骤&#xff1a; 方法一&#xff1a;运用热键再次进入。 1、小…

电脑重装系统后无法连接网络怎么处理

​最近小编的台式电脑重装系统后无法连接网络&#xff0c;发现很多朋友也有同样的情况&#xff0c;那么遇到这种情况我们要如何处理呢?下面小编就来为大家讲解一下台式电脑重装系统后无法连接网络处理方法。 ​ 方法/步骤&#xff1a; 方法一&#xff1a;检查本地连接问题 …

二叉树Ⅱ · 二叉树的基本操作 · 二叉树的前序遍历/中序遍历/后序遍历 · 节点个数 · 叶子节点个数 · 二叉树高度 · 查询二叉树中val值的位置 · 平衡二叉树 · 对称二叉树

一、二叉树的遍历二、二叉树的基本操作2.1 常用接口2.2 实现代码 三、基础面试题3.1 二叉树的前序遍历3.2 二叉树的中序遍历3.3 二叉树的后序遍历3.4 检查两颗树是否相同3.5 另一颗树的子树3.6 二叉树最大深度3.7 判断一颗二叉树是否是平衡二叉树3.8 对称二叉树 一、二叉树的遍…

建立二叉树求前序遍历结果

在线刷题 (educoder.net) 大概还是递归吧 #include<iostream> using namespace std; #include<string>typedef struct BitNode{char data;BitNode *lchild,*rchild; }BitNode,*BiTree;BiTree createBiTree(string str,int& pos){if(str[pos]0){return NULL;}B…

赐他一块白石,石上写着新名

嘲笑他人是一件令人遗憾的事情。当你把目光都集中在别人的错误和缺点上时&#xff0c;就自然会忽略他们身上闪光的一面。而一个人只有具备了审视美好事物的能力&#xff0c;世界对他来说才会变得更加美好。你可以给自己找一个貌似合理的借口&#xff0c;比如你可以说&#xff1…