zoukankan      html  css  js  c++  java
  • hdu5586 BestCoder Round #64 (div.2)

    问题描述
    给n个数{A}_{1},{A}_{2}....{A}_{n}A1,A2....An,你可以选择一个区间(也可以不选),区间里每个数x变成f(x),其中f(x)=(1890x+143) mod 10007f(x)=(1890x+143)mod10007。问最后n个数之和最大可能为多少。
    输入描述
    输入有多组数据。
    每组数据第一行包含一个整数n.(1leq nleq {10}^{5})(1n105)
    第二行n个整数{A}_{1},{A}_{2}....{A}_{n}A1,A2....An.(0leq {A}_{i}leq {10}^{4})(0Ai104)
    数据保证 sum nleq {10}^{6}n106.
    输出描述
    对于每组数据输出一行答案.
    输入样例
    2
    10000 9999
    5
    1 9999 1 9999 1
    输出样例
    19999
    22033

    思路:

    对于输入的每个数求出他们进行运算后的差值,然后求最大区域和即可


    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    typedef long long ll;
    #define N 100050
    int f[N];
    int a[N];
    int main()
    {
        int T,n;
        while(scanf("%d",&n) != EOF)
        {
            int tsum = 0;
            int sum = 0;
            int tel = 0;
            for(int i = 1; i <= n; i++)
            {
                scanf("%d",&f[i]);
                tsum += f[i];
                int tt = (f[i]*1890+143)%10007-f[i];
                if(sum + tt < 0)
                {
                    tel = max(tel,sum);
                    sum = 0;
                }
                else
                {
                    sum += tt;
                    if(sum > tel)
                        tel=  sum;
                }
            }
            if(tel > 0)
                tsum += tel;
            printf("%d
    ",tsum);
        }
    }
    

      

  • 相关阅读:
    20200924-2 功能测试
    作业要求20200924-4 代码规范,结对要求
    20200924-1 每周例行报告
    20200929-git地址
    白名单
    作业要求 20200917-1 每周例行报告
    词频统计 SPEC
    20200910-1 每周例行报告
    20200924-3 单元测试,结对
    20200924-5 四则运算试题生成,结对
  • 原文地址:https://www.cnblogs.com/Przz/p/5409670.html
Copyright © 2011-2022 走看看