A. Dreamoon and Ranking Collection
A题大家应该都没啥问题叭QAQ 题意就是已经比赛了n场 n场的场次都已经告诉了你 问你再比x次 问你你最大的名次是多少(这个最大的名次是指 1-当前名次都已经拿过了)然后注意数据范围 n,x<=100 所以最多可以到两百名呢 所以记得数组要开200多一点
(呜呜我的代码日常很长 所以手速很慢
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int t;
cin>>t;
while (t--){
int n,x;
scanf("%d%d",&n,&x);
int a[105];
int visit[205]={
0};
for (int i=1;i<=n;i++){
scanf("%d",&a[i]);
visit[a[i]]=1;
}
int flag=0;
for (int i=1;i<=205;i++){
if (visit[i]==0){
visit[i]=1;
x--;
}
if (x==0)
break;
}
for (int i=1;i<=205;i++)
{
if (visit[i]==1)
flag=i;
else
break;}
cout<<flag<<endl;
}
return 0;
}
B. Dreamoon Likes Permutations
啊啊这题一看就是一个模拟题某 我觉得群里另一个巨佬的思路应该更好 用前缀和
但在这里就拙劣的讲一下我的思路叭。我是先找左边的1位置计为l吧 右边的1计位r 然后i从l开始到r-1 开始找 如果某一个位置满足了第1到第i个位置满足了 是1-i的排列 那我就先记录下来 然后我在去判断每一个已经记录的位置 右边是不是也是1-(n-i)的排列 然后最后输出就好
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {