zoukankan      html  css  js  c++  java
  • POJ 1414 暴搜

    题意比较复杂 (但是很好理解)
    大概意思是给你等边三角形(详见题目中的图)。
    最后一行有n个数,下一次要填的数是c。
    里面预先已经填好了数字。(0为未填)
    得分的标准是这个分数的连通块周围没有空的地方。 就能得到连通块大小的分。
    失分是 当前块能得分,但不巧,当前块内的数字是要填的数字。就失去连通块大小的分。
    求这次填块最多可以得多少分。
    不能不填,即分数可以为负。
    思路:
    其实这个题并不难。
    枚举所有没有填过的块。暴搜一遍。。。 搞定。

    // by SiriusRen
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define ff for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)
    using namespace std;
    int n,c,vis[11][11],a[11][11],xx[]={1,0,-1,0,-1,1,0},yy[]={0,1,0,-1,-1,1,0},cnt,flag,temp,ans;
    bool check(int x,int y){return x>=1&&y<=x&&y>=1&&x<=n;}
    void dfs(int x,int y,int t){
        vis[x][y]=1;cnt++;
        for(int i=0;i<6;i++){
            int dx=x+xx[i],dy=y+yy[i];
            if(!vis[dx][dy]&&check(dx,dy)){
                if(a[dx][dy]==t)dfs(dx,dy,t);
                else if(!a[dx][dy])flag=1;
            }
        }
    }
    int main(){
        while(scanf("%d%d",&n,&c)&&(n||c)){
            ans=-0x3fffffff;
            ff scanf("%d",&a[i][j]);
            ff if(!a[i][j]){
                memset(vis,0,sizeof(vis));
                a[i][j]=c;
                temp=0;
                for(int k=0;k<=6;k++){
                    cnt=flag=0;
                    int dx=i+xx[k],dy=j+yy[k];
                    if(check(dx,dy)&&!vis[dx][dy]&&a[dx][dy])dfs(dx,dy,a[dx][dy]);
                    if(!flag){
                        if(a[dx][dy]==c)temp-=cnt;
                        else temp+=cnt;
                    }
                }
                ans=max(ans,temp);
                a[i][j]=0;
            }
            printf("%d
    ",ans);
        }
    }

    一不小心还进了Code Length前三 哈哈哈哈
    这里写图片描述

  • 相关阅读:
    原产地政策,jsonp跨域
    4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
    [学习笔记]批次需求计划系统-简要
    【大话设计模式】——代理模式
    jQuery Mobile发展新闻阅读器,适应iphone和android打电话
    HDN2048(交错复发)
    CodeForces 69D Dot (游戏+记忆)
    Cocos2d-x 3.x plist+png 做动画
    Solr/SolrCloud -error
    Linux fdisk
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532382.html
Copyright © 2011-2022 走看看