今日成就:本来以为过了这题,然后被mcfx发现写假并针对地造了一组hack数据之后FST了。

复杂度什么的咱也不会证,咱也不会卡,被hack之后只能FST。

是个决策单调性sb题,但是由于太菜不怎么会写决策单调性于是胡搞了一波,然后还是被mcfx卡了\(\mathcal{O}(n^2)\),成功\(100\rightarrow44\)。

单调队列写丑了我也没什么办法...sb挂sb题...

没啥说的了,直接扔代码:

#include<bits/stdc++.h>

using namespace std;

const int N=3e5+5;

int n,a[N],x[N],y[N];

void qread(int &xx){
xx=0;int ch=getchar();
while(ch<'0'||ch>'9'){
ch=getchar();
}
while(ch>='0'&&ch<='9'){
xx=xx*10+ch-'0';
ch=getchar();
}
} long long f[N]; long long calc(int l,int r){
int u=abs(a[r]-x[l]);
return 1LL*u*u*u+1LL*y[l]*y[l]*y[l];
} int dq[N],dqfr=1,dqen; int bs(int l,int r,int pos1,int pos2){
int mid;
while(l<r){
mid=(l+r)>>1;
f[pos1]+calc(pos1+1,mid)>=f[pos2]+calc(pos2+1,mid)?r=mid:l=mid+1;
}
return l;
} int main(){
qread(n);
for(int i=1;i<=n;i++){
qread(a[i]);
}
for(int i=1;i<=n;i++){
qread(x[i]);
}
for(int i=1;i<=n;i++){
qread(y[i]);
}
dq[++dqen]=0;
for(int i=1;i<=n;i++){
while(dqfr<dqen&&f[dq[dqfr]]+calc(dq[dqfr]+1,i)>=f[dq[dqfr+1]]+calc(dq[dqfr+1]+1,i)){
++dqfr;
}
f[i]=f[dq[dqfr]]+calc(dq[dqfr]+1,i);
while(dqen>dqfr&&bs(1,n+1,dq[dqen],i)<=bs(1,n+1,dq[dqen-1],dq[dqen])){
--dqen;
}
dq[++dqen]=i;
}
printf("%lld\n",f[n]);
return 0;
}

noi.ac NA531 【神树和物品】的更多相关文章

  1. noi.ac #531 神树和物品

    题目链接:戳我 决策单调性 (蒟蒻终于会写决策单调性啦!考试全场切这题就我不会啊嘤) (证明?不会啊,自己打表看QAQ) 44pts \(O(n^2)\)代码: #include<iostrea ...

  2. noi.ac #528 神树和排列

    题目链接:戳我 #include<iostream> #include<cstring> #include<cstdio> #include<algorith ...

  3. noi.ac #529 神树的矩阵

    题目链接:戳我 当 \(max(n, m) \ge 3\) 时,可以如下构造: 考虑下面这样三个矩阵,红 + 蓝 − 绿得到的矩阵是一个第一行和最后一行全是 1,其他地方全是 0 的矩阵. 那么如果需 ...

  4. noi.ac #525 神树的权值

    mcfx神仙的题qwq 题目链接:戳我 首先,我们知道30%的分还是挺好做的 直接枚举根,然后dfs一遍以\(O(n)\)的时间复杂度求出来有多少神仙点 代码如下: #include<iostr ...

  5. # NOI.AC省选赛 第五场T1 子集,与&最大值

    NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...

  6. NOI.ac #31 MST DP、哈希

    题目传送门:http://noi.ac/problem/31 一道思路好题考虑模拟$Kruskal$的加边方式,然后能够发现非最小生成树边只能在一个已经由边权更小的边连成的连通块中,而树边一定会让两个 ...

  7. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  8. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  9. NOI.AC NOIP模拟赛 第二场 补记

    NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...

随机推荐

  1. PTA --- Basic Level 1009 说反话

    1009 说反话 (20 point(s))   给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由 ...

  2. 【HANA系列】【第五篇】SAP HANA XS的JavaScript API详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第五篇]SAP HANA XS ...

  3. 【Python开发】Python中的class继承

    继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法.继承实现了代码的重用.重用已经存在的数据和行为,减少代码的重新编写,python在类名后 ...

  4. Processor 介绍

    1.概述 Sink Group允许用户将多个Sink组合成一个实体. Flume Sink Processor 可以通过切换组内Sink用来实现负载均衡的效果,或在一个Sink故障时切换到另一个Sin ...

  5. PTA(Basic Level)1030.完美数列

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤*m**p*,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. ...

  6. 为什么要学习Hive

    一 为什么要学习HIVE?   为什么不是ORACLE和MYSQL?   因为大数据时代 数据量成几何倍数增长,并且数据量非常庞大.大到要用PB EB这种量级去衡量.而我们的ORACLE/MYQL这种 ...

  7. typescript中类型断言好理解也好用

    类型断言是个好用的玩意,虽然typescript很强大,但是有时还不如我们知道一个值的类型,导致在开发过程中总是报一些令人头痛的类型错误.使用断言,简单来说就是先做好一个假设,使得编译通过. 我一开始 ...

  8. mysql开启和关闭安全模式

    今天在进行数据库UPDATE的时候出了一个问题,我把非主键的字段当作UPDATE的条件(筛选条件)时,提示了如下的语句 Error Code: 1175. You are using safe upd ...

  9. Django 模版语法与使用

    目录 Django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...

  10. Encryption (hard) CodeForces - 958C3 (树状数组)

    大意: 给定序列$a$, 要求将$a$分成$k$个非空区间, 使得区间和模$p$的和最小, 要求输出最小值. $k$和$p$比较小, 直接暴力$dp$, 时间复杂度是$O(nklogp)$, 空间是$ ...