zoukankan      html  css  js  c++  java
  • 【CF1016C】Vasya And The Mushrooms(模拟)

    题意:给定一个2*n的矩阵,每一个点有一个权值,从左上角出发,时间t=0开始,连续的走,将矩阵走完,

    每走一步,t++,并且得到t*当前格子的权值的值,求最大的权值和

    n<=3e5,1<=a[i][j]<=1e6

    思路:合法的构造方案如图

    记录几个前缀和,真的不想写这种题

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 typedef long long ll;
     6 using namespace std;
     7 #define N   310000
     8 #define oo  10000000
     9 #define MOD 1000000007
    10 
    11 ll s1[2][N],s2[2][N],s3[2][N],a[2][N];
    12 
    13 int main()
    14 {
    15     int n;
    16     scanf("%d",&n);
    17     for(int i=0;i<2;i++)
    18      for(int j=0;j<n;j++) scanf("%lld",&a[i][j]);
    19     for(int i=0;i<2;i++)
    20      for(int j=n-1;j>=0;j--)
    21      {
    22          s1[i][j]=s1[i][j+1]+a[i][j]*(j+1);
    23          s2[i][j]=s2[i][j+1]+a[i][j]*(n-j);
    24          s3[i][j]=s3[i][j+1]+a[i][j];
    25      }
    26     ll sum=0,ans=0;
    27     for(int i=0,j=0;j<n;j++,i^=1)
    28     {
    29         ll tmp=sum;
    30         tmp+=s1[i][j]+s3[i][j]*j;
    31         tmp+=s2[i^1][j]+s3[i^1][j]*(j+n);
    32         ans=max(ans,tmp);
    33         sum+=a[i][j]*(j*2+1);
    34         sum+=a[i^1][j]*(j*2+2);
    35     }
    36     for(int i=0;i<n;i++) ans-=a[0][i]+a[1][i];
    37     printf("%lld
    ",ans);
    38     return 0;
    39 }
    40     
  • 相关阅读:
    2
    3
    尚学堂--网络编程
    尚学堂--线程
    尚学堂--IO
    尚学堂--容器
    谈谈两个来月在小公司的经历
    Dockerfile详解
    docker 升级后或者重装后,启动容器提示:Error response from daemon: Unknown runtime specified docker-runc
    centos7系统优化
  • 原文地址:https://www.cnblogs.com/myx12345/p/9936811.html
Copyright © 2011-2022 走看看