zoukankan      html  css  js  c++  java
  • CSU1350 To Add which?

    题目链接:

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1350

    这题目因为每一个数都跟相邻的数有关,所以可以从左到右和从右到左一次扫一遍即可

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #define M 100100
     4 using namespace std;
     5 
     6 int num[M],Max[M],Min[M];
     7 
     8 int max(int a,int b)
     9 {
    10     return a>b?a:b;
    11 }
    12 int main()
    13 {
    14     int T,n,D;
    15     long long ans;
    16     cin>>T;
    17     while(T--){
    18         ans=0;
    19         cin>>n>>D;
    20         for(int i=0;i<n;i++) cin>>num[i];
    21 
    22         Max[0]=num[0];
    23         for(int i=1;i<n;i++)
    24         {
    25             if(Max[i-1]-num[i]>D)
    26                 Max[i]=Max[i-1]-D;
    27             else Max[i]=num[i];
    28         }
    29 
    30         Min[n-1]=num[n-1];
    31         for(int i=n-2;i>=0;i--)
    32         {
    33             if(Min[i+1]-num[i]>D)
    34                 Min[i]=Min[i+1]-D;
    35             else Min[i]=num[i];
    36         }
    37 
    38         for(int i=0;i<n;i++) ans+=(max(Min[i],Max[i])-num[i]);
    39         cout<<ans<<endl;
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    c语言7-4
    c语言 7-4
    dfs
    dfs
    二进制搜索
    BFS
    搜索多层图
    八皇后
    线段树-周长并
    线段树
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/3870750.html
Copyright © 2011-2022 走看看