• 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);
        }
    }
    

      

  • 相关阅读:
    Python-24-多线程
    RT-Thread动态内存堆的使用
    Linux编程概念
    Linux_C语言基础
    文件IO_open(),read(),write(),lseek(),close()
    SourceTree跳转注册的方法
    Linux——软件安装
    初学DOM树解析xml文件
    简单json语句转化为map保存
    最大独立集求解
  • 原文地址:https://www.cnblogs.com/Przz/p/5409670.html
Copyright © 2020-2023  润新知