FZU 2239 Daxia & Yayamao's problem 斜率优化
来源:互联网 发布:万方数据库中检索字段 编辑:程序博客网 时间:2024/06/09 21:56
题目链接点这里
我们先把a从小到大排序,询问x从小到大排序
我们可以发现,对于某对 ai和a(i+1)..如果我们有xi,此时取a(i+1)可以使xi的函数值最大的话,那么对于任意大于xi的x,取a(i+1)都比a(i)优,,所以我们就可以删除a(i),这就达到了斜率优化的要求。。。
推一下关系式可得,,我们需要维护一个斜率不断上升的凸包,,然后对于x,我们需要二分找到<=x的最大斜率,,这个就是x的最大值时的点。。
#include<algorithm>#include<iostream>#include<cmath>using namespace std;#define mem(x,y) memset(x,y,sizeof(x))#define FIN freopen("input.txt","r",stdin)#define fuck(x) cout<<x<<endlconst double eps=1e-7;const int MX=111111;#define INF 0x3f3f3f3f#define INFLL 0x3f3f3f3f3f3f3f3ftypedef long long LL;typedef pair<LL,LL> PLL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int n,m,nn;struct Nod{ LL a,b; bool operator <(const Nod x) const { if(a!=x.a) return a<x.a; return b>x.b; }};Nod arr[MX];Nod w[MX];double xielv[MX];LL erfeng(int l,int r,LL x){ int m; while(l<r) { m=((l+r)>>1)+1; if(fabs(xielv[m]-x)>eps&&xielv[m]>x)r=m-1 ; else l=m; } return w[l].a*x+w[l].b;}LL getup(Nod a,Nod b){ return -a.b-(-b.b);}LL getdown(Nod a,Nod b){ return a.a-b.a;}int main(){ //FIN; while(cin>>n>>m) { for(int i=0; i<n; i++) { LL a,b; scanf("%I64d%I64d",&arr[i].a,&arr[i].b); } sort(arr,arr+n); nn=0; for(int i=0; i<n; i++) { if(i&&arr[i].a==arr[i-1].a)continue; while(nn>=2&&getup(w[nn-2],w[nn-1])*getdown(w[nn-1],arr[i])>=getup(w[nn-1],arr[i])*getdown(w[nn-2],w[nn-1]))nn--; w[nn++]=arr[i]; } for(int i=0; i<nn; i++) { if(i==0)xielv[i]=-INF; else xielv[i]=(double)getup(w[i-1],w[i])/getdown(w[i-1],w[i]); } for(int i=0; i<m; i++) { LL x; scanf("%I64d",&x); printf("%I64d\n",erfeng(0,nn-1,x)); } } return 0;}
0 0
- FZU-2239 Daxia & Yayamao's problem(斜率优化)
- FZU 2239 Daxia & Yayamao's problem 斜率优化
- FZU 2238Daxia & Wzc's problem
- fzu 2238 Daxia & Wzc's problem
- fzu 2238 Daxia & Wzc's problem
- FZU Problem 2062 Suneast & Yayamao
- FZU 2238 Daxia & Wzc's problem【规律+lucas】
- FZU Problem 2238 Daxia & Wzc's problem(Lucas定理求组合数)
- FZU Problem 2240 Daxia & Suneast's problem(博弈+[单点更新,区间查询]线段树)
- 【数论】FOJ 2238 Daxia & Wzc's problem
- FZU Problem 2243 Daxia like uber(最短路)
- FZU 2243 Daxia like uber
- fzu 2243 Daxia like uber
- fzu - 2164 Jason's problem
- FOJ 有奖月赛 2016-8 C Problem C Daxia & Suneast's problem
- HDU 2993 MAX Average Problem 斜率优化
- 【DP+斜率优化】 hdu2993 MAX Average Problem
- HDU MAX Average Problem(斜率优化DP)
- springMVC 注解 controller层的优化
- Python:Matplotlib 画图(Code)
- 编译mysql ,出现 error: No curses/termcap library found
- Oracle PL/SQL开发基础(第七弹:ROWNUM伪列)
- androguard笔记
- FZU 2239 Daxia & Yayamao's problem 斜率优化
- SpringMVC介绍之视图解析器ViewResolver
- Serializable、Parcelable 的简介及区别
- js生成当月日历
- 题目1025:最大报销额
- 如何使用msysgit上传本地工程到GitHub
- jsp的3个编译指令(page,include,taglib)
- 6、http客户端httpie工具
- 如何重置CentOS7的Root密码