Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)A-D题解

MIMIC数据库基本信息分析 一、MIMIC数据库中26张表介绍 数据库中一共有26张表,记录患者入院的各种信息,每张表的介绍如下所示。 表格名 信息 admission 患者基本信息,比如性别、种族、语言、宗教、婚姻、入院和出院时间、死亡时间等 callout 提供病人准备从ICU转出或者已经从ICU转出时相关信息 caregivers 记录医护人员信息(ID、类型、附加... 阅读详情

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)A-D题解
比赛链接:https://codeforces.com/contest/1501/problem/A

A题
相关tag:阅读理解,模拟

题意比较绕,多逼着自己只查单词不整篇翻译,读题能力就上来了。

题意:
从时间0开始出发,要依次经过在一条直线上的n个站点,问到达站点n的时间。
每个站点i都有对应的时间a[i],b[i],t[i]
从站点i-1到站点i的路上需要花费时间a[i]-b[i-1]+t[i]
到达站点i后,从站点i出发到下个站点需要满足两个条件:
1.在站点i至少需要等待(b[i]-a[i])/2(向上取整)的时间
2.出发的时间不能在b[i]时间前

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=1e2+7;
const double eps=1e-6;
const int mod=1e9+7;

int a[maxn],b[maxn],T[maxn];
int n;

int main(){
    IOS
    int t;cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
        for(int i=1;i<=n;i++) cin>>T[i];
        int now=0;//now代表当前时间
        for(int i=1;i<n;i++){//这里走到站点n-1即可
            now+=a[i]-b[i-1]+T[i];//从站点i-1到站点i需要划分的时间
            int temp=(b[i]-a[i]+1)/2;//在站点i至少需要等待的时间
            now+=temp;
            if(now<b[i]) now=b[i];//从站点i离开必须到时间b[i]之后
        }
        now+=a[n]-b[n-1]+T[n];//到达站点n就可以立即结束,不需要再多加时间
        cout<<now<<endl;
    }
}

B题
相关tag:逆向思维,模拟

题意:
一层一层依次堆叠n层蛋糕,堆叠第i层蛋糕时,会把从顶部往下的a[i]层蛋糕染色。
问最后的染色情况。

思路:
反过来思考,从顶向下看,用now记录当前向下会有多少层被染色,这样就避免了暴力对同一层重复染色的问题。
当然也可以差分来写。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=2e5+7;
const double eps=1e-6;
const int mod=1e9+7;

int a[maxn];
bool flag[maxn];//flag标记是否被染色

int main(){
    IOS
    int t;cin>>t;
    while(t--){
        int n;cin>>n;
        for(int i=0;i<n;i++) cin>>a[i];

        int now=0;//now记录从当前位置向下有多少层会被染色
        for(int i=n-1;i>=0;i--){
            now=max(now,a[i]);//更新更大的now值
            if(now) {flag[i]=1;now--;}//如果now不为0,将当前层染色
        }

        for(int i=0;i<n;i++){
            cout<<flag[i]<<' ';
            flag[i]=0;
        }
        cout<<endl;
    }
}

C题
相关tag:暴力,数据范围分析

题意:
有n个数,问能否从中挑选出四个数字,使得其中两个相加等于另两个相加。

思路:
注意到这道题的数字范围最大为2.5e6,那么相加得到的最大值就是5e6。
那么我们暴力枚举所有下标对,记录下相加等于i的下标对有哪些。
对于每个和x,我们平均至多枚举3-4个下标对就必然能够得到答案,找到答案后立刻break,因此复杂度会在1e7的级别完全足够。
暴力实现即可。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=2e5+7;
const double eps=1e-6;
const int mod=1e9+7;

int a[maxn];
bool cas[5000007];
vector<pair<int,int>>ans[5000007];//ans[i]记录和为i的下标对有哪些

