SMU Summer 2023 Contest Round 7
SMU Summer 2023 Contest Round 7
A. Two Rival Students
答案不能大于 \(n-1\);
如果竞争对手之间的当前距离小于 \(n - 1\) ,我们总是可以将这个距离增加一个交换数;
即答案等于 \(min(n - 1,|a - b|+x)\)。
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
ios::sync_with_stdio(false);cin.tie(nullptr);
int T;
cin >> T;
while(T--){
int n,x,a,b;
cin >> n >> x >> a >> b;
cout << min(abs(a - b) + x, n - 1) << endl;
}
return 0;
}
B. Magic Stick
\(1\)不能转化为任何其他数 \(2\)可以转化为\(3\)或\(1\),而\(3\)只能转化为\(2\)。也就是说,如果是\(x = 1\),那么只有\(y = 1\)可以达到;如果是\(x = 2\)或\(x = 3\),那么\(y\)应该小于\(4\)。
否则,我们可以把 \(x\)设得越大越好,所以如果 \(x > 3\),那么任何 \(y\)都是可以达到的。
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int T;
cin >> T;
while(T--){
int x,y;
cin >> x >> y;
if (x > 3) puts("YES");
else if (x == 1) puts(y == 1 ? "YES" : "NO");
else puts(y <= 3 ? "YES" : "NO");
}
return 0;
}
C. Dominated Subarray
- 当\(n<2\)和所有数都只出现一次的时候,是不存在这种连续的子序列的
- 要满足最短连续子序列,只要让一个数最多出现两次就好了,一个\(pos\)数组去记录每个数上次出现的下标,然后当它再次出现时,就用当前坐标减去上次出现的坐标就是一个序列的长度了,每次去更新最小值即可
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
ios::sync_with_stdio(false);cin.tie(nullptr);
int T;
cin >> T;
while(T--){
int n;
cin >> n;
int ma = 0;
vector<int> a(n),t(n + 1),pos(n + 1, -1);
for(auto& i : a) {
cin >> i;
t[i] ++;
ma = max(ma, t[i]);
}
if(n < 2 || ma == 1){
cout << -1 << endl;
continue ;
}
int mi = 0x3f3f3f3f3f3f;
for(int i = 0;i < n;i++){
if(pos[a[i]] != -1)
mi = min(mi, i - pos[a[i]] + 1);
pos[a[i]] = i;
}
cout << mi << endl;
}
return 0;
}
D. Yet Another Monster Killing Problem(二分+贪心)
当英雄里最大的力量值也小于怪兽里最大的力量值得话,英雄们就不能全部打败怪兽了
若力量值为\(p_i\)的英雄能杀死怪兽,则比他大的也一定能打败怪兽,所以我们可以先对力量值排序
若力量值大的耐久值也高,则他完全可以代替力量值耐久值都比不过他的英雄,所以我们可以从大到小将耐久值更新为后面英雄的最大耐久值,即\(S_i < S_j\),则把\(S_i\)更新为\(max_{i \leq j \leq m}S_j\).
然后我们可以去枚举每个怪兽,去维护一个当天能打败的最大怪兽数,即打败怪兽的英雄的最小耐久值\(nows\),直到当天能打败的怪兽数和之前打败的怪兽数之和小于了当前所在怪兽数,就是说怪兽已经超过了当天能打败的最大数,那我们就可以把他们消灭掉,然后进入下一天了.
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> PII;
signed main() {
ios::sync_with_stdio(false);cin.tie(nullptr);
int T;
cin >> T;
while(T--){
int n,m,MaxMonster = 0, MaxHero = 0;
cin >> n;
vector<int> a(n);
for(auto &i : a) {
cin >> i;
MaxMonster = max(MaxMonster , i);
}
cin >> m;
vector<PII> ps(m);
for(auto &[p,s] : ps){
cin >> p >> s;
MaxHero = max(MaxHero, p);
}
if(MaxMonster > MaxHero){
cout << -1 << endl;
continue ;
}
sort(ps.begin(),ps.end());
for(int i = m - 2;i >= 0;i--)
ps[i].second = max(ps[i + 1].second, ps[i].second);
int ans = 1, nowkill = 0,nows = 0x3f3f3f3f3f3f;
for(int i = 0;i < n;i ++){
int now = lower_bound(ps.begin(),ps.end(),PII(a[i],0)) - ps.begin();
nows = min(nows, ps[now].second);
if(nows + nowkill <= i){
nows = ps[now].second;
ans++;
nowkill = i;
}
}
cout << ans << endl;
}
return 0;
}
SMU Summer 2023 Contest Round 7的更多相关文章
- 2015 Astar Contest - Round 3 题解
1001 数长方形 题目大意 平面内有N条平行于坐标轴的线段,且不会在端点处相交 问共形成多少个矩形 算法思路 枚举4条线段的全部组合.分别作为矩形四条边.推断是否合法 时间复杂度: O(N4) 代码 ...
- Contest Round #451 (Div. 2)F/Problemset 898F Restoring the Expression
题意: 有一个a+b=c的等式,去掉两个符号,把三个数连在一起得到一个数 给出这个数,要求还原等式,length <= 1e6 三个数不能含有前导0,保证有解 解法: 铁头过题法,分类然后各种判 ...
- Codeforces Round #284 (Div. 2)A B C 模拟 数学
A. Watching a movie time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Sending messages to non-windowed applications -- AllocateHWnd, DeallocateHWnd
http://delphi.about.com/od/windowsshellapi/l/aa093003a.htm Page 1: How Delphi dispatches messages in ...
- Codeforces 240 F. TorCoder
F. TorCoder time limit per test 3 seconds memory limit per test 256 megabytes input input.txt output ...
- cf499B-Lecture 【map】
http://codeforces.com/problemset/problem/499/B B. Lecture You have a new professor of graph theo ...
- Codeforces 240F. TorCoder 线段树
线段树统计和维护某一区间内的字母个数.. . . F. TorCoder time limit per test 3 seconds memory limit per test 256 megabyt ...
- 物联网学生科协第三届H-star现场编程比赛
问题 A: 剪纸片 时间限制: 1 Sec 内存限制: 128 MB 题目描写叙述 这是一道简单的题目,假如你身边有一张纸.一把剪刀.在H-star的比赛现场,你会这么做: 1. 将这张纸剪成两片(平 ...
- [cf contest 893(edu round 33)] F - Subtree Minimum Query
[cf contest 893(edu round 33)] F - Subtree Minimum Query time limit per test 6 seconds memory limit ...
- 水题 Codeforces Round #307 (Div. 2) A. GukiZ and Contest
题目传送门 /* 水题:开个结构体,rk记录排名,相同的值有相同的排名 */ #include <cstdio> #include <cstring> #include < ...
随机推荐
- parsel的使用
介绍 parsel这个库可以解析HTML和XML,并支持使用XPath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能.parsel灵活强大,同时也是Python最流行的爬虫框架的 ...
- 用 Python 绘制现金流量图
目录 用 Python 绘制现金流量图 Python 实现 实现原理 具体代码 使用示例 1:根据现金流量表绘制现金流量图 使用示例 2:绘制等额.等差.等比序列现金流量图 等额序列现金流量图 等差序 ...
- Linux下Oracle11G数据备份恢复(RMAN)
数据库安装参考步骤1--14 https://www.cnblogs.com/baixisuozai/p/17852235.html #rman数据库备份脚本 #!/bin/bash PATH=$PA ...
- 解决 Xshell 无法使用 zsh 的 prompt style
为了更好的阅读体验,请点击这里 先学习一下 zsh 的配置吧~ 参考资料 从 0 开始:教你如何配置 zsh powerlevel10k 如何给 Xshell 配置呢 当我安装完 oh-my-zsh. ...
- 实验13.Nat转发telnet实验
# 实验13.Nat转发telnet实验 本节用于测试NAT服务,用于将流量转发到内网的指定设备上. 实验组 配置路由器 由于之前配置过ospf,所以这次用直接指静态练手,首先确保全网畅通 R3 GW ...
- python重拾第十天-协程、异步IO
本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾 ...
- HiAI Foundation开发平台,加速端侧AI应用的智能革命
如果您是一名开发者,正在寻找一种高效.灵活且易于使用的端侧AI开发框架,那么HarmonyOS SDKHiAI Foundation服务(HiAI Foundation Kit)就是您的理想选择. 作 ...
- 尝试官方的第一个SpringNative 0.11程序(WSL2)
Spring Native是Spring推出微服务体系Spring Cloud之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术.如果你还对这个概念不太理解,可以多看一 ...
- aach64架构 ubuntu20 桌面版 编译安装ffmpeg难点总结
[编译安装x264] 这一步基本上没有难点 git clone https://gitee.com/mirrors/x264.git ./configure --enable-shared --ena ...
- oeasy教您玩转vim - 46 - # 范围控制
范围控制 回忆上节课内容 这次我们主要就是看命令行 首先是选择一个 [range] 这个范围 然后进行相应的操作 :11,30d :2,7y 还可以指定寄存器 :"a3,40y :&qu ...