Codefroces 821B Okabe and Banana Trees(暴力)

http://codeforces.com/problemset/problem/821/B

题目很简单,就是给出一个线段,然后在他和x轴,y轴围成的区域中取出一个矩形然后算出他的和,每个点的值是x+y。要求所取矩阵的所有点的值加起来尽量大。

我不知道我的猜想是不是对的,就是尽量取中间的点。所以我想到的方法就是暴力,直接每个矩形都暴力出来即可。取出最大值。然后就是这个算等差数列求和的时候会有爆long long的情况,所以要注意到。

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll myget(ll x, ll y){
	ll tmp = 0;
	if(x <= y){
		ll n = y + 1;
		for(ll i = 0; i <= x; i++){
			tmp += n * i + n * (n - 1) / 2;
		}
	}
	else{
		ll n = x + 1;
		for(ll i = 0; i <= y; i++){
			tmp += n * i + n * (n - 1) / 2;
		}
	}
	return tmp;
}

int main(){
	ll m, b, x, ans = 0, tmp;
	cin >> m >> b;
	for(ll y = b; y >= 0; y--){
		x = (y - b) * (-m);
		tmp = myget(x, y);
		ans = max(ans, tmp);
	}
	cout << ans << endl;
	return 0;
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值