• Codeforces Round #420 (Div. 2)


    题目链接:http://codeforces.com/contest/821/problem/B

    题意:二维每个整点坐标(x,y)拥有的香蕉数量为x+y,现在给你一个直线方程的m和b参数,让你找一个位于这个直线下方的点,该点与原点构成的长方形区域里面的香蕉数量最多。

    思路:由方程可以得知y的取值在[0,b]之间,所以枚举y,然后通过方程解出一个最接近解的整数x,然后就是普通的计算了。 对于计算通过预处理一个等差数列的前缀和就可以O(1)计算结果了。

    #define _CRT_SECURE_NO_DEPRECATE
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #include<queue>
    #include<vector>
    #include<time.h>
    #include<cmath>
    using namespace std;
    typedef long long int LL;
    const LL INF = 9223372036854775807;
    const int MAXN = 1e7 + 24;
    LL sum[MAXN];
    void Init(){
        sum[0] = 0;
        for (int i = 1; i < MAXN; i++){
            sum[i] = sum[i - 1] + i;
        }
    }
    int main(){
    //#ifdef kirito
    //    freopen("in.txt", "r", stdin);
    //    freopen("out.txt", "w", stdout);
    //#endif
    //    int start = clock();
        int m, b; Init();
        while (~scanf("%d%d",&m,&b)){
            LL ans = -1;
            for (int y = 0; y <= b; y++){
                LL x = (b - y)* m;
                if (x >= 0){
                    ans = max(ans, 1LL * (sum[y] * (x + 1) + sum[x] * (y + 1)));
                }
            }
            printf("%I64d
    ", ans);
        }
    //#ifdef LOCAL_TIME
    //    cout << "[Finished in " << clock() - start << " ms]" << endl;
    //#endif
        return 0;
    }
  • 相关阅读:
    01011_怎么打开任务管理器?win7打开任务管理器方法
    php入门之数据类型
    手把手教你开发jquery插件(三)
    手把手教你开发jquery插件
    php7.0新特性
    Java类和对象的概念
    php新手第一次安装mongo
    什么是SQL游标?
    C#学习笔记2
    转发一篇分析LinQ是什么?
  • 原文地址:https://www.cnblogs.com/kirito520/p/7094682.html
Copyright © 2020-2023  润新知