勇者sky遇上的命中注定的恋人白羽竟然是妹妹2
题目大意
构造一个分段函数来拟合若干点(\(x_i , y_i\)),每一段是一个常函数,即
\left \{
\begin{aligned}
a_1& & (0\leq x <b_1) \\
a_2& & (b_1\leq x <b_2) \\
&......& \\
a_m& & (b_{m-1} \le x)
\end{aligned}
\right.
\]
误差的定义为
\]
最小化误差,\(k\)次询问
输入格式
第一行为一个整数\(n\)
后面\(n\)行每行两个自然数,\(x_i,y_i\)
下一行为一个整数\(k\)
后面\(k\)行每行一个正整数\(m_i\)
输出格式
\(k\)行,每行一个整数表示金光第i个询问的答案
\(tips\): 输出可能不为整数
输入样例 #1
2
1 2
5 5
1
1
输出样例 #1
1.5
输入样例 #2
4
1 8
2 19
3 8
4 12
2
2
3
输出样例 #2
5.5
2
输入样例 #3
10
344 9026
762 1512
1463 2024
1688 7200
3832 4384
7225 3868
9048 2158
9706 6899
9812 1720
9851 8398
3
3
1
6
输出样例 #3
2844
3757
2370.5
说明
\(1\leq n\leq 10^6\)
\(0\leq x_i,y_i\leq 10^9,x_i < x_{i+1}\)
\(\sum m\leq 2\times 10^4\)
若V表示值域,每组数据\(n,k,V,\sum m\)小于等于以下值
&N\!o.& & n & & k & &V & & \sum m \\
&1&& 10 & & 1 & &100 & & 1\\
&2&& 10 & & 1 & &100 & & 3 \\
&3&& 10 & & 3 & &10^4 & & 10 \\
&4&& 100 & & 1 & &10^5 & & 1 \\
&5&& 100 & & 1 & &10^5 & & 10 \\
&6&& 100 & & 10 && 10^5 & & 100 \\
&7&& 100 && 10 && 10^9& & 100 \\
&8&& 10^4 && 1 && 10^5 && 1 \\
&9&& 10^4 && 1 && 10^5 && 100 \\
&10&& 10^4 && 10 && 10^9& & 100 \\
&11&& 10^5 & &20 && 10^9 && 1000 \\
&12&& 10^5 && 100 && 10^9 && 10^4 \\
&13&& 10^6 && 1 && 10^9 && 1 \\
&14&& 10^6 & &1 & &10^9 & &100 \\
&15&& 10^6 && 10 && 10^9 && 100 \\
&16&& 10^6 && 10 && 10^9 && 2\times 10^4 \\
&17&& 10^6 && 200 && 10^9 && 2\times 10^4 \\
&18&& 10^6 && 200 && 10^9 && 2\times 10^4 \\
&19&& 10^6 && 200 && 10^9 && 2\times 10^4 \\
&20&& 10^6 && 200 && 10^9 && 2\times 10^4 \\
\end{aligned}\]
代码
#include<cstdio>
#include<iostream>
using namespace std;
const int N = 1e6;
int n , y[N + 5] , m , k , Min[N + 5][23] , Max[N + 5][23] , ans;
inline void prepare()
{
for(register int j = 1; (1 << j) <= n; j++)
for(register int i = 1; i + (1 << j) - 1 <= n; i++)
{
Min[i][j] = min(Min[i][j - 1] , Min[i + (1 << j - 1)][j - 1]);
Max[i][j] = max(Max[i][j - 1] , Max[i + (1 << j - 1)][j - 1]);
}
}
inline bool check(int mid , int m)
{
int l = 1;
for(register int i = 1; i <= m && l <= n; i++)
{
int r = l , smin = y[l] , smax = y[l];
for(register int j = 22;j >= 0; j--)
if (r + (1 << j) <= n)
{
int tmin = Min[r + 1][j] , tmax = Max[r + 1][j];
if (max(smax , tmax) - min(smin , tmin) <= mid)
{
r += (1 << j);
smax = max(smax , tmax);
smin = min(smin , tmin);
}
}
l = r + 1;
}
return l > n;
}
inline int work(int m)
{
int res , l = 0 , r = 1e9 , mid;
while (l <= r)
{
mid = (l + r) >> 1;
if (check(mid , m)) res = mid , r = mid - 1;
else l = mid + 1;
}
return res;
}
int main()
{
// freopen("a.in" , "r" , stdin);
scanf("%d" , &n);
for(register int i = 1; i <= n; i++)
{
scanf("%*d%d" , &y[i]);
Min[i][0] = Max[i][0] = y[i];
}
prepare();
scanf("%d" , &k);
while (k--)
{
scanf("%d" , &m);
ans = work(m);
if (ans & 1) printf("%.1lf\n" , ans * 1.0 / 2);
else printf("%d\n" , ans / 2);
}
}
勇者sky遇上的命中注定的恋人白羽竟然是妹妹2的更多相关文章
- MVC遇上bootstrap后的ajax表单模型验证
MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
- 敏捷遇上UML—软创基地马年大会(广州站 2014-4-19)
我们将在广州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧. 时间:2 ...
- 敏捷遇上UML——软创基地马年大会(深圳站 2014-3-15)
邀请函: 尊敬的阁下: 我们将在深圳为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战 ...
- 初识genymotion安装遇上的VirtualBox问题
想必做过Android开发的都讨厌那慢如蜗牛的 eclipse原生Android模拟器吧! 光是启动这个模拟器都得花上两三分钟,慢慢的用起来手机来调试,但那毕竟不是长久之计,也确实不方便,后来知道了g ...
- SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案
SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...
- 当创业遇上O2O,新一批死亡名单,看完震惊了!
当创业遇上O2O,故事就开始了,总投入1.6亿.半年开7家便利店.会员猛增至10万……2015半年过去后,很多故事在后面变成了一场创业“事故”,是模式错误还是烧钱过度?这些项目的失败能给国内创业者带来 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(下) (转发)
当DiscuzNT遇上了Loadrunner(下) 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明.今天这篇文章做为这个系列的最后一篇,将会介绍 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(中) (转发)
当DiscuzNT遇上了Loadrunner(中) 在上文中,介绍了如果录制脚本和设置脚本执行次数.如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了. 首先我们通过脚本编辑界面上 ...
- 当DOCKER遇上ESXI
特别是你要为DOCKER窗口设置静态IP,且和公司局域网打成一片的时候, 苦逼的测试就会开始,我差不多前前后后测试了四五天,一百多个容器报废. NETNS,NSENTER,PIPWORK,各种镜像合下 ...
随机推荐
- Dev-Cpp下载与安装
目录 一.介绍 Dev-Cpp 二.下载 Dev-Cpp 1.通过百度网盘下载 2.通过 SourceForge 官网下载 三.安装 Dev-Cpp 写在结尾的话 免责声明 大家好,这里是 main工 ...
- RequestMappingHandlerMapping请求地址映射流程!
上篇文章里,我们讲解了RequestMappingHandlerMapping请求地址映射的初始化流程,理解了@Controller和@RequestMapping是如何被加载到缓存中的. 今天我们来 ...
- 2、Java封装、继承与多态
/** * 类.对象.面向过程.面向对象的理解: * 1.类:类是封装对象的属性和方法的载体 * * 2.对象:对象是类抽象出来的一个实例 * * 3.面向过程:面向过程注重的是具体的实现过程,因果关 ...
- Visual Studio 2022 MAUI NU1105(NETSDK1005) 处理记录
故障说明 MAUI项目是日常使用的项目,一直都好好的 某一天修改了几行代码后,突然项目无法编译了,提示NU1105错误 从Git重新拉取一份之前的代码编译也是同样的错误,经过半天的查阅,尝试了几种方案 ...
- 分享项目中在用的asp.net下载业务的服务端基类(支持客户端显示下载百分比进度,支持并发数控制,支持限速)
/// <summary> /// 功能简介:asp.net的下载业务的服务端基类(支持客户端显示下载百分比进度,支持并发数控制,支持限速) /// 创建时间:2015-11-20 /// ...
- C#动态创建对象过程
创建对象环境 获取当前应用程序集引用的类库详细信息,动态类也将调用此类库 obj类为项目动态编译时用到的模版类,主要提取其using信息用于动态生成的类使用 1 AssemblyName[]r ...
- vue/cli子组件style中如何使用全局图片路径
- Google Cloud Spanner 究竟是什么?
谷歌于2017年推出的Google Cloud Spanner,原是谷歌内部使用的一个数据服务,后来又成为了谷歌云平台上搭建的数据库服务. Google Cloud Spanner 是一种数据库,它结 ...
- OuputStreamWriter介绍-OuputStreamReader介绍
OuputStreamWriter介绍 java.io.Outputstreamlwriter extends writeroutputStreamwriter:是字符流通向字节流的桥梁:可使用指定的 ...
- Unity模块嵌入到Android中
嗨,大家好,小黑在沉寂了6个月之后,终于要继续写一篇博客了. 先吐槽一波上家公司PHD&&OMS,不吐不快.上家公司的小黑,每天不是在弄UIWidgets,就是再弄UIWidgets, ...