社区讨论
关于T3部分分
学术版参与者 9已保存回复 20
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 18 条
- 当前快照
- 1 份
- 快照标识符
- @m0rzdfm8
- 此快照首次捕获于
- 2024/09/07 18:06 2 年前
- 此快照最后确认于
- 2025/11/05 00:24 4 个月前
rt,第一部分分是否有卡常?还是这份代码不是目标复杂度?
CPPconst int N=1e5+10;
int n,m;
struct node{
int x,t;
}a[N];
multiset<int>st;
vector<int>ve;
#define abs(x) ((x)>0?(x):-(x))
signed solution(){
cin>>n>>m;
for(int i=1;i<=n;++i)a[i].x=read(),a[i].t=read();
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j)st.insert(abs(a[i].x-a[j].x)/abs(a[i].t-a[j].t));
}
while(m--){
int u=read(),v=read();
ve.clear();
for(int i=1;i<=n;++i){
if(i!=u){
auto p=st.find(abs(a[u].x-a[i].x)/abs(a[u].t-a[i].t));
ve.push_back(*p);
st.erase(p);
}
}
for(int i=1;i<=n;++i){
if(i!=u)st.insert(abs(a[u].x-a[i].x)/abs(v-a[i].t));
}
auto p=st.end();
--p;
printf("%d\n",*p);
for(int i:ve)st.insert(i);
for(int i=1;i<=n;++i){
if(i!=u)st.erase(st.find(abs(a[u].x-a[i].x)/abs(v-a[i].t)));
}
}
return 0;
}
回复
共 20 条回复,欢迎继续交流。
正在加载回复...