本文主要是介绍Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round)---B. Journey Planning(1400水公式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给你个数组b,要你要求出来他所能构造的另外一个数组的和,构造条件是用b数组里的数并且b数组里的下标差要等于b数组里值的差,并且必须得是上升序列
思路:
把公式转换一下即可:i-j=bi-bj 并且i>j,交换一下i-bi=j-bj,所以我去数组里找下标和值差中和最多的值输出,注意为负的情况,开longlong
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+100;
int b[maxn];
signed main()
{int n,i,j,t;cin>>n;map<int ,int >m1;for(i=1;i<=n;i++){cin>>b[i];m1[b[i]-i]+=b[i];}int ans=0;for(auto x:m1){ans=max(ans,x.second);}cout<<ans<<endl;return 0;
}
这篇关于Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round)---B. Journey Planning(1400水公式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!