Codeforces Global Round 5(赛后整理)

本文是对Codeforces Global Round 5比赛的赛后补题总结,详细解析了A - Balanced Rating Changes、B - Balanced Tunnel、C1 & C2 - Balanced Removals 以及D - Balanced Playlist四道题目。针对每道题目,作者分享了思路和解题方法,包括如何寻找曼哈顿最小距离的点、递归处理高维度问题以及利用ST表、二分等算法求解复杂问题。
摘要由CSDN通过智能技术生成

Codeforces Global Round 5(赛后补题)

这场的体验挺好的,总体感觉题目给自己一些了good idea,不过就是比赛过程中不争气,只做出来了仅仅三道题目(赛后补题+两道

比赛链接:传送门
A - Balanced Rating Changes

#include<bits/stdc++.h>
#define mset(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int N=2e4+5;
int a[N],b[N];
int main()
{
   
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,t;
    cin>>n;
    t=0;
    for(int i=1; i<=n; ++i)
    {
   
        cin>>a[i];
        if(abs(a[i])&1) t++;
        else b[i]=a[i]/2;
    }
    t/=2;
    for(int i=1; i<=n; ++i)
    {
   
        if((abs(a[i])&1))
        {
   
            if(t>0)
            {
   
                b[i]=(a[i]+1)/2;
                t--;
            }
            else
            {
   
                b[i]=(a[i]-1)/2;
            }
 
        }
    }
    for(int i=1; i<=n; ++i)
        cout<<b[i]<<endl;
}
B - Balanced Tunnel

思路:按照进入的顺序如果比车 a a a 与比该车之前进去的车 b b b 出来的早,那么车a就超车了

#include<bits/stdc++.h>
#define mset(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=2e5+5;
int in[N],to[N],out[N],num[N];
int main()
{
   
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
   
        scanf("%d",in+i);
        to[in[i]]=i;
    }
    for(int i=1;i<=n;++i){
   
        scanf("%d",out+i);
        int ps=to[out[i]];
        num[ps
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值