社区讨论
为什么洛谷ac,cf上面wa1
P3527[POI 2011] MET-Meteors参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi6nzoje
- 此快照首次捕获于
- 2025/11/20 07:59 4 个月前
- 此快照最后确认于
- 2025/11/20 07:59 4 个月前
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=3e5+10,inf=1e9+10;
struct opt
{
int l,r,id,type;
ll v;
opt(int l=0,int r=0,int id=0,ll v=0,int type=0):l(l),r(r),id(id),v(v),type(type){}
}q[maxn<<1],tl[maxn<<1],tr[maxn<<1];
int ans[maxn],goal[maxn],belong[maxn];
int n,m,k,Q;
vector<int>v[maxn];
ll c[maxn];
inline void modify(int pos,ll val){for(int i=pos;i<maxn;i+=(i&(-i)))c[i]+=val;}
inline ll query(int pos){ll ret=0;for(int i=pos;i;i-=(i&(-i)))ret+=c[i];return ret;}
inline void add(int i,int tp,int f)
{
if(tp==1)modify(q[i].l,f*q[i].v),modify(q[i].r+1,-f*q[i].v);
else modify(q[i].l,f*q[i].v),modify(m+1,-f*q[i].v),modify(1,f*q[i].v),modify(q[i].r+1,-f*q[i].v);
}
void solve(int L,int R,int l,int r)
{
if(L>R)return;
if(l==r)
{
for(int i=L;i<=R;i++)
if(q[i].type==2)ans[q[i].id]=l;
return;
}
int mid=(l+r)>>1,cntl=0,cntr=0;
for(int i=L;i<=R;i++)
{
if(q[i].type!=2)
{
if(q[i].id<=mid)
{
add(i,q[i].type,1);
tl[++cntl]=q[i];
}
else tr[++cntr]=q[i];
}
else
{
ll val=0;int size=v[q[i].id].size();
for(int j=0;j<size;j++)val+=query(v[q[i].id][j]);
if(val<q[i].v)
{
q[i].v-=val;
tr[++cntr]=q[i];
}
else tl[++cntl]=q[i];
}
}
for(int i=L;i<=R;i++)if(q[i].type!=2&&q[i].id<=mid)add(i,q[i].type,-1);
int p=L;
for(int i=1;i<=cntl;i++)q[p++]=tl[i];
for(int i=1;i<=cntr;i++)q[p++]=tr[i];
solve(L,L+cntl-1,l,mid);solve(L+cntl,R,mid+1,r);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)scanf("%d",&belong[i]),v[belong[i]].push_back(i);
for(int i=1;i<=n;i++)scanf("%d",&goal[i]);
scanf("%d",&k);
ll v;
for(int i=1,l,r;i<=k;i++)
{
scanf("%d%d%I64d",&l,&r,&v);
if(l>r)
{
q[++Q]=opt(l,r,i,v,3);
}
else q[++Q]=opt(l,r,i,v,1);
}
q[++Q]=opt(1,m,k+1,inf,1);
for(int i=1;i<=n;i++)
q[++Q]=opt(0,0,i,goal[i],2);
solve(1,Q,1,k+1);
for(int i=1;i<=n;i++)
if(ans[i]==k+1)puts("NIE");
else printf("%d\n",ans[i]);
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...