本文主要是介绍AtCoder Regular Contest 093(AtCoder Beginner Contest 092)题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
AtCoder Regular Contest 093
C题题意:给定N个点,求每次去掉一个点后,依次走过剩余每个点的距离和,最后需要返回起点。
C题题解:用一个数组B记录每个点和前面的点的距离,然后预处理出去掉当前点可以少走的距离,设k是当前点的前一个点和后一个点的距离,那么去掉当前点可以少走的距离就是b[i]+b[i+1]-k,那么结果就是所有和减去每个点可以少走的距离。
AC代码:
#include <bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<=b;i++)
const int maxn = 100006;
long long n,a[maxn],b[maxn],sum,c[maxn];
int main(int argc, char const *argv[])
{cin>>n;_for(i,1,n){cin>>a[i];b[i]=abs(a[i]-a[i-1]);sum+=b[i];}b[n+1]=abs(a[n]);sum+=b[n+1];_for(i,1,n)
这篇关于AtCoder Regular Contest 093(AtCoder Beginner Contest 092)题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!