zoukankan      html  css  js  c++  java
  • arc 093 C – Traveling Plan

    题意:

    给出横坐标上一系列的点,一个人从0出发按照下标顺序访问每一个点,再回到0点。

    问每次如果去掉一个点,那么访问的距离变为多少。

    思路:

    去掉这个点,那么就减去这个点到上一点到这一点的距离,减去这个点到下一个点的距离,加上上一个点到下一个点的距离。。。。

    代码:

     1 #include <stdio.h>
     2 #include <map>
     3 using namespace std;
     4 
     5 const int N = 1e5 + 5;
     6 
     7 int a[N];
     8 int b[N];
     9 
    10 map<int,int> mmp;
    11 
    12 int mabs(int x)
    13 {
    14     return x >= 0 ? x : -x;
    15 }
    16 
    17 int main()
    18 {
    19     int n;
    20     
    21     scanf("%d",&n);
    22     
    23     for (int i = 1;i <= n;i++)
    24     {
    25         scanf("%d",&a[i]);
    26         
    27         mmp[a[i]]++;
    28     }
    29     
    30     int ans = 0;
    31     
    32     for (int i = 1;i <= n+1;i++)
    33     {
    34         ans += mabs(a[i] - a[i-1]);
    35     }
    36     
    37     for (int i = 1;i <= n;i++)
    38     {
    39         int tmp = ans - mabs(a[i-1] - a[i]) - mabs(a[i] - a[i+1]) + mabs(a[i+1] - a[i-1]);
    40         
    41         printf("%d
    ",tmp);
    42     }
    43     
    44     return 0;
    45 }
  • 相关阅读:
    json转换字符串
    windows下Xshell远程访问虚拟机
    win7去箭头指令
    n核CPU为什么计算速度达不到单核n倍
    vim字符串的替换
    转发的别人的vim编码和终端编码的设置
    音频操作
    scanf函数
    文字常量区和栈区区别
    Linux 进程
  • 原文地址:https://www.cnblogs.com/kickit/p/8809560.html
Copyright © 2011-2022 走看看