【CodeForces训练记录】Educational Codeforces Round 175 (Rated for Div. 2)

训练情况

赛后反思

CD连续卡题,D题树上层序遍历+加法原理,鉴定为基本的图论数据结构没学好

A题

直接打表,对于 i%3 = i%5 的情况,我们发现有三个一组,三个一组连续的数,每组第一个数之间差 15,所以我们 / 15 * 3 先把整组的数量算出来,再求是组内第几个,就能得到答案了

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n; cin>>n;
    cout<<n/15*3+min(3ll,n%15+1)<<endl;
    // for(int i = 0;i<=n;i++){
    //     if((i%3)==(i%5)) cout<<i<<endl;
    // }
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}

B题

我们考虑简单的情况,如果没有 x,机器人直接从 0 开始,那它回到原点一定是 L 的数量 = R 的数量,所以我们找到回到原点所需的单次时间,次数就是总时间/单次时间,接下来就是考虑 x 的情况,我们先按照指令移动,看是否能达到原点,记录一下到达原点的时间,剩下的时间就是上述的操作循环

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n,x,k; cin>>n>>x>>k;
    string s; cin>>s;
    int z = 0,cnt1 = 0,cnt2 = 0;
    for(int i = 0;i<n;i++){
        if(s[i] == 'L') cnt1++;
        else if(s[i] == 'R') cnt2++;
        if(cnt1 == cnt2){
            z = i+1;
            break;
        }
    }
    // cout<<z<<endl;
    int ans = 0;
    int now = x;
    for(int i = 0;i<n;i++){
        if(k&&s[i] == 'L') now--,k--;
        else if(k&&s[i] == 'R') now++,k--;
        if(now == 0){
            ans++;
            if(z==0) break;
            ans += k/z;
            break;
        }
    }
    cout<<ans<<endl;
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}
posted @   MNNUACM_2024ZY  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示