连夜补博客

ZJ:

看见T1就自闭了。(高考数学)(但是好像不是)

三个暴力就结束了。

35
Miemeng 20

00:00:41
10

00:00:41
10

00:00:41
40

00:00:41

TJ:

T1

又是凸包凹包口包吕包旧包巨包

那么我们先看下函数$f(x)=a x^2 + b x$

这函数好啊。

都过原点。

然鹅并没有用,

好象还是有点用的。

我们考虑化柿子(话说这玩意有什么柿子可说)

$a_1 x^2+b_1x < a_2 x^2 + b_2 x$

那么就可以分情况讨论了,

$x>0 , a_1 x + b_1 < a_2 x + b_2 $

$x<0 , a_1 x + b_1 > a_2 x + b_2 $

$x=0$直接输出$0$

我们发现可以用一条直线来‘代表’这个二次函数。

于是求$x>0$时的下凸包,$x>0$时的上凸包。

细节较多,尤其是……

还是见代码吧。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 555555
#define LL long long
#define LF long double
#define ans(k) ans[(k)+44444] using namespace std; int ln,qn;
struct Lines{
LL ar,br;
LL fig(LL x){
return ar*x*x+br*x;
}
}ps[N];
template <typename T>
class Mystack{
T A[N*10];
public:
int tp;
Mystack(){tp=0;}
T& operator [](const int id){return A[id];}
bool empty(){return tp==0;}
int size(){return tp;}
void clear(){tp=0;}
void push(const T k){A[tp++]=k;}
T top(){return A[tp-1];}
T ttop(){return A[tp-2];}
void pop(){tp--;}
void pour(){
puts("Stack:");
for(int i=0;i<tp;i++)
cout<<A[i].ar<<" "<<A[i].br<<endl;
puts("---------");
}
};
Mystack <Lines> st1,st2;
LL ans[N]; bool CMP1(const Lines &a,const Lines &b){
return a.ar==b.ar?a.br<b.br:a.ar<b.ar;
}
bool CMP2(const Lines &a,const Lines &b){
return a.ar==b.ar?a.br>b.br:a.ar<b.ar;
}
LF jud(Lines a,Lines b){
return 1.0l*(b.br-a.br)/(a.ar-b.ar);
} int main(){
#ifndef LOCAL
freopen("A.in" ,"r",stdin );
freopen("A.out","w",stdout);
#endif
int a;
scanf("%d%d",&ln,&qn);
for(int i=1;i<=ln;i++){
scanf("%lld%lld",&ps[i].ar,&ps[i].br);
}
sort(ps+1,ps+ln+1,CMP1);
for(int i=1;i<=ln;i++){
while(!st1.empty() && ps[i].ar==st1.top().ar) st1.pop();
while(st1.size()>=2 && jud(st1.top(),st1.ttop()) >= jud(ps[i],st1.ttop()))
st1.pop();
st1.push(ps[i]);
}
int j=0;
for(int i=1;i<44444;i++){
while(j<st1.tp-1 && jud(st1[j],st1[j+1])<=1.*i)j++;
ans(i)=st1[j].fig(i);
}
sort(ps+1,ps+ln+1,CMP2);
for(int i=1;i<=ln;i++){
while(!st2.empty() && ps[i].ar==st2.top().ar) st2.pop();
while(st2.size()>=2 && jud(st2.top(),st2.ttop()) <= jud(ps[i],st2.ttop()))
st2.pop();
st2.push(ps[i]);
}
j=0;
for(int i=-1;i>-44444;i--){
while(j<st2.tp-1 && jud(st2[j],st2[j+1])>=1.*i)j++;
ans(i)=st2[j].fig(i);
}
for(int i=1;i<=qn;i++){
scanf("%d",&a);
printf("%lld\n",ans(a));
}
}

T2T3咕了,不如右方跳链查询。

