当前位置: 首页 > article >正文

洛谷P2660 zzc 种田

题目链接:P2660 zzc 种田 - 洛谷 | 计算机科学教育新生态

题目难度:普及一

题目背景

可能以后 zzc 就去种田了。

题目描述

田地是一个巨大的矩形,然而 zzc 每次只能种一个正方形,而每种一个正方形时 zzc 所花的体力值是正方形的周长,种过的田不可以再种,zzc 很懒还要节约体力去泡妹子,想花最少的体力值去种完这块田地,问最小体力值。

输入格式

两个正整数 x,y,表示田地的长和宽。

输出格式

输出最小体力值。

样例 

样例输入1

1 10
样例输出1

40

样例2

样例输入2

2 2

样例输出 2

8

题目分析这道题是一道贪心题,但是需要一些小小的优化。

首先,让我们来模拟一组数据:输入:2  11,易知最大可以先裁剪出5个边长为2的正方形,然后再裁剪出一个正方形,不难发现,每次都切一个边长为min(x,y)正方形,然后将短的那一边减掉这个边长,答案加上边长∗4即可。直到x和y中有一个为0就结束。

直接上代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 10010;
ll ans;
ll x,y; 

ll read()
{
	ll s=0,f=1;
	char ch=getchar();
	
	while (ch<'0'||ch>'9')
	{
   	   if (ch=='-') f=-1;
	   ch=getchar();
	}
	while (ch>='0'&&ch<='9')
	{
	   s=s*10+ch-'0';
	   ch=getchar();
	}
	return s*f;
}

int main() {
   
    x = read(),y = read();
    if(y > x) swap(x,y);
    
    while(true)
    {
    	ans += x / y * 4 * y;
    	x -= x/y * y;
    	if(y > x) swap(x,y);
    	if(x == 0 || y == 0) break;
    	
	}
	cout<<ans;
    return 0;
}



http://www.kler.cn/a/528976.html

相关文章:

  • 游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
  • MySQL知识点总结(十七)
  • 嵌入式知识点总结 Linux驱动 (七)-Linux驱动常用函数 uboot命令 bootcmd bootargs get_part env_get
  • 网站结构优化:加速搜索引擎收录的关键
  • Java内存模型 volatile 线程安全
  • RabbitMQ5-死信队列
  • 看深度求索如何思索自己的未来
  • 大模型培训讲师老师叶梓分享:DeepSeek多模态大模型janus初探
  • 并发模式:驾驭多线程的艺术
  • 修改题注标签
  • 架构技能(四):需求分析
  • linux为什么不是实时操作系统
  • LeGO LOAM坐标系问题的自我思考
  • Brave132 编译指南 Windows 篇:部署 depot_tools(三)
  • 【LeetCode 刷题】二叉树-修改与构造
  • Diffusion--人工智能领域的革命性技术
  • Node.js——body-parser、防盗链、路由模块化、express-generator应用生成器
  • C++中的析构器(Destructor)(也称为析构函数)
  • 01-六自由度串联机械臂(ABB)位置分析
  • 51单片机 01 LED
  • DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
  • 当卷积神经网络遇上AI编译器:TVM自动调优深度解析
  • python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法
  • 排查定位jar包大文件
  • kamailio-ACC模块介绍【kamailio6.0. X】
  • 996引擎 -地图-设置出生地