int main(){
    IOS
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=2;i<=n;i++){
        for(int j=1;j<i;j++){//暴力枚举
            int sum=a[i]+a[j];
            for(int k=0;k<ans[sum].size();k++){//暴力检测之前已经得到的相加等于sum的下标对
                if(ans[sum][k].first!=i&&ans[sum][k].second!=i&&ans[sum][k].first!=j&&ans[sum][k].second!=j){
                    //如果满足四个下标均不相同代表找到了答案
                    cout<<"YES"<<endl;
                    cout<<ans[sum][k].first<<' '<<ans[sum][k].second<<' '<<j<<' '<<i<<endl;
                    return 0;
                }
            }
            ans[sum].push_back({j,i});
        }
    }
    cout<<"NO"<<endl;
}

D题
扩展欧几里得,二分

题意:
给定一个长度为n的数组a和一个长度m的数组b,已经一个值k。
对这两个数组不断循环扩展,问这两个数组第k个数值不相同的下标位置。

思路:
这里首先需要推出一个小结论,
对于长度n和m来说,他们的最大公约数为g,那么n和m可以看成若干段长度为g的部分连接而成。
长度为g的部分是这两个数组的最小单位。

如果a[i](1<=i<=n)与b[j](1<=j<=m)在循环扩展后的同一个下标出现的话,i和j需要满足i%g==j%g。
注意到题目说了每个数组中的数字都是两两不同的,且数值在1e6之内。
那么我们可以用flag[x]记录数值x在数组a中出现的位置下标,在for一遍b数组,检测b中的每个数字在a中出现的下标位置,是否满足上述要求,如果满足的话,在一个lcm(最小公倍数)长度的循环中,会出现一次下标相同的情况,就是1次数值相同的情况。
由此我们可以计算出,一次lcm长度,会有多少对下标的数值是相同的,也就可以求出多少对下标的数值是不同的,记作L。

但是k不一定能被L整除,会有多余的部分需要继续在一轮lcm里找到具体的位置。
如果我们可以求出上一段叙述中,那些下标相同的具体位置在哪里,记录后利用二分就可以在log(n)的时间得到具体位置。
注意到如果a[i]与b[j]存在一个下标相同的位置,那么我们实际上是可以写出x×\times×n+i=y×\times×m+j的式子。
移项后得到x×\times×n+(-y)×\times×m=j-i,且j-i必定是g的整数倍。
那么系数x和y我们可以通过扩展欧几里得来求得。

基本思路完毕。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=5e5+7;
const double eps=1e-6;
const int mod=1e9+7;

ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!a&&!b) return -1;
    if(!b)
    {
        x=1;y=0;
        return a;
    }
    ll ret=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return ret;
}

ll n,m,k;
ll numa[maxn],numb[maxn];
ll flag[maxn*2];
ll lm;//n和m的最小公倍数
vector<ll>cas;//记录一次lcm的长度内,有哪些下标是字母相同的

ll check(ll x){//单次lcm长度内,第x不匹配数字出现的情况
    if(x==0){//特殊处理恰好整数组lcm长度的情况
        ll ret=lm;
        for(int i=0;i<cas.size();i++){
            if(cas[cas.size()-i-1]==lm-i){
                ret--;
            }
            else break;
        }
        return ret-lm;
    }
    ll l=0,r=(ll)cas.size()-1;//二分查找最后一个匹配的位置,借由此计算出最后多余的长度是多少
    while(l<r){
        int mid=((l+r)>>1)+1;
        if(cas[mid]-mid>=x) r=mid-1;
        else l=mid;
    }
    return x+l;
}

