zoukankan      html  css  js  c++  java
  • 俄罗斯方块(NOIP模拟赛)(水·模拟)

    真是一道神奇的题目233~

    原题传送门

    迫不得已贴了个题解的链接。。

    好吧,这道题就是分情况讨论,纯模拟,,

    没有什么难的。。

    脑洞要大,四面都要考虑,不能漏!

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int c,p,ans;
    int l[101];
    int absq(int a,int b){return a>b?a-b:b-a;}
    int main(){
        freopen("game.in","r",stdin);
        freopen("game.out","w",stdout);
        scanf("%d%d",&c,&p);
        for(int i=1;i<=c;i++)
        scanf("%d",&l[i]);
        if(p==1){
            ans+=c;
            for(int i=4;i<=c;i++)
            if((l[i]==l[i-1])&&(l[i-1]==l[i-2])&&(l[i-2]==l[i-3]))
            ans++;
        }
        else if(p==2){
        for(int i=2;i<=c;i++)
        if(l[i]==l[i-1])ans++;    
        }
        else if(p==3){
            for(int i=2;i<=c;i++)
            if(l[i-1]-l[i]==1)ans++;
            for(int i=3;i<=c;i++)
            if(l[i-2]==l[i-1]&&l[i]-l[i-1]==1)ans++;
        }
        else if(p==4){
            for(int i=2;i<=c;i++)
            if(l[i]-l[i-1]==1)ans++;
            for(int i=3;i<=c;i++)
            if(l[i-2]-l[i-1]==1&&l[i-1]==l[i])ans++;
        }
        else if(p==5){
            for(int i=2;i<=c;i++)
            if(absq(l[i],l[i-1])==1)ans++;
            for(int i=3;i<=c;i++)
            if((l[i]==l[i-1])&&(l[i-1]==l[i-2]))ans++;
            for(int i=2;i<c;i++)
            if(l[i-1]-l[i]==1&&l[i+1]-l[i]==1)ans++;
        }
        else if(p==6){
            for(int i=3;i<=c;i++)
            if((l[i]==l[i-1])&&l[i-1]==l[i-2])ans++;
            for(int i=2;i<=c;i++)
            if(l[i]==l[i-1])ans++;
            for(int i=3;i<=c;i++)
            if ((l[i-1]-l[i-2]==1)&&(l[i]==l[i-1]))ans++;
            for(int i=2;i<=c;i++)
            if (l[i-1]-l[i]==2)ans++;
        }
        else if(p==7){
            for(int i=3;i<=c;i++)
            if((l[i]==l[i-1])&&l[i-1]==l[i-2])ans++;
            for(int i=2;i<=c;i++)
            if(l[i]==l[i-1])ans++;    
            for(int i=3;i<=c;i++)
            if ((l[i-1]==l[i-2])&&(l[i-1]-l[i]==1))ans++;    
            for(int i=2;i<=c;i++)
            if (l[i]-l[i-1]==2)ans++;        
        }
        printf("%d
    ",ans);
        fclose(stdin);
        fclose(stdout);
    }
  • 相关阅读:
    Code First Migrations更新数据库结构(数据迁移) 【转】
    Lambda表达式详解【转】
    @Html.Raw用法
    ASP.NET MVC文件上传【转】
    SQL Server附加数据库拒绝访问错误解决方法
    window.location.href的用法
    vs2013中将复制过来的文件或文件夹显示到解决方案管理
    Expression<Func<TObject, bool>>与Func<TObject, bool>的区别
    VS中的一些标记
    ob_get_contents()
  • 原文地址:https://www.cnblogs.com/ghostfly233/p/6882533.html
Copyright © 2011-2022 走看看