题目


题目链接

解题思路

首先有一个关键性质:我们一定是从某个点开始一直往下走,然后一直往右下走。
从 ( 1 , i ) (1,i) (1,i)走到 ( x , y ) (x,y) (x,y)的代价是 s u m [ y ] − s u m [ i ] + ( x − y + i ) ∗ a [ i ] sum[y]-sum[i]+(x-y+i)*a[i] sum[y]−sum[i]+(x−y+i)∗a[i]。
由于查询的是整点,我们直接使用李超树维护下凸壳即可。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;#define lson rt * 2
#define rson rt * 2 + 1typedef long long ll;void read(int &x) {x = 0; char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
}void write(int x) {if (x > 9) write(x / 10);putchar(x % 10 + '0');
}const int N = 1e5 + 100;struct node {int l, r, id;
}qu[N];bool operator < (node a, node b) {return a.r < b.r;
}int n, m;
int sa[N], sum[N], ans[N];int get(int i, int d) {if (i == 0) return 1e9;return -sum[i] + (i - d) * sa[i];
}int tree[N * 4];void insert(int id, int l, int r, int rt) {if (tree[rt] == 0) return void(tree[rt] = id);int m = (l + r) / 2;if (get(tree[rt], m) > get(id, m)) swap(tree[rt], id);if (l == r) return;if (get(tree[rt], r) > get(id, r)) insert(id, m + 1, r, rson);else insert(id, l, m, lson);
}void insert(int rl, int rr, int id, int l, int r, int rt) {if (rl == l && rr == r) return void(insert(id, l, r, rt));int m = (l + r) / 2;if (rr <= m) insert(rl, rr, id, l, m, lson);else if (m < rl) insert(rl, rr, id, m + 1, r, rson);else {insert(rl, m, id, l, m, lson);insert(m + 1, rr, id, m + 1, r, rson);}
}int query(int id, int l, int r, int rt) {if (l == r) return get(tree[rt], id);int m = (l + r) / 2;if (id <= m) return min(get(tree[rt], id), query(id, l, m, lson));else return min(get(tree[rt], id), query(id, m + 1, r, rson));
}int main() {//freopen("0.txt", "r", stdin);read(n);for (int i = 1; i <= n; i++) read(sa[i]), sum[i] = sum[i - 1] + sa[i];read(m);for (int i = 1; i <= m; i++) read(qu[i].l), read(qu[i].r), qu[i].id = i;sort(qu + 1, qu + m + 1);for (int i = 1, j = 1; i <= n && j <= m; i++) {insert(0, i, i, 0, n, 1);while (j <= m && qu[j].r == i) {ans[qu[j].id] = sum[i] + query(qu[j].r - qu[j].l, 0, n, 1);j++;}}for (int i = 1; i <= m; i++) write(ans[i]), puts("");return 0;
}

51nod1488 帕斯卡小三角形相关推荐

  1. CSS导航条菜单:带小三角形

    很多网页的导航条都会有小三角形,其实实现这个功能也挺简单. 拿菜鸟教程首页导航做个例子 首先写一个大的div_nav,而"首页""菜鸟笔记""菜鸟工具 ...

  2. css伪类(before)实现小三角形

    css伪类(before)实现小三角形 效果 代码 &::before {position: absolute;top: -6px;left: 38px;content: '';border- ...

  3. css实现带小三角形的边框

    主要方法是使用伪元素before和after,之前已经总结过伪元素before.after用法,它们效果相当于在标签的内部放置一个最前或者最后的标签,添加的标签同样的能够继承父元素的属性,那么通过伪元 ...

  4. CSS中如何制作出小三角形?

    css中制作小三角形思路(我是通过边框制作的): 先想好自己想设置方向朝哪边的三角形,这里我制作方向朝上的三角形(其他方向类似) 代码即思路如下: <!DOCTYPE html> < ...

  5. html实现小三角形

    用html实现小三角形 完整代码如下: <!DOCTYPE html> <html><head><meta charset="utf-8" ...

  6. html css 科技感异形边框,CSS边框外的小三角形+阴影效果的实现。

    ...虽然是一个很小的问题,但其实还是挺实用的. 实现一个边框外的角. 用纯CSS来写. 一开始实现的效果是这个样子的. 但是这个效果没有办法给他附带阴影,所以换了一种写法.实现成了这个样子 想要实现 ...

  7. EXCEL表格中单元格的左上角的绿颜色小三角形怎么添加?怎么消除?

    EXCEL表格中单元格的左上角绿颜色的小三角形: 因为EXCEL有个自动检查错误的功能,出现绿色小三角是在提示用户:这里的单元格和周围的单元格存储的形式不一样,一般周围的是用数据形式存储的而带上绿色小 ...

  8. android三角形切图软件,还在为小三角形切图?使用纯CSS写一个简单的三角形

    同学们,当美工给的设计图是这样: 或者这样: 我的内心其实是拒绝的-_-:但工作还得干,大部分同学会写 .icon{width:20px;height:20px;display:block;margi ...

  9. 如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试

    概览 在 App 调试运行中,小伙伴们可能突然会发现 Xcode 界面里多了不少紫色的小三角形图标: 这些是运行时问题(Runtime issues),表示 App 在实际运行中被发现的一些" ...

最新文章

  1. Java基础、多线程、JVM、集合八股文自述(持续更新)
  2. 剑指offer:滑动窗口最大值
  3. 判断一个路径串是否为有效目录
  4. Dynamics CRM 注册插件dll到GAC
  5. 2017年对口招生c语言及答案,2017年计算机专业对口考试试卷及答案.doc
  6. 手机计算机快速切换功能,群控系统快速切换多部手机
  7. 在开发IE插件时,遇到的各种问题记录
  8. C语言编程基础,手机购物程序的设计
  9. android textview html font标签不好用
  10. php唯美博客,24个很酷的PHP开源库
  11. 仅10天修复3个零日漏洞 苹果是真的拼了命
  12. hexo(sakura)给博客增添侧边栏(回到顶部,跳转评论,深色模式,播放音乐)Valine-1.4.4新版本尝鲜+个性制定(表情包、qq头像、UI样式)
  13. Map对象 map.get(key)
  14. HTTP必须知道的几种状态码
  15. pdfwin10闪退_windows10打开pdf文件3秒后秒退
  16. C#基于NAudio的声音识别(一)——录制与切割
  17. catia 斑马线分析_在CATIA中使用斑马线检查曲面光顺性的方法 | 坐倚北风
  18. addrow是什么意思java_如何在JTable中添加行?
  19. 汽车java歌曲_开车必备100首歌曲 2019车载歌曲 50首适合开车听的歌曲 车载必听...
  20. 倒排索引的理论和代码实现

热门文章

  1. 高压放大器驱动压电器件工作原理
  2. SpringBoot+vue前后端分离博客项目
  3. unity 扎金花比大小
  4. 山东大学单片机原理与应用实验 3.2 拓展并行I/O口实验
  5. 一位工作8年程序员的成长感悟,值得深思
  6. mysql中depart_MySQL基础语法
  7. 12、FPGA程序的固化和下载
  8. 华米2020,硬件继续去小米化、加强健康数据服务探索
  9. 如何编辑维基百科词条?WIKI词条编辑技巧
  10. 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统