int main(){
    scanf("%lld%lld%lld",&n,&m,&k);
    ll x,y;
    ll g=exgcd(n,m,x,y);//n和m的最大公约数,并计算出x*n+y*m=g的一组特解x,y
    lm=n/g*m;
    for(int i=1;i<=n;i++){
        scanf("%lld",&numa[i]);
        flag[numa[i]]=i;
    }
    for(int i=1;i<=m;i++){
        scanf("%lld",&numb[i]);
        if(flag[numb[i]]&&flag[numb[i]]%g==i%g){//需要满足字母相同,且对最大公约数取模后的值相等,才可能存在满足x*n+y*m=距离的解
            if(flag[numb[i]]==i) cas.push_back(i);
            else{
                //ll tempx=x*(i-flag[numb[i]])/g;
                ll tempy=y*((i-flag[numb[i]])/g)%lm;//求出当前情况对应的特解
                ll tar=-tempy*m+i;//计算下标位置,下标应该在1-lcm之内,因此下面对其值进行处理
                if(tar<0){
                    tar+=((-tar)/lm+1)*lm;
                }
                tar%=lm;
                if(tar==0) tar=lm;
                cas.push_back(tar);
            }
        }
    }
    cas.push_back(0);
    sort(cas.begin(),cas.end());
    ll ans=k/(lm-(ll)cas.size()+1)*lm;//取多少整数组长度的lcm
    k-=k/(lm-(ll)cas.size()+1)*(lm-(ll)cas.size()+1);//剩余还需要几次不相同
    printf("%lld\n",ans+check(k));
}
网络无线AP信号走场测试软件(Ekahau 使用说明) 每次开启 Ekahau 软件需要重复此过程,才可以正常使用。 双击“Ekahau Pro activation.reg”,如下图所示; 点击“Yes”按钮 ,进行注册表合并; 点击“OK”按钮,确认; 运行“Ekahau Pro” 点击“Close”关闭提示; 点击“OK”,关闭提示; ... 阅读详情

相关推荐

MATLAB不能识别已安装的visual studio 2015解决方法

首先,对于MATLAB识别已经安装的vs版本通过命令: mex -setup 下图为本电脑下同时安装的两个visual studio 如果搞清楚MATLAB识别电脑上安装vs的过程,可通过命令: mex -setup -v MATLAB输出识别编译器的整个过程。其中HKLM和HKCU分别是注册表中的HKEY_CURRENT_USER,HKEY_LOCAL_MA…的缩写,MATLAB没有找到对应编译器是由于注册表里没有对应信息(主要是文件路径,C++编译器的路径),或者在注册表里存在该信息,但是找不到

qq_36320710的博客 4895

Codeforces Round #707 (Div. 2) C. Going Home (暴力枚举)

题目链接:https://codeforces.com/contest/1501/problem/C 题目大意:个数,,从中找出四个不同的数,要求,输出满足条件的任意的一组 题解:暴力枚举! 我们可以证明若存在四对数,那么其中一定可以找出四个不同的数,满足上述条件。 分类讨论: 若为的情况,那么显然,我们可以选择作为答案。 若为的情况,那么显然我们可以选择作为答案。 其余情况,也一定可以从4对数中,选出两组数满足条件。 我们可以用图来证明,我们假设下标为点,若两个下标的数相加为,我们可以在两

madaidao的专栏 349

内核工作FAST‘25 Artifact Evaluation流程记录

在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。我们在AE过程中使用。然后,把一切复现需要的代码环境,在chroot里面配置完成。

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 1215

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) A--C

传送门 A. Alexey and Train Alexey is travelling on a train. Unfortunately, due to the bad weather, the train moves slower that it should! Alexey took the train at the railroad terminal. Let’s say that the train starts from the terminal at the moment 0. Also,

lcl1234567890lcl的博客 1686

CANoe SOME/IP实战:从ARXML到VCODM的完整配置与调试

本文详细介绍了使用CANoe进行SOME/IP通信测试的完整流程,从硬件环境准备、ARXML文件处理到VCODM文件配置与调试。通过实战技巧和常见问题解决方案,帮助工程师高效完成从ARXML到VCODM的配置,确保SOME/IP通信的稳定性和可靠性。

weixin_29169899的博客 466

YOLOv8/v9实战:从零搭建智慧零售货架管理系统(附完整可运行代码)

