HRBU_20211101训练(codeforces round #752(div2))

HRBU_20211101训练

A - Era

题意

在一组数中任意插入几个数,是这组数满足a i<= i;并且下标是从1开始的,问需要插入几个数,才能满足于上述条件。

思路

求出a[i]-i的最大值,就是为了比较该数与数的下标相差多少,如果相等的话,说明该数就是数的下标的值,只需要比较出最大值即可,举例说明一下:
1 2 3 4 5;每个数的下标与数的差值均为零,可以看出a[i]==i;

1 2 3 4 6;可以看出只有数字6与数字下标5相差1,而在这里只需要补充一个5即可,即只需要补充一个数字即可。

代码

#include<stdio.h>
#include<iostream>
using namespace std;
int a[105];
int main()
{
    
    

    int t;
    scanf("%d",&t);
    while(t--)
    {
    
    
        int n,ans=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
    
    
        scanf("%d",&a[i]);
        ans=max(ans,a[i]-i);
        }
        printf("%d\n",ans);

    }
}

B - XOR Specia-LIS-t

题意

一组数列,要求分成几组使得分成的子序列均是按照升序排列,例如,2,5,3,1,4 的数列,可以分为 2 5,3,1 4,三组,再把分成的组的个数作异或操作,如果结果是零输出NO,否则输出YES。

思路

如果该数列已经是升序,就分成零个子序列,输出NO,如果是奇数也是输出NO,因为总有一个子序列为零。

代码

#include<stdio.h>
#include<iostream>
int a[100005];
using namespace std;
int main()
{
    
    
    int t;
    cin>>t;
    while(t--)
    {
    
    
        int n,i;
        cin>>n;
        int flag=0;
        for( i=1;i<=n;i++)
        {
    
    
        cin>>a[i];
        if(i>0)
        if(a[i]<=a[i-1])flag=1;
        }
        cout<<((n%2==0) || flag?"YES\n":"NO\n");

    }
}

C - Di-visible Confusion

题意

判断一个数是否可以被下标加一除完,a[i]%(i+1)==0,能被整除完输出NO,判断是否所有的都能被整除完,且数列中的每一个都能被整除完时,应该把这个数移除,后面的数前进一位。

思路

依次遍历看看是否每一个都能被整除,若能输出NO,不能输出YES

代码

#include<stdio.h>
#include<iostream>
using namespace std;
int a[100005];
int main()
{
    
    
    int t;
    scanf("%d",&t);
    while(t--)
    {
    
    
        int n;
         scanf("%d",&n);
        int flag=0;
        for(int i=1;i<=n;i++)
        {
    
    
            scanf("%d",&a[i]);
            int k=0;
            while(a[i]%(i+1-k)==0 && k<=i-1)k++;
            if(k==i)flag=1;
        }
        if(flag==0)
            printf("YES\n");
        else
            printf("NO\n");

    }
}

D - Moderate Modular Mode

题意

题目意思很简单,输出一个n ,使得 (n % x)== (y % n);
问n是多少?

思路

分情况讨论:
若x>y 输出 X+Y;
若x<=y,输出y- y%x/2;

代码

#include<stdio.h>
#include<iostream>
#define ll long long
using namespace std;
int main()
{
    
    
    int t;
    cin>>t;
    while(t--)
    {
    
    
        int x,y;
        cin>>x;
        cin>>y;
        //n % x == y % n
        cout<<(x>y?y+x:y-y%x/2)<<endl;
    }
}

总结

每个人的人生都存在着起伏,在低谷时积蓄力量,在顶峰时绽放光彩!希望我能做到!

猜你喜欢

转载自blog.csdn.net/MarigoldLi/article/details/121087433
今日推荐