关于今日月赛 Div2 T2 的做法
  • 板块灌水区
  • 楼主MuYC
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/1/23 20:42
  • 上次更新2023/11/5 04:29:56
查看原帖
关于今日月赛 Div2 T2 的做法
67817
MuYC楼主2021/1/23 20:42
#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int MAXN = 1e6 + 50;
int n,A[MAXN],B[MAXN],ML[MAXN],MR[MAXN],now = 0;

priority_queue <int> q ;

struct S {
	int id,data;
} N[MAXN];

inline int read() {
	int x = 0 , flag = 1;
	char ch = getchar() ;
	for( ; ch > '9' || ch < '0' ; ch = getchar()) if(ch == '-') flag = -1;
	for( ; ch >= '0' && ch <= '9' ; ch = getchar()) x = (x << 3) + (x << 1) + ch - '0';
	return x * flag;
}

bool cmp(S a1 , S a2) {
	return a1.data > a2.data;
}

signed main() {
	n = read();
	for(int i = 1 ; i <= n ; i ++) A[i] = read() , N[i].id = i , N[i].data = A[i];
	sort(N + 1 , N + 1 + n , cmp);
	int Ans = -0x3f;
	q.push(0);
	for(int i = 1 ; i <= n ; i ++) {
		Ans = max(Ans , N[i].data * N[i].id);
		Ans = max((q.top() + N[i].id) * N[i].data , Ans);
		q.push(N[i].id);
	}
	cout << Ans;
	return 0;
}

RT,上面的优先队列做法是正确的吗?

2021/1/23 20:42
加载中...