19-11-13-Night-∠的更多相关文章

  1. Java每日一面(Part1:计算机网络)[19/11/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[1] 1.1 HTTP简介 ​ HTTP协议,即超文本传输协议,属于应用层的协议,他是基于请求和响应模式的无状态的 应用层协议. ...

  2. 数列F[19] + F[13]的值

    已知数列如下:F[1]=1, F[2]=1, F[3]=5,......,F[n] =F[n-1] + 2*F[n-2],求F[19] + F[13]? #include <stdio.h> ...

  3. iOS app提交审核 11.13条款问题

    今年开年到现在.提交app应用一直招拒,这个问题我想不明白,感觉就是一个坑.所以贴出来给大家看看. 发件人 Apple11.13 - Apps that link to external mechan ...

  4. Notes of Daily Scrum Meeting(11.13)

    Notes of Daily Scrum Meeting(11.13) 今天邹欣老师给我们讲课大家还是很有收获的,大家课堂的参与度确实有了很大的提升,而且邹欣老师关于项目Scrum Meeting报告 ...

  5. 2017/11/13 Leetcode 日记

    2017/11/13 Leetcode 日记 463. Island Perimeter You are given a map in form of a two-dimensional intege ...

  6. VR/AR软件—Mirra测试(截至2017/11/13),使AR/VR创作更加便捷

    Mirra(截至2017/11/13)https://www.mirra.co/ 1.主要特点: 目前仅支持VR,不支持AR 在浏览器(仅支持chrome,firefox)上进行创作,但目前不能直接在 ...

  7. 11.13的C++##不想写结构,更不爱指针

    //2019.11.13 卑微的Loving-Q瞎写的程序 报错请更改VS中的SDL检查// 我要去嗨了,在线卑微 1 #include<iostream> #include<std ...

  8. Update 19.11 for Azure Sphere

    今天,微软发布了面向Azure Sphere的19.11更新,其主要亮点就是加入了对开发工具Visual Studio Code和Linux开发环境的支持.具体来讲,本次更新包含3个部分: 1. Az ...

  9. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  10. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest (11/13)

    \(2019-2020\ ACM-ICPC\ Brazil\ Subregional\ Programming\ Contest\) \(A.Artwork\) 并查集,把检测区域能在一起的检测器放在 ...

随机推荐

  1. webpack3

    6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...

  2. 15-MySQL-Ubuntu-数据表的查询-聚合函数(四)

    聚合函数 (1)count() 统计总数 查询男性总数 select count(*) as 男性 from students where gender=1; (2)max() 最大值 查询男性中年龄 ...

  3. javascript字符串方法学习汇总

    1.charAt(index) charAt(index):返回字符串中指定位置的字符 var str = 'abcdefghi'; console.log(str.charAt()); // 输出 ...

  4. duboo注解使用详解

    一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行. 当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止 ...

  5. iOS开发系列-修改项目工程名

    当前有项目工程名为iOS,需要修改工程名为IFLY.在修改前注意备份项目 修改项目名 出现弹框,点击Rename 修改工程目录文件名 注意Tests与UITests不要删除 选中IFLY.xcodep ...

  6. 最大流拆点——hdu2732,poj3436

    一种很普遍的做法就是把一个带有容量的点拆成两个点,一个入点一个出点,链接两个点的边的权值为这个点的容量 hdu3732 #include<cstdio> #include<cstri ...

  7. 14 win7 sp1下安装vs2015

    0 引言 在win7下安装vs2015的时候遇到了很多问题,看了很多帖子,尝试了很多次,终于成功了.网上也有大量关于win7 sp1下安装vs2015的帖子,我在安装的时候也参考了很多相关经验,这次写 ...

  8. 蒙特卡罗定位(Particle Filter Localization)

    1. 蒙特卡罗定位 定位:机器人知道地图信息的情况下如何利用传感器信息确定自己的位置(Localization). 有人会说,定位是不需要地图信息的.机器人知道初始位置,知道左右轮的速度,就可以算出在 ...

  9. 如何在CRichEditCtrl控件中直接读如RTF格式的文件(这个是通过流的方式来读取文件)

    如何在CRichEditCtrl控件中直接读如RTF格式的文件   Inserting an RTF string using StreamIn   ------------------------- ...

  10. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...