Educational Codeforces Round 138 (Rated for Div. 2)
写在前面:没打,在补。
CF1749 (div 2)
A. Cowardly Rooks
简要题意:
的国际象棋棋盘,有个车,问是否能移动一个车,使得
- 没有两个车在同一格子里
- 没有两个车能互相攻击
车能攻击一行或一列。
保证给定的个车满足1,2条件。
因为保证了输入的车一开始满足条件,所以只有当没有空行和空列时,才无法找到移动一个车后仍然合法的方案。
所以 输出 否则
#include <bits/stdc++.h>
using namespace std;
inline void _main(){
int n,m;
cin>>n>>m;
for(int i=1,x,y;i<=m;++i) cin>>x>>y;
if(n==m) puts("NO");
else puts("YES");
}
int main(){
int t;
cin>>t;
while(t--) _main();
return 0;
}
B. Death's Blessing
简要题意:
只怪,打死一只怪需要的时间,同时会给相邻怪的时间加上,问能把怪打完的最小时间。
不难发现,每次选择两边打其中一个打一定最优(不然你会给两个人,同时所有都会打完),最大的那个数肯定最后打。
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 2e5 + 5;
int n,a[MAX_N],b[MAX_N];
inline void _main(){
cin>>n;
long long ans=0;
int mx=0;
for(int i=1;i<=n;++i) cin>>a[i],ans+=a[i];
for(int i=1;i<=n;++i) cin>>b[i],ans+=b[i],mx=max(mx,b[i]);
ans-=mx;
cout<<ans<<'\n';
}
int main(){
int t;
cin>>t;
while(t--) _main();
return 0;
}
C.Number Game
简要题意:
一个序列,第次选择一个小于等于的数删掉,任意选择一个数删掉。
如果无法删数,则输。
轮结束后,若没输,则赢。
求最大的
不难发现,可以二分+check,但是数据范围不大,也可以直接暴力枚举+check
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100 + 5;
int n,a[MAX_N];
inline bool check(int x){
int l=1,r=n;
for(int i=1;i<=x;++i){
if(i>1) l++;
while(r>=l && a[r]>x-i+1) r--;
if(l>r) return false;
r--;
}
return true;
}
inline void _main(){
cin>>n;
for(int i=1;i<=n;++i) cin>>a[i];
sort(a+1,a+1+n);
int ans=0;
for(int i=n;i;--i){
if(check(i)){
ans=i;
break;
}
}
cout<<ans<<'\n';
}
int main(){
int t;
cin>>t;
while(t--) _main();
return 0;
}
D. Counting Arrays
简要题意:
分类:
codeforces
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现