ABC352
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;
}
随机推荐
- .NET Core 项目Linux环境下生成二维码
问题: 公司系统开发中,需要对企微授权链接进行二维码生成,然后向客户提供:当然,首当其冲想到的是使用ZXing.NET库进行实现,毕竟生成简单二维码也就那几句代码:然而,在本地环境中,一切都很正常,但 ...
- python中使用time.pref_counter()精确计时
time.pref_counter()返回一个CPU级别的精确时间值,以秒为单位. 它通常用于测量某段程序的运行时间,因此取两次调用pref_counter()的差值才有意义. import time ...
- 穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere!
获得更好的阅读体验,欢迎查看原文:穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere! 1. 创作动机 最近一个星期,我入坑了 neovim, 然后开始配置各 ...
- cookie cookie的获取
什么是 cookie cookie 是 浏览器 的 一种功能 是 浏览器 用来 存储 前端数据的一种 存储机制 ...
- kettle从入门到精通 第六十五课 ETL之kettle 执行动态SQL语句,轻松实现全量&增量数据同步
本次课程的逻辑是同步t1表数据到t2表,t1和t2表的表机构相同,都有id,name,createtime三个字段. CREATE TABLE `t1` ( `id` bigint NOT NULL ...
- jenkins结合远程仓库
既然是持续集成,对代码进行构建,我们得获取代码仓库的内容,这里选择我们搭建的gitlab服务器 1.开发工程师的机器 1. 在window上生成ssh-key $ ssh-keygen.exe -t ...
- 面试官:告诉我为什么static和transient关键字修饰的变量不能被序列化?
一.写在开头 在上一篇学习序列化的文章中我们提出了这样的一个问题: "如果在我的对象中,有些变量并不想被序列化应该怎么办呢?" 当时给的回答是:不想被序列化的变量我们可以使用tra ...
- .NET 个人博客-添加RSS订阅功能
个人博客-添加RSS订阅功能 前言 个人博客系列已经完成了 留言板 文章归档 推荐文章优化 推荐文章排序 博客地址:https://pljzy.top 然后博客开源的原作者也是百忙之中添加了一个名为R ...
- V4L2视频采集操作流程和接口说明
背景: V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范.包括一套数据结构和底层V4L2驱动接口. <WAV文件格式分析> 一般操作流程(视频设备): 1.打开设备 ...
- 为给git设置代理
为给git设置代理 通过软件形式为git设置代理 命令(端口改为自己的端口): git config --global https.proxy http://127.0.0.1:1083 git co ...