反悔贪心求调
  • 板块P1484 种树
  • 楼主Lysea
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/4 18:46
  • 上次更新2024/7/4 20:53:03
查看原帖
反悔贪心求调
616733
Lysea楼主2024/7/4 18:46

80pts WA

#include<bits/stdc++.h>
#define N 1000005
#define int long long
#define INF 1e18
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
int n,m,a[N],pre[N],nxt[N],ans;
bool v[N];
priority_queue<pii >q;
signed main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;i++) 
		cin>>a[i],q.push({a[i],i}),pre[i]=i-1,nxt[i]=i+1;
	pre[1]=n,nxt[n]=1;
	for(int T=1;T<=m;T++){
		while(v[q.top().se]) q.pop();
		pii t=q.top(); q.pop();
		if(t.fi<=0) break;
		ans+=t.fi; int i=t.se;
		v[pre[i]]=v[nxt[i]]=true;
		a[i]*=-1,a[i]+=a[nxt[i]]+a[pre[i]];
		q.push({a[i],i});
		pre[i]=pre[pre[i]],nxt[i]=nxt[nxt[i]];
		nxt[pre[i]]=pre[nxt[i]]=i;
	}
	cout<<ans;
	return 0;
}
2024/7/4 18:46
加载中...