Codeforces Round 897 (Div. 2)
Codeforces Round 897 (Div. 2)
A. green_gold_dog, array and permutation
题目
给你一个长度为n的数组a,要求你找出一个数组长度为n的数组b,大小是1-n,保证每个数字出现一次,使得a数组与b数组对应位置上的差值和最大。
A思路:
记录a数组每个数的坐标,给a数组排个序即可。
A代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=4e4+10;
struct node
{
int x,idx;
}a[N];
bool cmp(node a,node b){
if(a.x==b.x){
return a.idx<b.idx;
}
return a.x>b.x;
}
// int b[N];
int c[N];
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x;
a[i].idx=i;
}
sort(a+1,a+n+1,cmp);
int x1=1;
for(int i=1;i<=n;i++){
c[a[i].idx]=x1++;
}
for(int i=1;i<=n;i++){
cout<<c[i]<<" ";
}
cout<<endl;
return ;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}
B. XOR Palindromes
题目链接
这题没有读懂什么意思!!!!还望有大佬能帮我解释解释。
C. Salyg1n and the MEX Game
题目链接
给定一个数组,两个人都可以对这个数组进行操作,一个人可以在数组中插入数组中没有的元素,一个可以在数组删除一个元素,但是删除的元素必须严格小于插入数组中的元素,有一个mex函数的定义是数组种未出现的最小自然数,插入的保证mex得到的最大,删除的保证得到的mex最小,要求让插入的人获胜
C思路:
这是一个比较简单的交互题,我们如何让插入的人获胜呢?要想保证最大,我们可以输入原来数组的mex值,之后只要对方删除哪个元素我们再添上哪个元素就可以了。
C代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll a[N];
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
ll x=0;
if(a[1]!=0){
cout<<0<<endl<<endl;
cin>>x;
}
else{
ll pos=n;
for(int i=1;i<n;i++){
if(a[i]+1!=a[i+1]){
pos=i;
break;
}
}
cout<<a[pos]+1<<endl<<endl;
cin>>x;
while(x!=-1){
cout<<x<<endl<<endl;
cin>>x;
}
}
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】