摘要:本文基于YOLOv8/v9目标检测算法,详细讲解智慧零售货架管理系统的开发流程,解决传统人工巡检效率低、漏检率高的问题。内容涵盖环境配置、商品检测、陈列分析、价格标签验证等核心功能实现,提供可运行代码及零售专用数据集训练方法。系统支持实时货架状态监控、缺货预警与数据分析,帮助零售企业降低运营成本30%以上。 关键词:YOLOv8、YOLOv9、智慧零售、货架管理、商品检测 标签:YOLOv8、YOLOv9、目标检测、零售AI、Python

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1309

Codeforces Round #707 (Div. 2) A. Alexey and Train

原题链接 题目大意: 给你一个火车的时间表(包括预计到达时间ai,预计出发时间bi),再给你一个组数,表示每站到达的延迟时间。火车出发需要满足两个条件。 1.最少等待(预计出发时间-预计到达时间)/2的时间(向上取整)。 2.出发时间>=预计出发时间 输入格式 第一行包含一个整数t(1≤t≤100)-测试用例的数量。 每个测试用例的第一行包含单个整数n(1≤n≤100)-站的数量。 接下来的n行每行包含两个整数:ai和bi(1≤ai<bi≤106)。可以保证bi<ai+1。 下一行包

遗落之辉的博客 299

Python爬虫:招聘网站岗位要求、薪资与求职者数据爬取与分析

通过本文的教程,我们学习了如何通过 Python 编写招聘数据爬虫,爬取招聘网站上的岗位要求、薪资和求职者数据,并通过数据存储、清洗、分析和可视化,获取有价值的信息。网站如智联招聘、猎云网、前程无忧等,都提供了大量的招聘信息,包括岗位要求、薪资范围、工作经验、学位要求、招聘公司等。本文将介绍如何通过 Python 编写爬虫,爬取招聘网站上的岗位要求、薪资、求职者数据,并通过数据存储、分析和可视化等手段,为求职者或招聘者提供实用的信息和决策支持。通过循环抓取多个页面的数据,可以获取不同岗位的信息。

2201_76125261的博客 720

Codeforces Round #706 (Div. 2)

1496A - Split it! 题意 给定 SSS 和 kkk,要求把 SSS 拆分为 a1+a2+⋯+ak+ak+1+R(ak)+R(ak−1)+⋯+R(ai) a_1 + a_2 + \cdots + a_k + a_{k + 1} + R(a_k) + R(a_{k - 1}) + \cdots + R(a_i) a1​+a2​+⋯+ak​+ak+1​+R(ak​)+R(ak−1​)+⋯+R(ai​) 的形式,其中 R(a)R(a)R(a) 表示 AAA 的反串,例如 R(abcd)=dcbaR(

YangTY的博客 767

迅投miniQMT量化交易实战指南:从入门到自动化交易系统构建

迅投miniQMT量化交易实战指南摘要 本文全面介绍迅投miniQMT量化交易系统的开发流程,重点包括: 环境配置:详细说明miniQMT极简模式的安装步骤,包括xtquant库获取、Python版本要求及验证方法 行情数据模块:解析xtdata模块的核心功能,包括: 获取板块分类与股票列表 查询合约基础信息 下载历史K线数据(支持tick、分钟、日线等周期) 交易执行模块:介绍xttrader模块的交易API,涵盖: 账户连接与初始化 订单管理(下单、撤单、查询) 持仓与资产查询 实战开发:提供可直接运行

huanghm88的专栏 665

声音源定位:利用YOLO与麦克风阵列定位声音来源YOLOv5、YOLOv8、YOLOv10

YOLO(You Only Look Once)是一个用于目标检测的深度学习模型。YOLO的最大特点是其通过一次前向传播即可完成多个目标的检测,速度和精度相对其他目标检测算法具有显著优势。YOLO模型的版本不断更新,从YOLOv1到YOLOv10,算法精度和速度都有了显著的提升。声音源定位是利用多个麦克风阵列收集的声音信号,通过算法计算声音源的位置。声音源定位的关键在于准确估计每个麦克风的声音到达时间,从而确定声音源的空间坐标。基于时延估计(TDOA)

YOLO 672

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)/D

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)/D D.Two chandeliers 题意:给出两个无限循环序列A,B以及整数k,找出最小长度x满足对于1≤i≤x1\le i\le x1≤i≤x,恰好有k对ai≠bia_i\ne b_iai​​=bi​。 A序列的循环节长度为n,B序列为m。 对于序列A,B,找出循环节中所有的ai≠bia_i\ne b_iai​​=bi​的时间复杂度是O(nm)O

