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 高阶函数 *************************************** ...
随机推荐
- 接口测试工具postman(五)批量执行测试用例
1.准备好测试用例及相关数据 2.点击Run按钮 3.选择运行collection或者folder 4.运行完成
- mysql新手进阶01
生活不止眼前的苟且,还有诗和远方. 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EM ...
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第5章.Git
第5章--Git 版本控制简介 VCS (version control system) 版本控制系统:记录若干文件的修订记录的系统,帮助查阅/回到某个历史版本 LVCS本地 CVCS集中式(Cent ...
- python计算工资个税
# -*- coding: utf-8 -*- total = int(input("税前总计:")) #公积金10% Gongjijin = total * 0.1 print( ...
- 最小生成树与Prim算法
最小生成树(MST) 定义 首先是一棵树(废话 其次没有回路(废话 包含全部顶点和V-1条边 边的权重和最小!!!!! 所以如果是单棵最小生成树,至少说明图是连通的.不然就是森林. 生成思路 既然是根 ...
- UVa 1585 - Score - ACM/ICPC Seoul 2005 解题报告 - C语言
1.题目大意 给出一个由O和X组成的字符串(长度为80以内),每个O的得分为目前连续出现的O的数量,X得分为0,统计得分. 2.思路 实在说不出了,这题没过脑AC的.直接贴代码吧.=_= 3.代码 # ...
- Python3 Tkinter-Button
1.绑定事件处理函数 from tkinter import * def hello(): print('Hello!') root=Tk() button=Button(root,text='cli ...
- js经典试题之运算符的优先级
js经典试题之运算符 1.假设val已经声明,可定义为任何值.则下面js代码有可能输出的结果为: console.log('Value is ' + (val != '0') ? 'define' : ...
- win10 死机
其实Win10系统还是不错的,如果你的电脑升级Win10后中招经常死机,可以用下面的方案来应对. 1.下载安装支持兼容Win10的软件版本,下载软件之前看一下兼容列表里是否有Win10系统.虽然Win ...
- Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...