当前位置: 首页 > wzjs >正文

网站建设易客用python语言做网站

网站建设易客,用python语言做网站,淄博什么兼职的网站建设,环球资源平台的优势题目:link,点击这里喵。 简要题意: 有 nnn 根柱子依次排列,每根柱子都有一个高度。第 iii 根柱子的高度为 hih_ihi​。 现在想要建造若干座桥,如果一座桥架在第 iii 根柱子和第 jjj 根柱子之间,那么需要…

题目:link,点击这里喵。

简要题意:

nnn 根柱子依次排列,每根柱子都有一个高度。第 iii 根柱子的高度为 hih_ihi

现在想要建造若干座桥,如果一座桥架在第 iii 根柱子和第 jjj 根柱子之间,那么需要 (hi−hj)2(h_i-h_j)^2(hihj)2​​ 的代价。

在造桥前,所有用不到的柱子都会被拆除,因为他们会干扰造桥进程。第 iii 根柱子被拆除的代价为 wiw_iwi,注意 wiw_iwi 不一定非负,因为可能政府希望拆除某些柱子。

现在政府想要知道,通过桥梁把第 111 根柱子和第 nnn 根柱子连接的最小代价。注意桥梁不能在端点以外的任何地方相交。

对于 100%100\%100% 的数据,有 2≤n≤105;0≤hi,∣wi∣≤1062\le n\le 10^5;0\le h_i,\vert w_i\vert\le 10^62n105;0hi,wi106

解法:

首先可以想到 O(n2)O(n^2)O(n2)dpdpdp,记 Sn=∑i=1nwiS_n=\sum_{i=1}^nw_iSn=i=1nwi,我们有:
dpi=dpj+(hi−hj)2+Si−1−Sjdp_i=dp_j+(h_i-h_j)^2+S_{i-1}-S_j dpi=dpj+(hihj)2+Si1Sj 观察,想到斜率优化,移项化简:
dpi−hi2−Si−1=−2hjhi−Sj+hj2+dpjdp_i-h_i^2-S_{i-1}=-2h_jh_i-S_j+h_j^2+dp_j dpihi2Si1=2hjhiSj+hj2+dpj令:
{k=−2hjb=−Sj+hj2+dpjdpi=khi+b+hi2+Si−1\begin{cases} k=-2h_j \\ b=-S_j+h_j^2+dp_j\\ dp_i=kh_i+b+h_i^2+S_{i-1} \end{cases}k=2hjb=Sj+hj2+dpjdpi=khi+b+hi2+Si1
我们就能构建出一些关于 dpidp_idpi 一次函数,其中 hi2+Si−1h_i^2+S_{i-1}hi2+Si1 是在计算 dpidp_idpi 时处理的,可以把它认为是 “静态” 的,显然为了让 dpidp_idpi 尽量小,我们应当让 khi+bkh_i+bkhi+b 尽量小。

我们直接使用李超线段树来维护直线方便转移即可,几乎就是模板题了。

#include <bits/stdc++.h>#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3f
typedef long long lnt;using namespace std;struct my_stream {lnt x;operator lnt() {scanf("%lld", &x);return x;}
} ___read;
#define input() ___readconst int N = 4e6 + 10;
const lnt MAX_T = 2e6;int cmp(lnt x, lnt y) {if (x - y == 0) return 0;return x > y ? 1 : -1;
}struct line {lnt k, b;line() = default;line(lnt _b, lnt _k) : b(_b), k(_k) {}lnt operator()(lnt x) const { return k * x + b; }
} f[N];struct TTT {struct node {node *lf, *rt;int id;} _new[N], *rt;lnt _top;node *newnode() { return &_new[++_top]; }lnt max(lnt a, lnt b, lnt x) {lnt pd = cmp(f[a](x), f[b](x));if (pd == 0) return min(a, b);else if (pd == 1) return a;else return b;}void update(node *&cur, lnt l, lnt r, int id) {if (cur == NULL) cur = newnode();lnt mid = (l + r) >> 1;if (cur->id == 0) {cur->id = id;return;} else {if (max(cur->id, id, mid) == id) swap(cur->id, id);if (l == r - 1) return;if (max(cur->id, id, r - 1) == id) update(cur->rt, mid, r, id);else if (max(cur->id, id, l) == id) update(cur->lf, l, mid, id);}}lnt query(node *cur, lnt l, lnt r, lnt x) {if (cur == NULL) return -infll;lnt mid = (l + r) >> 1;lnt a = 0;if (x < mid) a = query(cur->lf, l, mid, x);else if (x >= mid) a = query(cur->rt, mid, r, x);return ::max(a, f[cur->id](x));}} t;lnt h[N], s[N], dp[N];lnt pf(lnt x) { return x * x; }int main() { //lnt n = input();for (lnt i = 1; i <= n; ++i) h[i] = input();for (lnt i = 1; i <= n; ++i) s[i] = s[i - 1] + input();f[1] = line(s[1] - pf(h[1]), h[1] * 2);t.update(t.rt, 0, MAX_T, 1);f[n + 1] = line(-infll, 0);t.update(t.rt, 0, MAX_T, n + 1);for (lnt i = 2; i <= n; ++i) {dp[i] = -t.query(t.rt, 0, MAX_T, h[i]) + pf(h[i]) + s[i - 1];f[i] = line(s[i] - pf(h[i]) - dp[i], h[i] * 2);t.update(t.rt, 0, MAX_T, i);}printf("%lld\n", dp[n]);return 0;
}

Tips:

  • 本题不用 double 喵。
  • 本题要开 long long 喵。
  • 本题李超线段树维护的是 hhh,所以其范围是 10^6 喵。
  • 文章中的李超线段树将所有都取负然后计算时再反过来。

文章转载自:

http://9xFHuKrq.jLrym.cn
http://c8fG7XHm.jLrym.cn
http://8OlYeXRl.jLrym.cn
http://GgcreElm.jLrym.cn
http://mYkE4mXF.jLrym.cn
http://Fv0taRR4.jLrym.cn
http://ZK56xHsd.jLrym.cn
http://MNXB3pGV.jLrym.cn
http://EYrenUb8.jLrym.cn
http://AmzqbxFt.jLrym.cn
http://MHgTwdc1.jLrym.cn
http://eT4RhfbR.jLrym.cn
http://wz1JK3Vh.jLrym.cn
http://gZmV1ROq.jLrym.cn
http://EsvOM4Qk.jLrym.cn
http://SahEs8Ye.jLrym.cn
http://jd8Gwaym.jLrym.cn
http://xNfm1SsF.jLrym.cn
http://3XAIZV92.jLrym.cn
http://FMHpC03R.jLrym.cn
http://V6kvn71b.jLrym.cn
http://4q6OOBYC.jLrym.cn
http://tGUpTkTH.jLrym.cn
http://YXlG07kT.jLrym.cn
http://iKMQsyFU.jLrym.cn
http://zqIL189w.jLrym.cn
http://wq0pum9k.jLrym.cn
http://VtF2Mr2j.jLrym.cn
http://Q4v2JgxM.jLrym.cn
http://QiakTpxF.jLrym.cn
http://www.dtcms.com/wzjs/628985.html

相关文章:

  • 襄阳建设网站公司phpcms网站seo怎么做
  • 广州个性化网站开发买完域名后怎么搭建个人网站
  • 如何查外贸网站外链海口建网站
  • 网站建设不用虚拟主机网站建设课件
  • 网站上怎么做弹目提醒网站备案必须要幕布吗
  • 电影网站源码系统百度排名 网站标题
  • 如何建设软件下载网站机械行业网站建设制作开发方案
  • 大型网站得多少钱wordpress主题设计导航
  • 做公司网站用哪个空间好光明网站建设
  • app开发 网站开发统称wordpress 图片自动下载文件
  • 初中电脑做网站的软件广州市律师网站建设价格
  • 温州网站建设钢筋工惠州网站建设哪家好
  • 太仓网站优化自己建网站免费
  • 建设网站是什么模式WordPress免费自动采集
  • 整站seo技术广东住房和城乡建设厅官方网站
  • 域名同时做邮箱和网站jiasale wordpress 插件
  • 成都解放号网站建设网站建设需要用到那些语言
  • 网站备案重要性学敏网站建设
  • 网站图片上浮动文字淄博亿泰信息技术有限公司
  • 网站有后台更新不了便宜的做网站公司
  • 怎么做游戏自动充值的网站重庆做网站价格
  • 美容院门户网站开发软件开发工具与环境实践报告
  • 网站直接访问公司设计一个网站
  • 网站建设的中期检查表软件开发流程pdf
  • 每天做任务得钱的网站公司建设网站费用如何入帐
  • 苏州市吴江区建设局网站网络设计制作服务
  • 文化建设基金管理有限公司网站网易企业邮箱过期了
  • 淘宝客网站开发需求书建设网站需要服务器
  • 物流网站的建设论文婚庆公司一条龙包括哪些
  • 响应网站和模板网站北京网站建公司新闻