您的位置:首页 > 其它

Codeforces 821 B. Okabe and Banana Trees

2017-06-26 14:58 351 查看
题意:

在一个坐标系内,给定一个函数 y=x−m+b,求一个以原点和函数交点为顶点的矩形,并且矩形内坐标和最大。



算法:模拟

代码:

#include <bits/stdc++.h>

/*
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <iostream>
#include <map>
#include <queue>
#include <vector>
#include <set>
*/

using namespace std;

typedef long long LL;
typedef double DB;
typedef unsigned int UI;
typedef pair<int, int> PII;

const int inf = 0x7f7f7f7f;

#define rdi() read<int>()
#define rdl() read<LL>()
#define rds(a) scanf("%s", a)
#define mk(i, j) make_pair(i, j)
#define pb push_back
#define fi first
#define se second
#define For(i, j, k) for (int i = j; i <= k; i ++)
#define Rep(i, j, k) for (int i = j; i >= k; i --)
#define Edge(i, u) for (int i = head[u]; i; i = e[i].nxt)

template<typename t> t read() {
t x = 0; int f = 1; char c = getchar();
while (c > '9' || c < '0') f = c == '-' ? -1 : 1 , c = getchar();
while (c >= '0' && c <= '9') x = x * 10 + c - 48 , c = getchar();
return x * f;
}

template<typename t> void write(t x) {
if (x < 0){
putchar('-'), write(-x);
return;
}
if (x >= 10) write(x / 10);
putchar(x % 10 + 48);
}

long long ans, t, m, b, x, y;

int main() {
//  freopen(".in", "r", stdin);
//  freopen(".out", "w", stdout);
m = rdi(), b = rdi();
x = -m * -b;
for (int i = 0; i <= x; i += m) {
y = i / -m + b;
t = 0;
t = t + 1ll * (i + 1) * (1ll * y * (y + 1)) / 2 + 1ll * (i + 1) * i / 2 * (y + 1);
ans = max(t, ans);
}
write(ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: