30pts TLE
查看原帖
30pts TLE
666796
Rainsleep楼主2022/7/17 19:30
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;



//考虑当我选取的矩形最大时我的体力值耗费最少
//题目给定一定为矩形

//画图发现其实就是每次在矩阵中选择一个最大的正方形,加上其周长 
//递归处理割去最大正方形的矩形 

ll n,m,res(0);

unsigned long long Area;

inline void solve(int l,int w)
{
	
	if(Area == 0)
	{
		printf("%lld",res);
		exit(0);
	}	
	
	int Edge(min(l,w));
	
	res+=Edge*4;
	
	Area -= pow(Edge,2);
	
	solve(max(l,w)-Edge,Edge);
}

int main()
{
	
	scanf("%lld %lld",&n,&m);
	
	Area = n*m;
	
	solve(n,m);
	
	return 0;
} 

/*

5 3

25

*/
2022/7/17 19:30
加载中...