Codeforces 821B Okabe and Banana Trees 题解

来源:互联网 发布:自学python看什么书 编辑:程序博客网 时间:2024/06/05 08:38

题意

给你一条直线y=-x/m+b,给定m和b,你可以在第一象限包括坐标轴的区域内直线下方包括直线上选取一点,以它为右上顶点,以坐标原点为左下顶点作矩形,可以退化成线段甚至点,问在它之内包括边上的整点的权值之和最大是多少,一个整点的权值是其横纵坐标之和

思路

枚举纵向高度,根据等差数列求和公式计算权值和,再取最大值

代码

#include <cstdio>int main(){    long long m,b,ans,x;    scanf("%I64d%I64d",&m,&b);    ans=0;    for(long long i=0;i<=b;i++)    {        x=(b-i)*m;        if(ans<(x*(x+1)/2+x*(x+1)/2+i*(x+1))*(i+1)/2)            ans=(x*(x+1)/2+x*(x+1)/2+i*(x+1))*(i+1)/2;    }    printf("%I64d\n",ans);    return 0;}
原创粉丝点击