组队赛130926

A题题意:给出n个数,给出[L,R]区间,把区间内的战士消灭掉,并且区间无重复,分别求出L左边R右边第一个存活的位置

思路:因为区间无重复,所以直接更新左端点和右端点

理解题目错了,以为是从左边1开始数到L-1第一个存活的位置,原来是从L-1开始数到1

代码:

#include <iostream>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int M=100010;
int l[M],r[M];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m),n|m)
    {
        for(int i=1; i<=n; i++)
        {
            l[i]=i-1;
            r[i]=i+1;
        }
        int s,e;
        while(m--)
        {
            scanf("%d%d",&s,&e);
            int ll=l[s];
            int rr=r[e];
            if(ll==0)printf("* ");
            else printf("%d ",ll);
            if(rr==n+1)printf("*\n");
            else
                printf("%d\n",rr);
            r[ll]=rr;
            l[rr]=ll;
        }
         printf("-\n");
    }
    return 0;
}


I题真的是一大水题呀,直接模拟就行,可是我还是出了好多错,连我都对自己无语了

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
using namespace std;
char a[1005];
char ss[5][1005];
int n;
int main()
{
    char s[20];
    while(scanf("%d",&n)&&n!=0)
    {
        scanf("%s",s);
        if(s[0]=='S')
        {
            scanf("%s",a);
            int l=strlen(a);
            for(int j=1; j<=3; j++)
            {
                for(int i=0; i<l; i++)
                {
                    if(j==1)
                    {
                        if(a[i]=='1')
                            printf("*.");
                        else if(a[i]=='2')
                        {
                            printf("*.");
                        }
                        else if(a[i]=='3')
                        {
                            printf("**");
                        }
                        else if(a[i]=='4')
                            printf("**");
                        else if(a[i]=='5')
                            printf("*.");
                        else if(a[i]=='6')
                            printf("**");
                        else if(a[i]=='7')
                            printf("**");
                        else if(a[i]=='8')
                            printf("*.");
                        else if(a[i]=='9')
                            printf(".*");
                        else if(a[i]=='0')
                            printf(".*");
                        if(i!=l-1)
                            printf(" ");
                    }
                    else if(j==2)
                    {
                        if(a[i]=='1')
                            printf("..");
                        else if(a[i]=='2')
                            printf("*.");
                        else if(a[i]=='3')
                            printf("..");
                        else if(a[i]=='4')
                            printf(".*");
                        else if(a[i]=='5')
                            printf(".*");
                        else if(a[i]=='6')
                            printf("*.");
                        else if(a[i]=='7')
                            printf("**");
                        else if(a[i]=='8')
                            printf("**");
                        else if(a[i]=='9')
                            printf("*.");
                        else if(a[i]=='0')
                            printf("**");
                        if(i!=l-1)
                            printf(" ");
                    }
                    else if(j==3)
                    {
                        if(a[i]=='1')
                            printf("..");
                        else if(a[i]=='2')
                            printf("..");
                        else if(a[i]=='3')
                            printf("..");
                        else if(a[i]=='4')
                            printf("..");
                        else if(a[i]=='5')
                            printf("..");
                        else if(a[i]=='6')
                            printf("..");
                        else if(a[i]=='7')
                            printf("..");
                        else if(a[i]=='8')
                            printf("..");
                        else if(a[i]=='9')
                            printf("..");
                        else if(a[i]=='0')
                            printf("..");
                        if(i!=l-1)
                            printf(" ");
                    }
                }
                printf("\n");
            }
        }
        else
        {
            int l;
            getchar();
            for(int i=0; i<3; i++)
            {
                gets(ss[i]);
                l=strlen(ss[i]);
            }
            string aa;
            for(int i=0; i<l; i++)
            {
                aa="";
                aa+=ss[0][i];
                aa+=ss[0][i+1];
                aa+=ss[1][i];
                aa+=ss[1][i+1];
                aa+=ss[2][i];
                aa+=ss[2][i+1];
                if(aa=="*.....")printf("1");
                else if(aa=="*.*...")printf("2");
                else if(aa=="**....")printf("3");
                else if(aa=="**.*..")printf("4");
                else if(aa=="*..*..")printf("5");
                else if(aa=="***...")printf("6");
                else if(aa=="****..")printf("7");
                else if(aa=="*.**..")printf("8");
                else if(aa==".**...")printf("9");
                else if(aa==".***..")printf("0");
                i+=2;
            }
            printf("\n");
        }
    }
    return 0;
}

K题

代码:


#include <iostream>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;

int main()
{
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        if(!a && !b && !c)break;
        if(a>b)swap(a,b);
        if(a>c)swap(a,c);
       if(b>c)swap(b,c);
        //cout<<a<<" "<<b<<" "<<c<<endl;
        if(a==b && b==c && a==c)
        {
            if(a==13)
            printf("*\n");
            else
            printf("%d %d %d\n",a+1,b+1,c+1);
        }
        else if(a==b)
        {
            if(c==13)
            printf("1 %d %d\n",a+1,a+1);
            else
            printf("%d %d %d\n",a,a,c+1);
        }
        else if(b==c)
        {
            if(a+1==b)
            {
                if(b==13)
                printf("1 1 1\n");
                else
                printf("%d %d %d\n",b,c,b+1);
            }
            else
            printf("%d %d %d\n",a+1,c,c);
        }
        else if(a!=b && b!=c && a!=c)
        {
            printf("1 1 2\n");
        }
    }
    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值