锯木厂选址 斜率dp优化
来源:互联网 发布:wps office 有mac版吗? 编辑:程序博客网 时间:2024/05/16 11:53
详细解释见点击打开链接
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<cstring>#include<cstdio>#include<ostream>#include<istream>#include<algorithm>#include<queue>#include<string>#include<cmath>#include<set>#include<map>#include<stack>#include<vector>#define fi first#define se second#define pii pair<int,int>#define inf (1ll<<60)#define eps 1e-8#define ll long longusing namespace std;const int maxn=30005;int n;ll d[maxn];ll w[maxn];ll x[maxn];ll cost[maxn];int deq[maxn];double slope(int i,int j){ return 1.0*(w[i]*x[i]-w[j]*x[j])/(w[i]-w[j]);}ll all(int i,int j){ if(i>=j) return 0; return cost[j]-cost[i-1]-w[i-1]*(x[j]-x[i-1]);}int main(){ freopen("two.in","r",stdin); freopen("two.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%I64d%I64d",&w[i],&d[i]); } w[0]=d[0]=x[1]=0; for(int i=1;i<=n;i++) { w[i]=w[i-1]+w[i]; x[i+1]=x[i]+d[i]; } w[n+1]=w[n]; cost[1]=0; for(int i=2;i<=n+1;i++) { cost[i]=cost[i-1]+w[i-1]*d[i-1]; } int s=0,e=-1; ll ans=inf; for(int i=1;i<=n;i++) { while(s<e && slope(deq[s],deq[s+1])<=x[i]) s++; while(s<e && slope(deq[e],deq[e-1])>=slope(i,deq[e])) e--; deq[++e] = i; ans=min(ans,cost[deq[s]]+all(deq[s]+1,i)+all(i+1,n+1)); } printf("%I64d\n",ans); fclose(stdin); fclose(stdout); return 0;}
0 0
- 锯木厂选址 斜率dp优化
- dp斜率优化 锯木厂选址(CEOI 2003)题解
- COGS锯木厂选址(斜率优化)
- 【CEOI2004】锯木厂选址(斜率优化入门题)
- 【CEOI2004】锯木厂选址(斜率优化入门题)
- 【BZOJ2684】【CEOI2004】锯木厂选址(斜率优化,动态规划)
- 【斜率优化】[CEOI2004]锯木厂选址——从这里开始斜率优化的大门
- bsoj 2684 锯木场选址(DP+斜率优化)
- Two Sawmills(锯木厂选址)
- ceoi2004 锯木厂选址
- [COGS 362]锯木厂选址
- [CEOI2004] 锯木厂选址
- CEOI2004锯木厂选址
- CEOI 2004 two 锯木厂(cogs)(斜率优化)
- bsoj 2684 【CEOI2004】锯木厂选址
- DP(斜率优化)
- 【斜率优化DP】Batch_Scheduling
- dp优化--斜率
- java 获取文件长度的几种方法的效率比较
- Android中父View和子view的点击事件
- iOS小白进阶之旅(二)
- Memcached深度分析
- 处理Xcode中编译的警告
- 锯木厂选址 斜率dp优化
- optim package
- 单件模式
- AltiumDesigner01——建立自己的集成库
- 4584699.html
- Shiro 与 Spring框架整合
- 小孩报数问题(3750)
- 【Huffman树】【贪心】【NOI 2015】【bzoj 4198】荷马史诗
- 20150814开始梳理