Educational Codeforces Round 67 (Rated for Div. 2)

A - Stickers and Toys

题目大意就是有n个鸡蛋,然后有s个彩带(吧?忘记了)和t个玩具,问至少要拿几次鸡蛋才有可能拿到一个彩带和一个鸡蛋。
就是可以分成三部分来算,就是a表示只有彩带的鸡蛋,b表示只有玩具的鸡蛋,c表示既有彩带又有玩具的鸡蛋。然后在a,b中取最大然后再+1就可以。

     # include <bits/stdc++.h>
     using namespace std;
     
     int main()
     {
         int T;
         scanf("%d",&T);
         while(T--){
            int n,s,t;
            int a=0,b=0,c=0;
            int cnt=0;
            scanf("%d %d %d",&n,&s,&t);
            c=s+t-n;
            a=s-c;
            b=t-c;
            cnt=max(a,b)+1;
            printf("%d\n",cnt);
         }
     
         return 0;
     }

B - Letters Shop

题目大意就是有一个字符串,然后有m个不完整子字符串,然后问这个不完整的子字符串,一共需要多少个才会完整(好吧╮(╯-╰)╭,感觉没有解释清楚)。
解法就是,计算当前子字符串中在原字符串的顺序中排最后一个的字母的次序。
先搞一个二维数组,然后把每个字母的次序记录下来。对于每一个子字符串来说,用一个数组表示每一个字母当前的次序,然后在二维数组里面寻找就可以。

# include <bits/stdc++.h>
using namespace std;

const int MAXN=2e5+10;
int a[30][MAXN];
int mm[30];
int nn[30];
int main()
{
    int n;
    scanf("%d",&n);
    string s;
    cin>>s;
    for(int i=0;i<n;i++){
        a[s[i]-'a'][mm[s[i]-'a']++]=i+1;
    }
    int m;
    scanf("%d",&m);
    for(int i=0;i<m;i++){
        string s1;
        cin>>s1;
        memset(nn,0,sizeof(nn));
        int  maxx=0;
        for(int j=0;j<s1.length();j++){
            maxx=max(a[s1[j]-'a'][nn[s1[j]-'a']++],maxx);
        }
        printf("%d\n",maxx);
    }

    return 0;
}

C - Vasya And Array

【题意】就是要求找出一个序列的顺序是和要求的一样的序列即可
【解法】首先根据要求,把要求分成两部分,一部分是要求不降序的,一部分是不按不照降序的(不按照不降序就是不按照升序和平序,并不是说就是降序)(死活wa了好多次才明白介个)。首先满足不降序,就是用一个数组标记哪些区间是不不降序的,然后再满足不按照降序的,就是检查该区间是否都是平序和升序,最后再根据递推求出这个序列就可以了

# include <bits/stdc++.h>
using namespace std;

int a[1100];
int b[1100];
int t[1100];
int l[1100];
int r[1100];
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d %d %d",&t[i],&l[i],&r[i]);
        if(t[i]==1){
            for(int j=l[i];j<r[i];j++){
                b[j]=1;
            }
        }
    }
    for(int i=1;i<=m;i++){
        int flag=0;
        if(t[i]==0){
            for(int j=l[i];j<r[i];j++){
                if(b[j]==0){
                    flag=1;
                }
            }
            if(flag==0){
                printf("NO");
                return 0;
            }
        }
    }

 /*   for(int k=1;k<n;k++){
        printf("%d ",b[k]);
    }
    cout<<endl;
 */   a[1]=1100;
    printf("YES\n");
    printf("%d",a[1]);
    for(int i=2;i<=n;i++){
        if(b[i-1]){
            a[i]=a[i-1]+b[i-1];
        }else{
            a[i]=a[i-1]-1;
        }
        printf(" %d",a[i]);
    }
    return 0;
}

"educational codeforces round 103 (rated for div. 2)"是一个Codeforces平台上的教育性比赛,专为2级选手设计评级。以下是有关该比赛的回答。 "educational codeforces round 103 (rated for div. 2)"是一场Codeforces平台上的教育性比赛。Codeforces是一个为程序员提供竞赛和评级的在线平台。这场比赛是专为2级选手设计的,这意味着它适合那些在算法和数据结构方面已经积累了一定经验的选手参与。 与其他Codeforces比赛一样,这场比赛将由多个问题组成,选手需要根据给定的问题描述和测试用例,编写程序来解决这些问题。比赛的时限通常有两到三个小时,选手需要在规定的时间内提交他们的解答。他们的程序将在Codeforces的在线评测系统上运行,并根据程序的正确性和效率进行评分。 该比赛被称为"educational",意味着比赛的目的是教育性的,而不是针对专业的竞争性。这种教育性比赛为选手提供了一个学习和提高他们编程技能的机会。即使选手没有在比赛中获得很高的排名,他们也可以从其他选手的解决方案中学习,并通过参与讨论获得更多的知识。 参加"educational codeforces round 103 (rated for div. 2)"对于2级选手来说是很有意义的。他们可以通过解决难度适中的问题来测试和巩固他们的算法和编程技巧。另外,这种比赛对于提高解决问题能力,锻炼思维和提高团队合作能力也是非常有帮助的。 总的来说,"educational codeforces round 103 (rated for div. 2)"是一场为2级选手设计的教育性比赛,旨在提高他们的编程技能和算法能力。参与这样的比赛可以为选手提供学习和进步的机会,同时也促进了编程社区的交流与合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值