Codeforces Round 631 A-D题解

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() {
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值