社区讨论
洛谷ACloj50求条
P4254[JSOI2008] Blue Mary 开公司参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjfpmxxq
- 此快照首次捕获于
- 2025/12/21 20:35 2 个月前
- 此快照最后确认于
- 2025/12/24 17:15 2 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
struct _{
double k,b;
}l[100005];
int n,tree[200005],cnt;
void add(double k,double b){
l[++cnt] = {k,b};
}
int ls(int x){
return x << 1;
}
int rs(int x){
return x << 1 | 1;
}
int calc(int X,double x){
return l[X].k * x + l[X].b;
}
void modify(int x,int l,int r,int X){
if (!tree[x]){
tree[x] = X;
return;
}
int mid = l + r >> 1;
if (calc(X,mid) > calc(tree[x],mid)) swap(tree[x],X);
if (l == r) return;
if (calc(X,l) > calc(tree[x],l)) modify(ls(x),l,mid,X);
if (calc(X,r) > calc(tree[x],r)) modify(rs(x),mid + 1,r,X);
}
double query(int x,int l,int r,int v){
if (!tree[x]) return log(0);
double ans = calc(tree[x],v);
if (l == r) return ans;
int mid = l + r >> 1;
if (v <= mid) ans = max(ans,query(ls(x),l,mid,v));
else ans = max(ans,query(rs(x),mid + 1,r,v));
return ans;
}
main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
while (n--){
string s;
double x,y;
int t;
cin >> s;
if (s[0] == 'Q'){
cin >> t;
cout << max(0ll,(int)((query(1,1,50000,t) / 100))) << "\n";
}
else{
cin >> x >> y;
add(y,x - y);
modify(1,1,50000,cnt);
}
}
return 0;
}
qwq
回复
共 0 条回复,欢迎继续交流。
正在加载回复...