社区讨论

24pts求调

P10195[USACO24FEB] Quantum Moochanics G参与者 5已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mhj3ibqa
此快照首次捕获于
2025/11/03 20:07
4 个月前
此快照最后确认于
2025/11/03 20:44
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
#define int long long
struct node{
	int from,to,x;
};
bool operator<(node x,node y){
	if(x.x!=y.x) return x.x<y.x;
	return x.from<y.from;
}
bool operator>(node x,node y){
	if(x.x!=y.x) return x.x>y.x;
	return x.from>y.from;
}
int T,n,a[N],p[N],px,x,t,ti[N];
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>T;
	while(T--){
		priority_queue<node,vector<node>,greater<node> > q;
		cin>>n;
		for(int i=1;i<=n;i++) cin>>p[i],ti[i]=0;
		for(int i=1;i<=n;i++) cin>>a[i];
		for(int i=1;i<n;i++){
			px=p[i+1]-p[i],x=a[i]+a[i+1];
			t=(px+x-1)/x;
            t*=2;
            if(i&1) t--;
			q.push(node{i,i+1,t});
		}
		while(q.size()){
			int u=q.top().from,v=q.top().to,w=q.top().x;
			q.pop();
			if(ti[u]||ti[v]) continue;
			ti[u]=ti[v]=w;
			u--;v++;
			if(ti[u]||ti[v]) continue;
			if(!u||v>n) continue;
			px=p[v]-p[u],x=a[u]+a[v];
			t=(px+x-1)/x;
            t*=2;
            if(u&1) t--;
			q.push(node{u,v,t});
		}
		for(int i=1;i<=n;i++) cout<<ti[i]<<' ';
		cout<<'\n';
	}
	return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...