WedsonLin的博客 393

AI Agent Harness内容审核:生成内容合规

在过去的几年里,生成式人工智能(Generative AI)技术取得了爆炸性的发展。从 GPT-4、Claude 这样的文本生成模型,到 Midjourney、Stable Diffusion 这样的图像生成工具,再到 Sora 这样的视频生成模型,AI 已经具备了媲美甚至超越人类的内容创作能力。然而,技术是一把双刃剑。随着生成式 AI 的普及,内容安全与合规风险也呈指数级增长。

AI架构师小马 300

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) B.Count Subrectangles

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) B.Count Subrectangles You are given an array a of length n and array b of length m both consisting of only integers 0 and 1...

旺崽的博客 2739

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present Catherine received an array of integers as a gift for March 8. Eventually she grew bored with it, and she started...

旺崽的博客 2739

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训

Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)日常训练,E题之后有时间看,先贴两篇题解

C_eeking的博客 671

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) 题目 难度 思路 A 简单 贪心 B 一般 思维+数学 C 简单 贪心 D 较难 数学+二进制+二分 A. Even Subset Sum Problem 题意: 找出一个子序列使得子序列的和为偶数...

weixin_45676038的博客 156

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) C.Unusual Competitions

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) C.Unusual Competitions A bracketed sequence is called correct (regular) if by inserting “+” and “1” you can get a well-form...

旺崽的博客 2506

Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)

Dashboard - Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics) - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/contest/1649先放个连接,之前都是打虚拟赛,第一次打实时赛只做出来两题,好菜啊自己 A. Game 因为只

m0_57221330的博客 513

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) 题解

A. Even Subset Sum Problem 题目 题意: 给定一个由nnn个正整数组成的数组aaa。找到其元素的非空子集,使其和为偶数(即,可被222整除)或确定不存在这样的子集。 思路: 总共由三种情况: 只要出现一个偶数,那么一定有一个子序列就是它自己。 出现至少两个奇数,那么和一定为偶数。 如果只有一个奇数的情况下,那么此时这个序列才不为偶数。 #include <iostream> #include <cstring> #include <cstdio

忘梦心的博客 708

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)

比赛链接:Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) A:Alexey and Train 题意:从 0 站台出发到达第 nnn 号站台的时间, aia_iai​ 表示火车到达第 iii 站的时间,bib_ibi​ 表示火车离开第 iii 个站台的时间。tit_iti​ 表示第 i−1i-1i−1 号站台到达 iii 号站台的时间。 题解:第 i−1i-1i−1 号站台到 iii 号站台时间 res

285

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)——ABC解题报告

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) 比赛链接:https://codeforces.com/contest/1501 A. Alexey and Train 题解 题意给的有点模糊,不过大致猜出题意后模拟即可。 代码 #include <bits/stdc++.h> #define PI atan(1.0)*4 #define rp(i,s,t) for (register i

mumei的博客 246

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) C

Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) C 大意 给定一个数组 \(a\) ,保证 \(n \leq 200000\) , \(1 \leq a_i \leq 2.5*10^6\) 问: 是否存在四个各不相同的数 \(x,y,z,w\) ,满足 \(a_x+a_y = a_z + a...

Flowers 184
上一篇: ZAFU_2021_2_17_2021寒假个人赛第四场题解
下一篇: Divide by Zero 2021 and Codeforces Round #714 (Div. 2)A-E题解
StandNotAlone
博客等级 码龄7年 338粉丝 47原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值