Codeforces Round #534 (Div. 2)

A. Splitting into digits

http://codeforces.com/contest/1104/problem/A

被提示误导,搞不清楚状况的我,乱写了一发AC的,其实只要输出全1就好了

#include <bits/stdc++.h>
using namespace std;
//int pr[15]={0,0,1,1,0,1,0,1,0,0};
int main()
{
    int n;
    scanf("%d",&n);
    int flag=1;
    if(n==2)
    {
        printf("2\n1 1\n");
        return 0;
    }
    if(n==3)
    {
        printf("3\n1 1 1\n");
        return 0;
    }
    if(n==4)
    {
        printf("2\n2 2\n");
        return 0;
    }
    if(n==5)
    {
        printf("5\n1 1 1 1 1\n");
        return 0;
    }
    if(n==6)
    {
        printf("2\n3 3\n");
        return 0;
    }
    if(n==7)
    {
        printf("7\n1 1 1 1 1 1 1\n");
        return 0;
    }
    if(n==8)
    {
        printf("2\n4 4\n");
        return 0;
    }
    if(n==9)
    {
        printf("3\n3 3 3\n");
        return 0;
    }
    for(int i=2;i<=9;i++)
    {
        if(n%i==0)
        {
            flag=i;
        }
    }

    int k=n/flag;
    printf("%d\n",k);
    for(int i=1;i<=k;i++)
    {
        if(i==1) printf("%d",flag);
        else printf(" %d",flag);
    }
    printf("\n");
    return 0;
}

B. Game with string

http://codeforces.com/contest/1104/problem/B

给你一个100000的字符串,都是小写字母,A和B每次删去连续相同的两个字母,直到删不掉为止。

问你最后谁赢

贪心的想法,找到最多能删多少次就好了

奇数输出Yes,偶数No

每次找到可以直接删的和删完后继续删的的对称的删除

注意可能要删好几次,直到不能直接找到连续的两个相同的为止

#include <bits/stdc++.h>
using namespace std;
char a[100005],c[1000005];
bool b[100005];
struct node
{
    int w;
}d[100005];
int main()
{
    scanf("%s",c+1);
    int len=strlen(c+1);
    for(int i=1; i<=len; i++)
    {
        a[i]=c[i];
    }
    int ans=0;


    while(1)
    {
        int flag=0;
        int len1=strlen(a+1);
        if(len1<=1) break;
        int left=1;
        for(int i=2; i<=len1; i++)
        {
            if(a[i]==a[i-1]&&!b[i-1])
            {
                flag++;
                int p=1;
                int k=i-1-left;
                int x=i-1,y=i;
                for(int j=1; j<=k; j++)
                {
                    if(a[x-j]!=a[y+j]) break;
                    if(y+j>len1) break;
                    else
                    {
                        b[x-j]=b[y+j]=1;
                        ans++,p++;
                    }
                }
                b[x]=b[y]=1;
                ans++;
                left=y+p;
                i=y+p+1;
            }
        }
        if(flag==0) break;
        int tot=0;
        memset(a,0,sizeof a);
        for(int i=1; i<=len1; i++)
        {
            if(!b[i])
            {
                a[++tot]=c[i];
            }
        }
        for(int i=1;i<=tot;i++)
        {
            c[i]=a[i];
        }

        memset(b,0,sizeof(b));
        if(tot==0) break;
    }


    //cout<<ans<<endl;
    if(ans%2) printf("Yes\n");
    else printf("No\n");
    return 0;
}

C. Grid game

http://codeforces.com/contest/1104/problem/C

给你一个长度为1000的01字符串,0表示竖放1*2方格,1表示横放,某行某列放满就清空

要求不重叠,输出每块放置的行列

就让竖放的放在一二行,横放的放在第三行,放满就清除就好了

#include <bits/stdc++.h>
using namespace std;
int b[6][6];
char a[1005];
int main()
{
    scanf("%s",a+1);
    int len=strlen(a+1);
    memset(b,0,sizeof b);
    for(int i=1;i<=len;i++)
    {
        if(a[i]=='0')
        {
            for(int j=1;j<=4;j++)
            {
                if(b[1][j]==0)
                {
                    b[1][j]=1;
                    cout<<"1 "<<j<<endl;
                    //printf("1 %d\n",1,j);
                    if(j==4)
                    {
                        for(int k=1;k<=4;k++)
                        {
                            b[1][k]=0;
                        }
                    }
                    break;
                }

            }
        }
        else
        {
            if(!b[3][1])
            {
                b[3][1]=b[3][2]=1;
                printf("3 1\n");
            }
            else
            {
                b[3][1]=b[3][2]=0;
                printf("3 3\n");
            }
        }

    }
    return 0;
}

D. Game with modulo

http://codeforces.com/contest/1104/problem/D

有一个数n,系统每次询问你? a b,

你输出x代表,a%n>=b%n

否则输出y

要求在60次以内找到这个n

否则会判超时

从?0 1   返回x代表就是1

?1 2

?2 4

不断询问下去

如果返回x就是说明n在【2^i,2^(i+1)】

然后开始二分

老是TLE就是我在规定次数内没能跳出二分循环,输出答案

所以就让它跑29次,就ac了

第一道交互式的题目

在输出后面加上fflush(stdout);


#include <bits/stdc++.h>

using namespace std;
char s[10];
int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    string opt;
    while(1)
    {
        scanf("%s",s);
        if(s[0]=='e'||s[0]=='m')
        {
            break;
        }

        if(s[0]=='s')
        {
            cout<<"? 0 1"<<endl;
            fflush(stdout);
            cin>>opt;
            if(opt[0]=='x')
            {
                cout<<"! 1"<<endl;
                fflush(stdout);
                continue;
            }

            int l,r;
            for(int i=0;i<=29;i++)
            {
                int x=(1<<i),y=(1<<(i+1));
                cout<<"? "<<x<<" "<<y<<endl;
                fflush(stdout);
                cin>>opt;
                if(opt[0]=='x')
                {
                    l=x,r=y;
                    break;
                }
            }

            int mid=1e15;
            for(int i=1;i<=29;i++)
            {
                mid=(l+r)/2;
                cout<<"? "<<l<<" "<<mid<<endl;
                fflush(stdout);
                cin>>opt;
                if(opt[0]=='x')
                {
                    r=mid;
                }
                else l=mid;
            }
            cout<<"! "<<l+1<<endl;
            fflush(stdout);
        }
    }
    return 0;
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值