A

link



\(x\)停不到,\(y\)能停到。

要先判断是从前往后还是从后往前。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

signed main(){

	int n,x,y,z;
cin >> n >> x >> y >> z; if(x <= y){
if(z > x&&z <= y) cout << "Yes";
else cout << "No";
}
else{
if(z < x&&z >= y) cout << "Yes";
else cout << "No";
} return 0; }

B

link



两个指针,分别指向\(S\)和\(T\),如果当前两个指针指向的位置一样,输出这个位置,否则把指向\(T\)的指针加一。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

char s[200005];
char t[200005]; signed main(){ cin >> s+1 >> t+1; int n = strlen(t+1); for(int i = 1,j = 1;i <= n;++ i,++j){
while(t[i] != s[j]) ++i;
cout << i << " ";
} return 0; }

C

link



他要求的本质上就是前面所有的肩膀高度加最后一个的头高。

所以我们只要把每中情况都找到即可,那么我们可以先把所有肩膀的高度加起来,然后枚举每一个,把肩膀减去,把头加上去最大即可。

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int n;
int x[200005],y[200005]; int cn,ans; signed main(){ cin >> n;
for(int i = 1;i <= n;++ i){
cin >> x[i] >> y[i];
cn += x[i];
} for(int i = 1;i <= n;++ i){
ans = max(ans,cn-x[i]+y[i]);
}
cout << ans; return 0; }

D

link



如果我们存一个数组\(mp_i\)表示第\(i\)个数在数组里的位置,那么我们就可以每取连续的\(k\)个数求最大值和最小值取差即可。(\(st\)表)

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int n,k;
int p[200005];
int mp[200005];
int mx[200005][20];
int mn[200005][20]; int lg(int x){
if(x == 1) return 0;
return lg(x/2)+1;
} signed main(){ cin >> n >> k;
for(int i = 1;i <= n;++ i)
cin >> p[i],mp[p[i]] = i; for(int i = 1;i <= n;++ i)
mx[i][0] = mp[i],
mn[i][0] = mp[i]; for(int j = 1;j <= 19;++ j){
for(int i = 1;i+(1<<j)-1 <= n;++ i){
mx[i][j] = max(mx[i][j-1],
mx[i+(1<<(j-1))][j-1]);
mn[i][j] = min(mn[i][j-1],
mn[i+(1<<(j-1))][j-1]);
}
} int ans = 0x3f3f3f3f;
int t = lg(k);
for(int i = 1;i+k-1 <= n;++ i){
int man = max(mx[i][t],
mx[(i+k-1)-(1<<t)+1][t]);
int mix = min(mn[i][t],
mn[(i+k-1)-(1<<t)+1][t]);
ans = min(ans,man-mix);
} cout << ans << endl; return 0; }

随机推荐

  1. 开发中你不得不知的一个Git小技巧

    一. 背景 在工作中大家应会碰到需要频繁在两个分支中切换工作的情况,我们通常做法是利用git stash命令暂存当前工作区中的变更,然后git checkout到目标分支中工作,工作完成后回到刚刚分支 ...

  2. 【BI 可视化插件】怎么做? 手把手教你实现

    背景 对于现在的用户来说,插件已经成为一个熟悉的概念.无论是在使用软件. IDE 还是浏览器时,插件都是为了在原有产品基础上提供更多更便利的操作.在 BI 领域,图表的丰富性和对接各种场景的自定义是最 ...

  3. django多表关联实战

    定义模型类: from django.db import models from django.contrib.auth.models import User ''' ---------- Djang ...

  4. Android 12(S) MultiMedia Learning(六)NuPlayer Decoder

    接下来将会从4个角度来记录NuPlayerDecoder部分 相关代码路径: http://aospxref.com/android-12.0.0_r3/xref/frameworks/av/medi ...

  5. WPF 不透明蒙板概述

    本文内容 先决条件 使用不透明蒙板创建视觉效果 创建不透明蒙板 将渐变用作不透明蒙板 显示另外 4 个 不透明蒙板能够使部分元素或视觉对象透明或部分透明. 要创建不透明蒙版,请将 Brush 应用于元 ...

  6. MVCC(多版本并发控制)详解

    在 MySQL InnoDB存储引擎下,RC.RR 基于 MVCC 进行并发事务控制, MVCC 是基于"数据版本"对并发事务进行访问 用一个例子来解释一下,下面是一张事务执行流程 ...

  7. firewall防火墙基础配置

    Firewalld防火墙 Centos7 中集成了防火墙管理工具, Firewall系统动态防火墙管理器是作为默认的防火墙工具. 它支持规则动态更新,并加入zone区域概念. Firewalld防火墙 ...

  8. Redux之combineReducers方法

    Redux 提供了一个combineReducers方法,用于 Reducer 的拆分.你只要定义各个子 Reducer 函数,然后用这个方法,将它们合成一个大的 Reducer. import { ...

  9. 使用 INFINI Console 实现 Elasticsearch 的增量数据迁移

    功能介绍 # 在 INFINI Console 1.3.0 版本里,数据迁移功能增加了对增量迁移的支持.这篇文章将会介绍增量迁移的具体使用方法和实现原理. 场景介绍 # 以常见的日志场景为例,假设 A ...

  10. Ansible-playbook剧本进阶

    剧本高级特性篇 循环 在写 playbook 的时候发现了很多 task 都要重复引用某个相同的模块,比如一次启动10个服务,或者一次拷贝10个文件,如果按照传统的写法最少要写10次,这样会显得 pl ...