bzoj1492 [NOI2007]货币兑换Cash
来源:互联网 发布:炒黄金的软件 编辑:程序博客网 时间:2024/04/29 19:08
传送门:[Submit]View Code
本来写了一个详细的题解。。。。。。。。
但是TM博客园不保存。。。。。。
于是我就直接复制论文了吧。。。。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cstring> 6 #include<cmath> 7 #define eps 1e-9 8 #define inf 0x7fffffff 9 #define ll long long10 #define N 10000511 using namespace std;12 struct data{double a,b,rate,k,x,y; int id;13 }q[N],t[N];14 double f[N];15 int s[N];16 int n;17 bool cmp(data a, data b){ return a.k>b.k;18 }19 double getk(int a,int b)20 {21 if(!b)return -1e20;22 if(fabs(q[a].x-q[b].x)<eps)return 1e20;23 return (q[b].y-q[a].y)/(q[b].x-q[a].x);24 }25 void solve(int l,int r)26 {27 if (l==r)28 {29 f[l]=max(f[l],f[l-1]);30 q[l].y=f[l]/(q[l].b+q[l].rate*q[l].a);31 q[l].x=q[l].rate*q[l].y;32 return;33 }34 int mid=(l+r)>>1,l1=l,l2=mid+1;35 for (int i=l; i<=r; i++)36 if (q[i].id<=mid) t[l1++]=q[i]; else t[l2++]=q[i];37 for (int i=l; i<=r; i++) q[i]=t[i];38 solve(l,mid);39 int top=0;40 for (int i=l; i<=mid; i++)41 {42 while (top>1 && getk(s[top-1],s[top]) < getk(s[top-1],i)+eps)top--;43 s[++top]=i;44 }45 s[++top]=0;46 int j=1;47 for (int i=mid+1; i<=r; i++)48 {49 while (j<top && getk(s[j],s[j+1])+eps > q[i].k) j++;50 f[q[i].id]=max(f[q[i].id],q[s[j]].x*q[i].a+q[s[j]].y*q[i].b);51 }52 solve(mid+1,r);53 l1=l;l2=mid+1;54 for (int i=l; i<=r; i++) 55 if ((q[l1].x<q[l2].x || l2>r) && l1<=mid) t[i]=q[l1++]; else t[i]=q[l2++];56 for (int i=l; i<=r; i++) q[i]=t[i];57 }58 int main()59 {60 scanf("%d%lf",&n,&f[0]);61 for (int i=1; i<=n; i++)62 {63 scanf("%lf%lf%lf",&q[i].a,&q[i].b,&q[i].rate);64 q[i].k=-q[i].a/q[i].b; q[i].id=i;65 }66 sort(q+1,q+1+n,cmp);67 solve(1,n);68 printf("%0.3lf",f[n]);69 }
日常一膜:CYS,CYY,LS,YZW,YWF,OYZX..............
0 0
- 【NOI2007】【BZOJ1492】货币兑换Cash
- bzoj1492: [NOI2007]货币兑换Cash
- [BZOJ1492][NOI2007]货币兑换Cash
- BZOJ1492: [NOI2007]货币兑换Cash
- [BZOJ1492][NOI2007]货币兑换Cash
- bzoj1492【NOI2007】货币兑换Cash
- BZOJ1492: [NOI2007]货币兑换Cash
- bzoj1492 [NOI2007]货币兑换Cash
- 【bzoj1492】[NOI2007]货币兑换Cash
- 【cdq分治】[Noi2007] bzoj1492 货币兑换Cash
- BZOJ1492【NOI2007】货币兑换
- [BZOJ1492][NOI2007]货币兑换Cash && CDQ分治+斜率优化
- bzoj1492 [NOI2007]货币兑换Cash (斜率DP+cdq分治)
- 【bzoj1492】[NOI2007]货币兑换Cash 斜率优化+set+凸包
- [BZOJ1492][NOI2007][CDQ分治][斜率优化][DP]货币兑换Cash
- [BZOJ1492][NOI2007]货币兑换Cash-斜率优化DP-CDQ分治
- bzoj1492 [NOI2007]货币兑换Cash(斜率优化+CDQ分治)
- [bzoj1492][cdq分治][斜率优化][NOI2007]货币兑换Cash
- bzoj1468
- bzoj2152
- bzoj2599
- MYSQL 5.7.3.0 安装注意事项
- bzoj 1036
- bzoj1492 [NOI2007]货币兑换Cash
- 泛型Class<T>和 T
- bzoj3963
- 集合学习--HashTable 源码初探
- Android 自定义dialog
- 学习记录
- sql语句中where 1=1的作用
- Java虚拟机(七)——理解四种引用类型
- 旋转图片