标签:数组 pat -- names color nbsp val max col
#include<iostream> #include<math.h> using namespace std; const int INF = 1e9; const int MAXN = 3*1e5; int cost[MAXN], val[MAXN]; int N, num, a, b; int main() { cin >> N; for(int i = 1; i <= N;i++) { cin >> num; val[i] = val[N+i] = num; } for(int i = 1; i <= 2*N; i++) { cost[i] = val[i] + cost[i-1]; } cin >> num; while(num--) { cin >> a >> b; if(abs(a-b) == 1) { int temp = min(a,b); cout << val[temp] << endl; }else { if(a > b) swap(a,b); int temp = min(cost[b-1] - cost[a] + val[a], cost[N+a-1] - cost[b] + val[b]) ; cout << temp << endl; } } }
对于循环数组,可以将数组复制一倍。 思路源自 首位相连的数组的最大连续子段和
标签:数组 pat -- names color nbsp val max col
原文地址:https://www.cnblogs.com/dcklm/p/10351439.html