CF1016CVasya And The Mushrooms(模拟)

Posted myx12345

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1016CVasya 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     

 

以上是关于CF1016CVasya And The Mushrooms(模拟)的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces - 1016D Vasya And The Matrix

CF 862C Mahmoud and Ehab and the xor(异或)

[CF842C]Ilya And The Tree

CF438D The Child and Sequence

CF 842C Ilya And The Tree(树上DFS)

[CF1250B] The Feast and the Bus - 贪心