zoukankan      html  css  js  c++  java
  • 2021.3.8

    (mathcal{A})

    for (int j = 2; j <= m; ++j) {
    	for (int i = 1; i <= n; ++i)
    		g[i] = f[i];
    	int top = 0, k = 0;
    	for (int i = j - 1; i <= n; ++i) {
    		while (k < top && s[k + 1].y - s[k].y <= a[i] * (s[k + 1].x - s[k].x)) ++k;
    		f[i] = a[i] * s[k].x - s[k].y;
    		Vec u = Vec(a[i], a[i] * a[i] - g[i]);
    		while (top > k && cross(u - s[top - 1], s[top] - s[top - 1]) >= 0) --top;
    		s[++top] = u;
    	}
    }
    

    下面的慢很多

    for (int j = 2; j <= m; ++j) {
    	int top = 0, k = 0;
    	for (int i = j - 1; i <= n; ++i) {
    		while (k < top && s[k + 1].y - s[k].y <= a[i] * (s[k + 1].x - s[k].x)) ++k;
    		dp[i][j] = a[i] * s[k].x - s[k].y;
    		Vec u = Vec(a[i], a[i] * a[i] - dp[i][j - 1]);
    		while (top > k && cross(u - s[top - 1], s[top] - s[top - 1]) >= 0) --top;
    		s[++top] = u;
    	}
    }
    

    (mathcal{B})

    typedef long long ll
    ll x = 1e18 + 1
    ll y = (ll)1e18 + 1
    

    x还是1000000000000000000,y是1000000000000000001

  • 相关阅读:
    Rocky Linux8国内镜像源
    强制缓存和协商缓存的区别
    从源码来看VUE的执行流程
    plugin
    判断数据类型的方法
    获取函数参数
    BFC
    VUE的$nextTick
    HTTP
    JavaScript创建和触发自定义事件
  • 原文地址:https://www.cnblogs.com/herald/p/14498601.html
Copyright © 2011-2022 走看看