X day4
题目
官方题解
T1:
单调栈,单调队列因为认为考场上会写崩所以写了一个十分暴力的方法(线段树)
然后做一做区间覆盖即可
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
inline int read(){
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
int k[],n,a[],tmp[],res[],ans[];
void pushdown(int k,int l,int r){
if(res[k]==-) return;
ans[k<<]=res[k];
ans[k<<|]=res[k];
res[k<<]=res[k<<|]=res[k];
res[k]=-;
return;
}
int query1(int k,int l,int r,int x,int y){
if(x>y) return ;
if(x<=l&&r<=y) return ans[k];
int mid=l+r>>,maxn=;
pushdown(k,l,r);
if(x<=mid) maxn=max(maxn,query1(k<<,l,mid,x,y));
if(mid<y) maxn=max(maxn,query1(k<<|,mid+,r,x,y));
ans[k]=max(ans[k<<],ans[k<<|]);
return maxn;
}
int query(int k,int l,int r,int x,int y){ if(x>y) return <<-;
if(x<=l&&r<=y) {
return ans[k];
}
pushdown(k,l,r);
int mid=l+r>>,minn=<<-;
if(x<=mid) minn=min(minn,query(k<<,l,mid,x,y));
if(mid<y) minn=min(minn,query(k<<|,mid+,r,x,y));
ans[k]=min(ans[k<<],ans[k<<|]);
return minn;
}
void update1(int k,int l,int r,int x,int y,int pos){
if(x>y) return;
if(x<=l&&r<=y){ans[k]=res[k]=pos;return;}
pushdown(k,l,r);
int mid=l+r>>;
if(x<=mid) update1(k<<,l,mid,x,y,pos);
if(mid<y) update1(k<<|,mid+,r,x,y,pos);
ans[k]=max(ans[k<<],ans[k<<|]);
return;
}
void update(int k,int l,int r,int x,int y,int pos){
if(x>y) return;
if(x<=l&&r<=y){ans[k]=res[k]=pos;return;}
pushdown(k,l,r);
int mid=l+r>>;
if(x<=mid) update(k<<,l,mid,x,y,pos);
if(mid<y) update(k<<|,mid+,r,x,y,pos);
ans[k]=min(ans[k<<],ans[k<<|]);
return;
}
int h[],anss[],maxv;
signed main(){
memset(res,-,sizeof(res));
n=read();
for(int i=;i<=n;i++) k[i]=tmp[i]=a[i]=read(),h[i]=read();
sort(tmp+,tmp+n+);
for(int i=;i<=n;i++) a[i]=lower_bound(tmp+,tmp+n+,a[i])-tmp;
for(int i=;i<=n;i++){
int t1=query1(,,n,a[i]+,n);
anss[t1]+=h[i];
update1(,,n,,a[i],i);
}
memset(res,-,sizeof(res));
memset(ans,/,sizeof(ans));
for(int i=n;i>=;i--){
int t1=query(,,n,a[i]+,n);
if(t1>=&&t1<=n) anss[t1]+=h[i];
update(,,n,,a[i],i);
}
for(int i=;i<=n;i++)maxv=max(maxv,anss[i]);
cout<<maxv;
}
T2:
易发现答案是具有单调性的,所以二分判一判即可
时间复杂度:$O(n^2 \log n)$
// luogu-judger-enable-o2
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
inline int read(){
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
int c,n;
int x[],y[],minn=<<-,xp[];
struct node{
int x,y;
}st[];
bool CHECK(int l,int r,int w){
if(r-l+<c) return ;
int cnt=;
int yp[];
memset(yp,,sizeof(yp));
for(int i=l;i<=r;i++) yp[++yp[]]=st[i].y;
sort(yp+,yp+yp[]+);
for(int i=c;i<=yp[];i++){
if(yp[i]-yp[i-c+]<=w) {
return ;
}
}
return ;
}
bool cmp(node x1,node x2){return x1.x<x2.x;}
bool check(int xx){
int l=;
for(int i=;i<=n;i++) st[i].x=x[i],st[i].y=y[i];
sort(st+,st+n+,cmp);
for(int r=;r<=n;r++){
if(st[r].x-st[l].x>xx){
if(CHECK(l,r-,xx)) {
return ;
}
while(st[r].x-st[l].x>xx) l++;
}
}
if(CHECK(l,n,xx)) return ;
return ;
}
int main(){
c=read(),n=read();
for(int i=;i<=n;i++) x[i]=read(),y[i]=read();
int l=,r=;
while(l<=r){
int mid=l+r>>;
if(check(mid)) minn=min(minn,mid),r=mid-;
else l=mid+;
}
cout<<minn+;
}
X day4的更多相关文章
- python_way,day4 内置函数(callable,chr,随机验证码,ord),装饰器
python_way,day4 1.内置函数 - 下 制作一个随机验证码 2.装饰器 1.内置函数 - 下 callable() #对象能否被调用 chr() #10进制数字对应的ascii码表中的内 ...
- Spark菜鸟学习营Day4 单元测试程序的编写
Spark菜鸟学习营Day4 单元测试程序的编写 Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的. Step0:需求分析 在测试案例编写前,需完成需求分析工作,明确程序所有的输入 ...
- Spark Tungsten揭秘 Day4 内存和CPU优化使用
Spark Tungsten揭秘 Day4 内存和CPU优化使用 今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分. 对过去的代码研究,我们会发现,抽象的提高, ...
- Catalyst揭秘 Day4 analyzer解析
Catalyst揭秘 Day4 analyzer解析 今天继续解析catalyst,主要讲一下analyzer,在sql语句的处理流程中,analyzer是在sqlparse的基础上,把unresol ...
- Kakfa揭秘 Day4 Kafka中分区深度解析
Kakfa揭秘 Day4 Kafka中分区深度解析 今天主要谈Kafka中的分区数和consumer中的并行度.从使用Kafka的角度说,这些都是至关重要的. 分区原则 Partition代表一个to ...
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Day4 - Python基础4 迭代器、装饰器、软件开发规范
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- ##DAY4 事件的基本概念、触摸的基本概念、响应者链、手势
##DAY4 事件的基本概念.触摸的基本概念.响应者链.手势 #pragma mark ———————事件的基本概念 ——————————— 事件的基本概念: 1)事件是当用户的手指触击屏幕及在屏幕 ...
- Day4:T1小技巧(类似于指针操作)T2搜索+小细节
Day4:其中有很多小技巧get T1 一直没有听到过像这样的小技巧的略专业名词,有点类似于指针操作,之前有碰到过很多这样的题目 每次都是以不同的形式出现,但是感觉思想还是有点接近的吧(就比如某天有一 ...
- Python基础篇-day4
本节目录: 1.字符编码 2.函数 2.1参数 2.2变量 2.3返回值 2.4递归 2.5 编程范式 2.6 高阶函数 *************************************** ...
随机推荐
- Fiddler - 拦截手机请求
1. 在电脑上安装Fillder. 安装好之后的Fiddler 打开是这样的: 2. 浏览器访问http://127.0.0.1:8888/fiddler,下载证书并安装 3. 打开抓取https请求 ...
- Python爬虫使用浏览器的cookies:browsercookie
很多用Python的人可能都写过网络爬虫,自动化获取网络数据确实是一件令人愉悦的事情,而Python很好的帮助我们达到这种愉悦.然而,爬虫经常要碰到各种登录.验证的阻挠,让人灰心丧气(网站:天天碰到各 ...
- Python全栈 Web(边框、盒模型、背景)
原文地址 https://yq.aliyun.com/articles/634926 ......................................................... ...
- 【cookie接口】- jmeter - (请求提示no cookie)
1.虽然 请求成功 响应码 200 ,但是 返回code 1 ,表示接口不成功 2.加入 空的cookie 管理器就可以了 返回 code 0 注意:状态码 200 只是表示请求是成功的 , ...
- 【转】: 《江湖X》开发笔谈 - 热更新框架
前言 大家好,我们这期继续借着我们工作室正在运营的在线游戏<江湖X>来谈一下热更新机制以及我们的理解和解决方案.这里先简单的介绍一下热更新的概念,熟悉这部分的朋友可以跳过,直接看我们的方案 ...
- 数据库Mysql的学习(三)-各种约束
删除数据库表 drop table [if exists] 表一,表二.....; 表分区:比如图书信息表有1000万个图书信息,如何优化他,其中一种方式就是表分区.就是把一张表的数据分成多个区块,这 ...
- 从零开始的Python学习Episode 4——列表
一.列表 列表与数组相似,定义一个列表 a=[1,2,3,4,5] 1.基本操作 a=[1,2,3,4] #切片 范围取值时,包括第一项但不包括最后一项,顾头不顾尾 print(a[0:]) #从头到 ...
- Java内存管理特点
Java内存管理特点 Java一个最大的优点就是取消了指针,由垃圾收集器来自动管理内存的回收.程序员不需要通过调用函数来释放内存. 1.Java的内存管理就是对象的分配和释放问题. 在 ...
- 条款03 尽可能使用const
一.概述 使用const约束对象:可以获得编译器的帮助(指出相关出错的地方) const与成员函数:const重载.转型.避免代码重复 二.细节 1. 为什么有些函数要返回const对象(看上去没必要 ...
- 如何遍历一个文件夹(C语言实现)
#include<io.h> #include<stdio.h> int main() { long Handle; struct _finddata_t FileInfo; ...