poj 2286

原创 2016年05月30日 20:28:22

让我先分分钟剖腹自尽。

然后大力鸣谢@yangyihua 大家来找茬的 擅长者。
还有 @ Mr.Sirius 花了 他 N++个小时 还害他 差点改姓 智 了 、。。。(^o^)/~【【这么说 应该让他改的】】

这道题 改了 n++ 个小时。

题目:
戳戳戳

题意:
图片

这道题,大概就是要把中间的8个数字变成一样的,输出操作和步数。

分析:
搜索啊! 但是简单暴搜 估计会挂。
所以我们用 ID + A* 【【我是不会告诉你们我一直不知道是这俩的(^o^)/~】】
估价函数:
跟大多数的人大概不太一样。记录最少不一样的。如果当前步数+你的估价>你循环的最大步数。就return false

容易错的【【或者只是我错的
1. 没有看到 不用动 就输出 No moves needed
2. 没有输出 中间的数字
3. 不应输出也要输出中间的数字
4. 然后搜完了所有的,我竟然没有 返回false !!!!!!N+N 次。别拦着我,让我从8楼跳下去。~~o(>_<)o ~~
5. 表打错了 【(⊙﹏⊙)b
6. 然后从0开始和从1开始

你问我怎么错的这么多?
有图有真相:
你看

然后贴份代码,写的特别好的:

#include<cstdio>
#include<algorithm>
#include<cstring>
//by mars_ch
using namespace std;
int biao[8][8]=
{
    {0,2,6,11,15,20,22}, //A 
    {1,3,8,12,17,21,23}, //B
    {10,9,8,7,6,5,4}, //C
    {19,18,17,16,15,14,13}, //D
    {23,21,17,12,8,3,1},//E
    {22,20,15,11,6,2,0}, //F
    {13,14,15,16,17,18,19}, //G
    {4,5,6,7,8,9,10},//H
};
int cen[8]={6,7,8,11,12,15,16,17};
int p[25],num;
char put[1005]; 
bool ok()
{
    for(int i=0;i<8;i++){
        if(p[cen[i]] !=p[cen[0]])
        return false;}
    return true;
}
int cnt()       
{
    num=10000;
    for(int i=1;i<=3;i++)
    {
        int temp=0;
        for(int j=0;j<8;j++)
        {
            if(p[cen[j]] != i)
             temp++;
        }
        num=min(num,temp);
    }
    return num;
}
void move(int a)
{
    int temp=p[biao[a][0]];
    for(int i=0;i<6;i++)
    {
        p[biao[a][i]]=p[biao[a][i+1]];
    }
    p[biao[a][6]]=temp;
}
bool dfs(int cd,int md)    //current depth & max depth 
{
    if(cd == md)
    {
        if(ok() == 1)
        {
            put[cd]='\0';
            printf("%s\n%d\n",put,p[cen[0]]);
            return true; 
        }
        else return false;
    }
    if(cd+cnt()>md) return false;
    for(int i=0;i<8;i++)
    {
        put[cd]='A'+i;
        move(i); 
        if(dfs(cd+1,md) == 1) return 1;
        if(i % 2 ==0) move((i+5)%8);
        else move((i+3)%8);      //这是啥,反向操作啊!4组:0,5;1,4;2,7;3,6;  
    }
    return false;
}
int main()
{
    while(scanf("%d",&p[0]) && p[0]!=0)
    {
        for(int i=1;i<24;i++)
        {
            scanf("%d",&p[i]);
        }
        if(ok() == 1) printf("No moves needed\n%d\n",p[cen[0]]);
        else{
            for(int i=1;i<=1005;i++)
            {
                if(dfs(0,i) == 1) break;
            }   
        } 
    }
    return 0;
}

我放弃了 缩代码这个 艰巨的任务

6.1儿童节有人送礼物吗?!

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj 2286 (自己对IDA*的一些理解)

原博客地址:http://blog.csdn.net/t1019256391/article/details/925724315s的时间,150000kb的内存,一眼就让人想到广搜,但状态实在太多,3...
  • Davenny
  • Davenny
  • 2017年07月11日 09:01
  • 206

poj 2286 (自己对IDA*的一些理解)

15s的时间,150000kb的内存,一眼就让人想到广搜,但状态实在太多,3^25-1种吧,想写又没下手。。。 其实这是一道IDA*的题目。 顺便讲一下自己对IDA*的理解: 1、什么是IDA*?  ...
  • t1019256391
  • t1019256391
  • 2013年07月06日 11:09
  • 962

bzoj2286 消耗战 虚树&树形dp

学习了一下虚树,讲一下自己的理解。        虚树是这么一个东西,对于需要求答案的点p,只保留对答案有影响的节点,从而减少时间。        现在对于这道题目进行特定的说明。        考虑...
  • lych_cys
  • lych_cys
  • 2016年03月06日 20:11
  • 1255

【bzoj 2286】【SDOI2011】消耗战

Description在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜...
  • lyd_7_29
  • lyd_7_29
  • 2017年12月30日 13:44
  • 66

POJ 4083 我爱北大

这道题真的是目前为止见过的最有情怀的题目之一,感觉做完以后就不再爱北大了…1、因为最后要求输出任意两个路径之间的最短距离,因此我选择使用的Floyd算法(数据比较弱,样例代码是贪心,应该也能过),Fl...
  • qq_32817311
  • qq_32817311
  • 2015年11月17日 17:16
  • 1080

POJ 难度及题型题目分类

OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期:...
  • u010871244
  • u010871244
  • 2013年07月16日 10:34
  • 1941

(经典)POJ-3280 回文串DP

题目大意:给定一个字符串S及其长度M与S所含有的字符种数N(最多26种小写字母),然后给定这N种字母Add与Delete的代价,求将S变为回文串的最小代价和。 题目链接:点击打开链接 分析: ...
  • AC_hell
  • AC_hell
  • 2016年05月12日 19:36
  • 555

poj1623 象限四分树

Squadtrees Time Limit: 10000MS   Memory Limit: 32768K Total Submissions: 389   Acc...
  • u012866104
  • u012866104
  • 2015年06月22日 14:21
  • 1080

poj初期基本算法

想想接触ACM已经一年了,参加ACM也半年了。大四只有少量的课程,一般都准备考研、找工作、实习了。想想我的大学生活俨然已经走过了一半,一年半以来,不说自己大学过得如何,至少做的还不算太差,时间过的真是...
  • consciousman
  • consciousman
  • 2017年01月13日 17:30
  • 859

北大POJ题库使用指南

[转载]北大POJ题库使用指南  (2012-03-30 21:54:45) 转载▼ 标签:  转载 分类: ACM 原文地址:...
  • Enjoying_Science
  • Enjoying_Science
  • 2014年11月05日 19:59
  • 3201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2286
举报原因:
原因补充:

(最多只允许输入30个字)