社区讨论
诡异的思路但连样例都过不了,求改
P10837『FLA - I』云音泛参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miebsg2z
- 此快照首次捕获于
- 2025/11/25 16:40 3 个月前
- 此快照最后确认于
- 2025/11/25 17:43 3 个月前
rt
CPP#include<bits/stdc++.h>
using namespace std;
int const N=2e5+5;
int st[N],ed[N];
vector<int>t;
int f[N<<1],g1[N<<1],g2[N<<1];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m; cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>st[i];
ed[i]=st[i]+m-1;
t.emplace_back(st[i]);
t.emplace_back(ed[i]);
}
sort(t.begin(),t.end());
t.erase(unique(t.begin(),t.end()),t.end());
for(int i=1;i<=n;i++){
st[i]=lower_bound(t.begin(),t.end(),st[i])-t.begin()+1;
ed[i]=lower_bound(t.begin(),t.end(),ed[i])-t.begin()+1;
f[st[i]]++;
f[ed[i]+1]--;
}
for(int i=1;i<=t.size();i++){
f[i]+=f[i-1];
int k=(i>1?t[i-1]-t[i-2]:t[i-1]);
g1[i]=g1[i-1]+(f[i]==1)*k;
g2[i]=g2[i-1]+(f[i]==2)*k;
}
int ans=g2[t.size()],add=0,minn=0x3f3f3f3f;
for(int i=1;i<=n;i++){
int tmp1=g1[ed[i]]-g1[st[i]-1];
int tmp2=g2[ed[i]]-g2[st[i]-1];
add=max(add,tmp2-tmp1);
minn=min(minn,tmp1);
}
ans=ans+add-minn;
cout<<ans;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...