zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Android应用增量更新
    corner2
    UIProject
    Argo
    flower-recognition
    Android-Chat-Widget
    leanchat-android
    Beautyacticle
    XianBicycle
    完整性约束(章节摘要)
  • 原文地址:https://www.cnblogs.com/kirito520/p/7094682.html
Copyright © 2011-2022 走看看