【CodeForces训练记录】Codeforces Round 986 (Div. 2)

news/2024/11/13 14:11:08/文章来源:https://www.cnblogs.com/longxingx/p/18538836

训练情况

赛后反思

C题逆风翻盘,可能勉强青名了。A题愣神了,我觉得还能再做的快一点。

A题

给定一个字符串,NWSE,重复着字符串走,我们直接模拟即可,用 while 来判断是否走到终点,然后对于不可能走到的终点,我选择了一个不会超时的步数范围,超出就跳出 while 即可,最后判断人有没有在 \((a,b)\) 即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){int n,a,b; string s;cin>>n>>a>>b;cin>>s;int tot = 0;int x = 0,y = 0;while(tot <= 100000 && !(x == a && y == b)){if(s[tot%n] == 'N') y++;else if(s[tot%n] == 'S') y--;else if(s[tot%n] == 'W') x--;else if(s[tot%n] == 'E') x++;// cout<<x<<" "<<y<<endl;tot++;}if(x == a && y == b) cout<<"YES"<<endl;else cout<<"NO"<<endl;
}signed main(){int T; cin>>T; while(T--)solve();return 0;
}

C题

这题其实挺难看出一个二分单调性的,我们选择二分给自己的美味值,如果这个值过大会让剩下的不够分,过小会让剩下的太多,对于自己的美味值,由于切出来是连续的,我们可以通过双指针来找到自己左右边界,再维护一个前后缀 \(> v\) 的个数,判断左右边界的个数和是否能 \(\ge m\) 即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;const int N = 2e5 + 3;int n,m,v;
int sum;
vector<int> a(N);
vector<int> pre(N);
vector<int> suf(N);bool pd(int x){int l = 1,r = 1,now = 0;for(r = 1;r<=n;r++){now += a[r];while(now - a[l] >= x && l <= r) now-=a[l],l++;if(now >= x){if(pre[l-1] + suf[r+1] >= m){// cout<<x<<" "<<l<<" "<<r<<endl;return true;}}}return false;
}void solve(){cin>>n>>m>>v;sum = 0;for(int i = 1;i<=n;i++) cin>>a[i],sum+=a[i];for(int i = 1;i<=n;i++) pre[i] = 0,suf[i] = 0;int now = 0;for(int i = 1;i<=n;i++){now+=a[i];if(now >= v) now = 0,pre[i]++;}now = 0;for(int i = n;i;i--){now+=a[i];if(now >= v) now = 0,suf[i]++;}for(int i = 1;i<=n;i++) pre[i] += pre[i-1];for(int i = n;i;i--) suf[i] += suf[i+1];// for(int i = 1;i<=n;i++) cout<<pre[i]<<" "; cout<<endl;// for(int i = 1;i<=n;i++) cout<<suf[i]<<" "; cout<<endl;int l = 0,r = sum,m;while(l<r){m = l + r + 1 >> 1;if(pd(m)) l = m;else r = m - 1;}if(pd(r)) cout<<r<<endl;else cout<<-1<<endl;
}signed main(){int T; cin>>T; while(T--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830987.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24. 使用MySQL之使用游标

1. 游标 由前几章可知,MySQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行(零行或多行)。 使用简单的SELECT语句,例如,没有办法得到第一行、下一行或前10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。 有时,需要在检索…

Python clickhouse-driver 类库使用学习总结

实践环境 python3 .9.13 clickhouse-driver 0.2.9 实践操作 # -*- coding:utf-8 -*-import clickhouse_driverif __name__ == __main__:host = 192.168.88.131port = 9000 # 注意,不能使用默认的8123username = testaccpassword = test1234database = default# 连接方式1# con…

随波逐流工具使用_Week1

跟着大师傅的公众号做题的week1 来源以及说明 (文章主要是了解怎样使用长弓三皮大师傅的随波逐流工具,wp以及附件来自大师傅长弓三皮) (这周主要是做笔记的软件老是出现问题,有一些笔记有点乱,后面慢慢改进) 软件及题目下载 http://www.1o1o.xyz/bo_softdown.html CTF题目wr…

开源 - Ideal库 - 特殊时间扩展方法(三)

分享特殊时间获取的扩展方法,包括当天开始/结束时间、当前周/月/季度/年的第一天和最后一天等,附代码示例和单元测试,库将上传至Nuget,源码在代码库。书接上回,我们继续来分享一些关于特殊时间获取的常用扩展方法。01、获取当天的开始时间 当天的开始时间指00:00:00时刻,…

Vue2: v-for 联合 ref 使用, 对应引用信息为数组

MarkTime: 2024-06-03 00:21:47 LogTime: 2024-11-10 23:25:35说明问题:调用ref引用的时候, 好奇获取的时候为什么 有的返回的是对象, 有的返回的是数组 (如下图)版本:vue: 2.6.14源码 <!--已经省略掉大部分代码 只保留结构为说明 --> <template><div class=&qu…

Debug: setTimeout 使用做定时器时的错误函数传递方式

MarkTime: 2024-05-24 10:41:26 LogTime: 2024-11-10 14:55:53首先复习 setTimeout(): 语法: let timeId = setTimeout(func|code, [delay_millisecond]) 说明: 延时器. 延迟delay_millisecond后, 执行参数1setInterval(): 语法: let timeId = setInterval(func|code, [delay_…

Debug: calc() 未生效 = 内嵌样式表达式需使用空格分隔

MarkTime: 2024-06-25 17:10 LogTime: 2024-11-09 13:58:02结论calc()内的表达式 需要使用 空格分隔符, 即 更正 calc(100%-100px-10px); => calc(100% - 100px - 10px); 即可源<!-- 原错误代码 --> <div class="layout-search" style="width: 100%…

[云研发]腾讯云cloudstudio使用教程-记录1

cloudstudio在vscode中新建终端,使用nvidia-smi查看显卡与gpu情况,可知当前使用的显卡是T4的,显存有15GTalk is cheap. Show me the code

rip

题目链接:rip。 IDA 打开附件,进入到 main 函数,反编译后如下。留意到存在 gets 函数,因此存在栈溢出漏洞,经过动态调试,确定在输入 0x17 个字符后,即可覆盖到返回地址。同时,留意到存在 fun 函数,如下。因此,直接将程序执行流劫持到 fun 函数,即可 GetShell(此处需…

test_your_nc

题目链接:test_your_nc。 打开附件,进入 main 函数,IDA 反编译如下。因此直接连接即可 GetShell。

【docker应用】从Docker(k8s)镜像或者容器里提取jar包

引言 在docker或者k8s上运行了第三方的应用,很多时候我们都想知道运行流程,一般都会docker或者k8s容器中获取jar包。 那么该如何把里面的jar包提取出来呢? 其实有两种方式,分别为: 从镜像信息获取 进入容器获取从镜像信息获取 首先,查看镜像: docker image ls |grep <…

充电桩普遍选用芯海CSE7761集成3路ADC的免校准单相计量芯片

CSE7761是一款单相多功能电能计量芯片,工作于 3.579MHz 时钟频率,其内部集成了 3 路 sigmadelta ADC、功率计算器、能量-频率转换器、一路 SPI 接口、一路 UART 接口。适用于充电桩、单相多功能电能表、智能插座、智能家电等应用.CSE7761 设计用于精确计算电压有效值、电流有…