http://www.lydsy.com/JudgeOnline/problem.php?id=1568
写多了就觉着水了。。。
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 100001 double a[N<<2],b[N<<2]; bool have[N<<2]; long long ans; void read(int &x) { x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-‘0‘; c=getchar(); } } void change(int k,int l,int r,double A,double B) { if(!have[k]) { have[k]=true; a[k]=A; b[k]=B; return; } if(l==r) { a[k]=max(a[k],A); return; } else { if(A>a[k]+(r-l)*b[k]) { a[k]=A; b[k]=B; return; } if(a[k]>A+(r-l)*B) return; int mid=l+r>>1; if(A<a[k]) { if(A+(mid-l)*B>a[k]+(mid-l)*b[k]) { change(k<<1,l,mid,a[k],b[k]); a[k]=A; b[k]=B; } else change(k<<1|1,mid+1,r,A+(mid+1-l)*B,B); } else { if(A+(mid-l)*B>a[k]+(mid-l)*b[k]) { change(k<<1|1,mid+1,r,a[k]+(mid+1-l)*b[k],b[k]); a[k]=A; b[k]=B; } else change(k<<1,l,mid,A,B); } } } void query(int k,int l,int r,int p) { if(!have[k]) return; if(l==r) { ans=max(ans,(long long)a[k]); return; } ans=max(ans,(long long)(a[k]+(p-l)*b[k])); int mid=l+r>>1; if(p<=mid) query(k<<1,l,mid,p); else query(k<<1|1,mid+1,r,p); } int main() { int n,x; char c[8]; double s,p; read(n); while(n--) { scanf("%s",c); if(c[0]==‘Q‘) { read(x); ans=0; query(1,1,N-1,x); cout<<ans/100<<‘\n‘; } else { scanf("%lf%lf",&s,&p); change(1,1,N-1,s,p); } } }
1568: [JSOI2008]Blue Mary开公司
Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1706 Solved: 593
[Submit][Status][Discuss]
Description
Input
第一行 :一个整数N ,表示方案和询问的总数。
接下来N行,每行开头一个单词“Query”或“Project”。
若单词为Query,则后接一个整数T,表示Blue Mary询问第T天的最大收益。
若单词为Project,则后接两个实数S,P,表示该种设计方案第一天的收益S,以及以后每天比上一天多出的收益P。
1 <= N <= 100000 1 <= T <=50000 0 < P < 100,| S | <= 10^6
提示:本题读写数据量可能相当巨大,请选手注意选择高效的文件读写方式。
Output
对于每一个Query,输出一个整数,表示询问的答案,并精确到整百元(以百元为单位,
例如:该天最大收益为210或290时,均应该输出2)。没有方案时回答询问要输出0
Sample Input
10
Project 5.10200 0.65000
Project 2.76200 1.43000
Query 4
Query 2
Project 3.80200 1.17000
Query 2
Query 3
Query 1
Project 4.58200 0.91000
Project 5.36200 0.39000
Project 5.10200 0.65000
Project 2.76200 1.43000
Query 4
Query 2
Project 3.80200 1.17000
Query 2
Query 3
Query 1
Project 4.58200 0.91000
Project 5.36200 0.39000
Sample Output
0
0
0
0
0
0
0
0
0