社区讨论
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 条回复,欢迎继续交流。
正在加载回复...