关于最近打的几题斜率优化的总结。加几AC代码。
2013-11-21 13:03
232 查看
[b]斜率优化错误总结[/b]
网上说很多OJ桑的斜率优化大多都是模板题- -,结果每次都跪Orz。。。在此总结一些常见错误:
1:不得不说斜率优化很多时候计算式很长- -,代码容易错细节- -。
2:其次就是弹队头以及弹队尾的时候大小关系容易错,关键是除负数时要变号,
弹的时候边界要弄好,总的来说很多斜率优化都很像:推式子——>边弹边做边入队;
3:再者就是一些先后问题:
在处理队列的时候,尤其是弹队尾的时候,如果有推导式中有未知量要先计算,不然会弹WA- -;
4:还有队列初始化问题- -要机智点- -;
[b]代码:[/b]
1:锯木厂选址(CEOI2004试题)
土地并购(USACO精选49)
网上说很多OJ桑的斜率优化大多都是模板题- -,结果每次都跪Orz。。。在此总结一些常见错误:
1:不得不说斜率优化很多时候计算式很长- -,代码容易错细节- -。
2:其次就是弹队头以及弹队尾的时候大小关系容易错,关键是除负数时要变号,
弹的时候边界要弄好,总的来说很多斜率优化都很像:推式子——>边弹边做边入队;
3:再者就是一些先后问题:
在处理队列的时候,尤其是弹队尾的时候,如果有推导式中有未知量要先计算,不然会弹WA- -;
4:还有队列初始化问题- -要机智点- -;
[b]代码:[/b]
1:锯木厂选址(CEOI2004试题)
#include<cstdio> #include<algorithm> struct p{long long a,b;}t[50010]; long long l,n,top=0,tai=0,f[50010],s[50010]; bool cmp(const p&x,const p&y) {return (x.a<y.a)||(x.a==y.a&&x.b<y.b);} long double k(long long j1,long long j2 ) { return (long double)(f[j1]-f[j2])/ (long double)(t[j2+1].b-t[j1+1].b); } int main(){ scanf("%lld",&n); for (int i=1; i<=n; i++) scanf("%lld%lld",&t[i].a,&t[i].b); std::sort(t+1,t+n+1,cmp); for (int i=1; i<=n; i++) { while (l&&t[i].b>=t[l].b) l--; t[++l].a=t[i].a; t[ l].b=t[i].b; } for (int i=1; i<=l; i++) { while (top< tai&&k(s[top],s[top+1])<= t[ i ].a ) top++; f[i]=f[s[top]]+t[i].a*t[s[top]+1].b; while (top<=tai&&k(s[tai-1],s[tai])>=k(s[tai],i)) tai--; s[++tai]=i; } printf("%lld",f[l]); }
土地并购(USACO精选49)
相关文章推荐
- C++ 虚函数表解析
- Java虚拟机运行时的数据区
- 一周代码秀之[11.18~11.24 linq2xml面向对象]
- struts_hibernate登陆范例
- Java中split的用法
- C++ 默认成员函数、运算符重载 code
- 关于c++中模板 T 无法限制的替代方案template< T extends Base>
- Eclipse j2ee 插件安装
- python 专题十七 类
- 使用Eclipse平台进行调试
- c#读取Excel的列名问题
- 基本语言细节--《深度探索C++对象模型》--(5)Semantics of Construction,Destruction,and Copy-总结点
- 关于c语言中时间函数的一些归纳
- 关于c语言中时间函数的一些归纳
- gets和puts函数
- 向Python女神推荐这些年我追过的经典书籍
- MapReduce编程实例(三)
- 使用DBUnit集成Spring简化测试
- C语言新学备忘_1
- Mac下安装java开发环境