【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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具