LOJ#2353 货币兑换
CDQ分治优化斜率优化DP。
有个结论就是每天买完卖完....知道这个之后考虑今天卖的是哪天买的就能写出n²DP了。
发现形式是fi = max(aibj + cidj)的形式。我们可以把ci除出来,就是斜率优化了。
然后发现横坐标和斜率全部没有单调性,于是CDQ分治搞一搞。
1 #include <bits/stdc++.h> 2 3 const int N = 1000010; 4 const long double eps = 1e-12; 5 6 long double a[N], b[N], c[N], R[N], f[N], s, k[N], v[N], w[N]; 7 int n, node[N], t[N], stk[N], top; 8 9 template <class T> inline void Max(T &a, const T &b) { 10 a < b ? a = b : 0; 11 return; 12 } 13 14 inline bool cmp_k(const int &a, const int &b) { 15 return k[a] < k[b]; 16 } 17 18 inline bool cmp_w(const int &a, const int &b) { 19 return w[a] < w[b]; 20 } 21 22 inline bool check(int a, int b, int c) { 23 if((v[b] - v[a]) * (w[c] - w[b]) + eps >= (v[c] - v[b]) * (w[b] - w[a])) { 24 return 1; 25 } 26 return 0; 27 } 28 29 void CDQ(int l, int r) { 30 31 //printf("CDQ : l = %d r = %d \n", l, r); 32 33 if(l == r) { 34 if(r > 1) f[r] *= b[r]; 35 Max(f[r], f[r - 1]); 36 v[r] = -f[r] / c[r]; 37 w[r] = -v[r] * R[r]; 38 //std::cout << "v[i] = " << v[r] << std::endl; 39 //printf("f = %.3f \n", f[r]); 40 return; 41 } 42 int mid = (l + r) >> 1; 43 CDQ(l, mid); 44 45 /// update 46 memcpy(t + l, node + l, (r - l + 1) * sizeof(int)); 47 std::sort(t + l, t + mid + 1, cmp_w); 48 std::sort(t + mid + 1, t + r + 1, cmp_k); 49 // build convex 50 stk[top = 1] = t[l]; 51 if(mid - l + 1 >= 2){ 52 stk[++top] = t[l + 1]; 53 for(int i = l + 2; i <= mid; i++) { 54 while(top > 1 && check(stk[top - 1], stk[top], t[i])) { 55 top--; 56 } 57 stk[++top] = t[i]; 58 } 59 } 60 // update f 61 //printf("top = %d \n", top); 62 int head = 1; 63 for(int i = mid + 1; i <= r; i++) { 64 int x = t[i]; 65 while(head < top && (v[stk[head]] - v[stk[head + 1]]) / (w[stk[head]] - w[stk[head + 1]]) + eps < k[x]) { 66 head++; 67 } 68 int y = stk[head]; 69 //printf("Max %.3f %.3f * %.3f \n", f[x], -v[y], (R[y] * a[x] + b[x])); 70 //Max(f[x], -v[y] * (R[y] * a[x] + b[x])); 71 Max(f[x], w[y] * k[x] - v[y]); 72 } 73 74 CDQ(mid + 1, r); 75 return; 76 } 77 78 int main() { 79 80 //freopen("in.in", "r", stdin); 81 //freopen("my.out", "w", stdout); 82 83 scanf("%d%Lf", &n, &s); 84 for(int i = 1; i <= n; i++) { 85 scanf("%Lf%Lf%Lf", &a[i], &b[i], &R[i]); 86 c[i] = a[i] * R[i] + b[i]; 87 //std::cout << "c[i] = " << c[i] << std::endl; 88 k[i] = a[i] / b[i]; 89 node[i] = i; 90 } 91 92 f[1] = s; 93 94 CDQ(1, n); 95 96 printf("%.3Lf\n", f[n]); 97 return 0; 98 }
AC代码
eps很重要...
转载于:https://www.cnblogs.com/huyufeifei/p/10547190.html
LOJ#2353 货币兑换相关推荐
- LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
题目:https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] %= p[ i ] ,因为在 multiset 里找的时候还需要真实值. 2.注意用 m ...
- 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...
- Loj #3111. 「SDOI2019」染色
Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...
- Loj #3055. 「HNOI2019」JOJO
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...
- Loj #6287 诗歌
link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列.... 但这太大材小用了(而且很可能被 ...
- [LOJ 6288]猫咪[CF 700E]Cool Slogans
[LOJ 6288]猫咪[CF 700E]Cool Slogans 题意 给定一个字符串 \(T\), 求一个最大的 \(K\) 使得存在 \(S_1,S_2,\dots,S_k\) 满足 \(S_1 ...
- Loj #2036. 「SHOI2015」自动刷题机
link : https://loj.ac/problem/2036 这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低. 所以直接上二分就行了,注意上限一定不要设 ...
- LOJ 3094 「BJOI2019」删数——角标偏移的线段树
题目:https://loj.ac/problem/3094 弱化版是 AGC017C . 用线段树维护那个题里的序列即可. 对应关系大概是: 真实值的范围是 [ 1-m , n+m ] :考虑设偏移 ...
- Loj 6485. LJJ 学二项式定理
Loj 6485. LJJ 学二项式定理 题目描述 LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了你 ...
最新文章
- 简单的面试题简解思路(搜集)
- 【无标题】物联网安全挑战:为什么企业现在必须评估它们
- 云钻还在吗 苏宁怎么解除实名认证_快手7天怎么养号,5步简易养号方案送上
- PhpStorm下Laravel代码智能提示
- mysql命令成功数值不变_MySQL基础知识精华汇总_3(mysql基础命令操作)
- React Native之APK文件签名及打包
- vscode使用教程-开始学习前端开发啦~
- 网页游戏是如何快速推广,寻找真实玩家。提高充值消费的。这里都有教程
- vue调用摄像头pc+移动端
- 线程的状态及状态转换
- 从码农到工程师:只要做到这6点
- 银行客户违约信息分析(数据挖掘)
- vue 重写element input限制字数
- Java对接云mas发送短信(https方式)
- JSP用户登录连接数据库
- (转载)constnbsp;charnbsp;*amp;nbs…
- QDateTime相关格式
- 北大方正集团收入突破千亿,在中国企业500强排名提升24位
- Problems and Solutions
- GPS软件接收机(1)——GPS信号捕获