noi.ac NA531 【神树和物品】
今日成就:本来以为过了这题,然后被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 【神树和物品】的更多相关文章
- noi.ac #531 神树和物品
		
题目链接:戳我 决策单调性 (蒟蒻终于会写决策单调性啦!考试全场切这题就我不会啊嘤) (证明?不会啊,自己打表看QAQ) 44pts \(O(n^2)\)代码: #include<iostrea ...
 - noi.ac #528 神树和排列
		
题目链接:戳我 #include<iostream> #include<cstring> #include<cstdio> #include<algorith ...
 - noi.ac #529 神树的矩阵
		
题目链接:戳我 当 \(max(n, m) \ge 3\) 时,可以如下构造: 考虑下面这样三个矩阵,红 + 蓝 − 绿得到的矩阵是一个第一行和最后一行全是 1,其他地方全是 0 的矩阵. 那么如果需 ...
 - noi.ac #525 神树的权值
		
mcfx神仙的题qwq 题目链接:戳我 首先,我们知道30%的分还是挺好做的 直接枚举根,然后dfs一遍以\(O(n)\)的时间复杂度求出来有多少神仙点 代码如下: #include<iostr ...
 - # NOI.AC省选赛 第五场T1 子集,与&最大值
		
NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...
 - NOI.ac #31 MST DP、哈希
		
题目传送门:http://noi.ac/problem/31 一道思路好题考虑模拟$Kruskal$的加边方式,然后能够发现非最小生成树边只能在一个已经由边权更小的边连成的连通块中,而树边一定会让两个 ...
 - NOI.AC NOIP模拟赛 第五场 游记
		
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
 - NOI.AC NOIP模拟赛 第六场 游记
		
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
 - NOI.AC NOIP模拟赛 第二场 补记
		
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
 
随机推荐
- Java 多线程爬虫及分布式爬虫架构
			
这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法.前面几篇文章我们把 ...
 - JavaScript 基础入门11 - 运动框架的封装
			
目录 JavaScript 运动原理 运动基础 简单运动的封装 淡入淡出 不同属性的设置 多属性值同时运动 运动回调,链式运动 缓冲运动 加入缓冲的运动框架 案例1 多图片展开收缩 运动的留言本 Ja ...
 - ES 知识点
			
一.ES基于_version 进行乐观锁并发控制 post /index/type/id/_update?retry_on_conflict=5&version=6 1.内部版本号 第一次创建 ...
 - 查看自身公网ip的命令
			
curl ifconfig.me curl cip.cc curl ipinfo.io
 - 【并行计算】Windows系统下搭建MPI环境
			
Windows系统下搭建MPI环境 MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算.MPI的具体实现一般采用MPICH.下面介绍如何在Window ...
 - Laravel验证问题记录
			
1.当购物车提交时,POST传来一个对象{address:2,item:{ {ksu_id:2,count:2},{ksu_id:2,count:2}, } 验证方法: public function ...
 - oracle数据库表恢复到特定时间点
			
某一张表被应用软件里误操作把数据都清空了,现在想恢复到清空之间,比如2013年8月13日14点以前,应该怎样操作? 通过这个问题可以引发一系列的知识点串联. 1.如果开启闪回可以使用闪回表. 怎样查看 ...
 - 解决Eclipse发布到Tomcat丢失依赖jar包的问题
			
解决Eclipse发布到Tomcat丢失依赖jar包的问题 如果jar文件是以外部依赖的形式导入的.Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的. 可以通过Eclipse在 ...
 - Java NIO浅析 转至 美团技术团队
			
出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服 ...
 - 51nod 1251 Fox序列的数量 (容斥)
			
枚举最多数字的出现次数$k$, 考虑其他数字的分配情况. 对至少$x$种数出现$\ge k$次的方案容斥, 有 $\sum (-1)^x\binom{m-1}{x}\binom{n-(x+1)k+m- ...