SMU Summer 2023 Contest Round 1
SMU Summer 2023 Contest Round 1
A. The Contest
当 \(m\) 为 \(0\) 和 完成时间大于最后一个时刻时,说明都无法在规定条件内完成,输出\(-1\).
将时间段拆开放一个数组循环, 找到第一个大于等于完成时间的位置,若此时\(i\) 为奇数, 说明该完成时间处在一个工作时间段内,输出\(sum\)即可, 否则就是处于非工作时间,这时就要输出下一个工作时间段的开始时刻.
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
int n,m,t,k;
void solve(){
cin >> n;
vector<int> a(n);
int sum = 0;
for(auto &i : a){
cin >> i;
sum += i;
}
cin >> m;
if(!m){
cout << -1 << endl;
return ;
}
vector<int> time;
for(int i = 0;i < m;i ++){
cin >> t >> k;
time.push_back(t);
time.push_back(k);
}
if(sum > time.back()){
cout << -1 << endl;
return ;
}else {
for(int i = 0;i < time.size();i ++){
if(time[i] >= sum){
if(i & 1){
cout << sum << endl;
break;
}else{
cout << time[i] << endl;
break;
}
}
}
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
// cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
}
B. The Golden Age
暴力将区间内的不吉利数算出后排序,更新区间最大值即可.(注意精度问题)
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define inf 0x3f3f3f3f
using namespace std;
int n,m,t,k;
void solve(){
int x,y,l,r;
cin >> x >> y >> l >> r;
vector<int> ans;
for(int i = 1; i != 0; i = i * (i > r / x ? 0 : x))//当值超过r时就不取,防止爆精度
for(int j = 1;j != 0; j = j * (j > r / y ? 0 : y))
if(i + j >= l && i + j <= r)
ans.push_back(i + j);
int res = 0;
if(ans.size()) {
int L = l - 1;
sort(ans.begin(), ans.end());
for(int i = 0; i < ans.size();i ++){
res = max(res, ans[i] - L - 1);
L = ans[i];
}
if (ans.front() != l)
res = max(ans.front() - l, res);
if (ans.back() != r) {
res = max(r - ans.back(), res);
}
}else{
res = r - l + 1;
}
cout << res << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
// cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
}
C. The Tag Games
要使得行动步数最长,则\(B\)就要找到一条\(A\)与\(B\)路径上的最长链, 因此我们可以先建一个图, 对每个点找到它当前点向后延伸的最长链长度,然后用path数组去记录\(A\)与\(B\)的这条路径,在这条路径上找到\(A\)能到达最长链的最大值
\(i\) 就是A行动的步长.
\(deep[path[i]] - deep[path[j]]\) 就是\(A\) 与 \(B\) 之间的距离.
\(dis[path[i]] - 1\)就是\(B\)当前所在点距离最长链的长度.
因为更新的这个值是\(A\)到达最长链的长度,且\(A\)与\(B\)的步数是同步的,所以最后需要\(×2\)
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define inf 0x3f3f3f3f
using namespace std;
const int N = 2e5 + 10, mod = 1e18;
typedef pair<int,int> PII;
int n,m,t,k;
void solve(){
cin >> n >> m;
vector<int> g[n + 1];
for(int i = 0;i < n - 1;i ++){
int x,y;
cin >>x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
vector<int> pre(n + 1),deep(n + 1),dis(n + 1),path(n + 1);
function<int(int,int,int)> dfs = [&](int u,int v, int d){
int len = 0;
pre[u] = v;
deep[u] = d;
for(auto i : g[u]){
if(i == pre[u])
continue;
len = max(len, dfs(i,u,d + 1));
}
return dis[u] = len + 1;
};
dfs(1, -1, 0);
t = m;
int cnt = 0;
while(t != - 1){
path[cnt++] = t;
t = pre[t];
}
int ans = 0;
for(int i = 0, j = cnt - 1;i < j; j --, i ++){
ans = max(ans, (i + deep[path[i]] - deep[path[j]] + dis[path[i]] - 1) * 2);
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
// cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
}
SMU Summer 2023 Contest Round 1的更多相关文章
- 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 < ...
随机推荐
- Flutter 借助SearchDelegate实现搜索页面,实现搜索建议、搜索结果,解决IOS拼音问题
搜索界面使用Flutter自带的SearchDelegate组件实现,通过魔改实现如下效果: 搜素建议 搜索结果,支持刷新和加载更多 IOS中文输入拼音问题 界面预览 拷贝源码 将SearchDele ...
- Django-解决跨域请求(基于js,jQuery的josnp,设置响应头的cors)
同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...
- 关于kubesphere集群calico网络组件报错的修复
最近公司的项目用到了Kubesphere,于是自己先在虚拟机上测试了一番,遇到了很多的问题,现将遇到的有关calico的问题记录一下 上一篇介绍了如何离线安装kubesphere v3.0,安装之后我 ...
- 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)
目录 系列教程总目录 概述 10.1 软件定时器的特性 10.2 软件定时器的上下文 10.2.1 守护任务 10.2.2 守护任务的调度 10.2.3 回调函数 10.3 软件定时器的函数 10.3 ...
- 【workerman】uniapp+thinkPHP5使用GatewayWorker实现实时通讯
前言 之前公司需要一个内部的通讯软件,就叫我做一个.通讯软件嘛,就离不开通讯了,然后我就想到了长连接.这里本人用的是GatewayWorker框架. 什么是GatewayWorker框架? Gatew ...
- Redis 高阶应用
生成全局唯一 ID 全局唯一 ID 需要满足以下要求: 唯一性:在分布式环境中,要全局唯一 高可用:在高并发情况下保证可用性 高性能:在高并发情况下生成 ID 的速度必须要快,不能花费太长时间 递增性 ...
- 使用过 Vue SSR 吗?说说 SSR?
先说下基本概念: ssr 的全称是 server side render,服务端渲染,vue ssr 的意思就是在服务端进行 vue 的渲染,直接对前端返回带有数据,并且是渲染好的HTML页面: 而不 ...
- 基于vsftpd搭建项目文件服务器
vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 ...
- 题解:P10733 [NOISG2019 Prelim] Lost Array
题解:P10733 [NOISG2019 Prelim] Lost Array 思路 对于任意 \(\min(X_{A_{i}},X_{B_{i}})=C_{i}\). 只要让 \(X_{A_{i}} ...
- 踩坑记录:windows11下使用 VS2022 和 PCL1.14.1 配置点云开发环境
闲话不多说,具体在windows下下载PCL与解压pcl可以看https://www.yuque.com/huangzhongqing/pcl/这位大佬的文章,那我就具体说一下踩过点坑: 踩坑点1: ...