• csuoj 1350: To Add Which?


    这个题目其实很简单,可惜当时比赛的时候看到出的人少,以为有trick,就和队友扯淡去了;

    因为每个数总是被相邻的数影响,所以往前往后扫两遍就行了;

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define maxn 100005
     5 using namespace std;
     6  
     7 int num[maxn];
     8 int num1[maxn];
     9 int num2[maxn];
    10  
    11 int main()
    12 {
    13     int t;
    14     int n,d;
    15     scanf("%d",&t);
    16     while(t--)
    17     {
    18         long long ans=0;
    19         scanf("%d%d",&n,&d);
    20         for(int i=0;i<n;i++)
    21         {
    22             scanf("%d",&num[i]);
    23         }
    24         num1[0]=num[0];
    25         num2[n-1]=num[n-1];
    26         for(int i=1;i<n;i++)
    27         {
    28             if(num1[i-1]-num[i]>d)
    29                 num1[i]=num1[i-1]-d;
    30             else num1[i]=num[i];
    31         }
    32         for(int i=n-2;i>=0;i--)
    33         {
    34             if(num2[i+1]-num[i]>d)
    35                     num2[i]=num2[i+1]-d;
    36             else num2[i]=num[i];
    37         }
    38         for(int i=0;i<n;i++)
    39         {
    40             ans+=max(num1[i],num2[i])-num[i];
    41         }
    42         printf("%lld
    ",ans);
    43     }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    通用分页后台显示
    自定义的JSP标签
    Java反射机制
    Java虚拟机栈---本地方法栈
    XML建模实列
    XML解析与xml和Map集合的互转
    [离散数学]第二次作业
    [线性代数]2016.10.13作业
    [数字逻辑]第二次作业
    [线性代数]2016.9.26作业
  • 原文地址:https://www.cnblogs.com/yours1103/p/3470232.html
Copyright © 2020-2023  润新知