博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2726: [SDOI2012]任务安排
阅读量:5938 次
发布时间:2019-06-19

本文共 981 字,大约阅读时间需要 3 分钟。

斜率优化,交叉相乘

#include
#include
using namespace std;int t[1000005],f[1000005];long long F[1000005],G[1000005],Sum[1000005],C[1000005];struct node{ long long k,b;}stack[1000005];double check(node a,node b){ return ((double)a.b-b.b)/(b.k-a.k);}int main(){ int n,S; scanf("%d%d",&n,&S); for (int i=1; i<=n; i++){ scanf("%d%d",&t[i],&f[i]); Sum[i]=Sum[i-1]+t[i]; C[i]=C[i-1]+f[i]; } int top=0; for (int i=0; i<=n; i++){ int L=1,R=top; while (L
>1; double l,r; if (mid==1) l=-1ll<<60; else l=check(stack[mid-1],stack[mid]); if (mid==top) r=1ll<<60; else r=check(stack[mid+1],stack[mid]); if (Sum[i]>=l && Sum[i]<=r){ L=mid; break; } else if (Sum[i]
=2 &&(stack[top].b-stack[top-1].b)*(line.k-stack[top].k)<= (line.b-stack[top].b)*(stack[top].k-stack[top-1].k))top--; stack[++top]=line; } printf("%lld\n",F[n]); return 0;}

  

 

转载于:https://www.cnblogs.com/silenty/p/9797835.html

你可能感兴趣的文章
练习方法--刻意练习
查看>>
多进程
查看>>
Java方式 MySQL数据库连接
查看>>
MATLAB2012 licence失效解决方法
查看>>
Android ListView初始化将实例化多少个item
查看>>
[LeetCode] Factorial Trailing Zeroes 阶乘末尾0
查看>>
消除字号标签<h1><h2><h3>的自动换行
查看>>
关于ListView的一些不常用到的属性
查看>>
php 对象数组互转
查看>>
文本超过长度后隐藏,显示省略号
查看>>
netstat常见参数
查看>>
wpf Loading动画 AkeemLoading
查看>>
Ubuntu 里面 apt-get 三个有关更新的命令的区别
查看>>
POJ 1019, Number Sequence
查看>>
activiti插件安装-离线安装
查看>>
[译]准备 2017 前端面试
查看>>
RecyclerView的刷新分页
查看>>
MySQL——循环(双重循环)
查看>>
Html5学习笔记---1
查看>>
无聊的时候就看看
查看>>