这道题是09年上海区域赛的A题,虽然很水,但是不能直接爆搜,直接爆搜要T。于是我们看到题目的要求是说当操作的步数大于3的时候就输出more,那么我们可以从终态枚举进行了三次操作所能达到的所有状态,这个是用广搜应该还是很好写的。我们直接使用vis数组就完全可以胜任这个记录了,没有必要用任何的结构体。

我们在枚举操作的时候,因为我们仅仅只有32条边,我们直接手工输入这32条边,然后在广搜的过程中直接枚举边进行操作就行了,但是注意的一点是,题目中的要求是说这条边的两个端点的灯的状态必须是不一样的,才能进行操作,我在这个地方差点wa到死,好伤心啊!最后使用vis数组判断,进行相应的输出就可以了。

下面贴上我的代码(代码应该还是比较简洁清晰的):

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
using namespace std;
int a[32]={1,3,2,1,10,2, 4, 1,3, 9, 9, 11,  6,14,6, 8, 5,13,5, 7, 13,15,5,7,  2,4,12,10,3,1,11,9};
int b[32]={2,4,4,3,12,10,12,9,11,11,10,12,  8,16,14,16,7,15,13,15,14,16,6,8,  6,8,16,14,7,5,15,13};
int vis[1000000];
int getState(int *st)
{int ans=0;for(int i=0;i<16;i++){if(st[i]){ans|=(1<<i);}}return ans;
}void bfs(int s)
{vis[s]=0;queue<int> q;q.push(s);while(!q.empty()){int fr=q.front();q.pop();if(vis[fr]>=3)continue;for(int i=0;i<32;i++){int temp=fr;int j1=fr&(1<<(a[i]-1));int j2=fr&(1<<(b[i]-1));if(j1==j2)continue;temp^=(1<<(a[i]-1));temp^=(1<<(b[i]-1));if(vis[temp]==-1){vis[temp]=vis[fr]+1;if(vis[temp]<3)q.push(temp);}}}
}
int main()
{int st[16]={0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};int s=getState(st);memset(vis,-1,sizeof(vis));bfs(s);int T;scanf("%d",&T);for(int cas=1;cas<=T;cas++){for(int i=0;i<16;i++)scanf("%d",&st[i]);s=getState(st);printf("Case #%d: ",cas);if(vis[s]==-1||vis[s]>3)printf("more\n");elseprintf("%d\n",vis[s]);}return 0;
}

HDU 3220 Alice’s Cube (09年上海区域赛水题(位压缩、逆向搜索、打表))相关推荐

  1. 2019ICPC上海区域赛 补题(12/13) 总结

    前言: 个人的 ICPCICPCICPC 第一站,还是值得记录一下的(虽然咕到现在才记录),总体而言体验很不错,比赛兼旅游.这套题总体印象就是树树树图,作为队里数据结构兼图论选手,这次也确实写了大部分 ...

  2. 上海区域赛Unlock the Cell Phone

    /* 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4026  题目来源:上海区域赛Unlock the Cell Phone 报告人:SpringWa ...

  3. 树形DP+并查集+左偏树, HDU-5575,Discover Water Tank,2015上海现场赛D题

    只是ACM/IICPC 2015 上海区域赛的一道题.原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5575 题目描述 N-1个木板把一个水箱划分成了N ...

  4. 2021ICPC上海区域赛DEGKI

    题目链接: https://codeforces.com/gym/103446 视频讲解: https://www.bilibili.com/video/bv1994y1f76o 代码:https:/ ...

  5. hdu 5078 2014鞍山现场赛 水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5078 现场最水的一道题 连排序都不用,因为说了ti<ti+1 //#pragma comment(link ...

  6. HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路

    题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...

  7. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

  8. HDU - 1847 Good Luck in CET-4 Everybody!(sg函数,水题)

    题目链接:点击查看 题目大意:给出n张牌,两个人轮流摸牌,每次只能摸2的幂次,问先手必胜还是必败 题目分析:简单sg打表题,先预处理出sg表,然后O(1)查询即可 #include<iostre ...

  9. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:实现公式: f(x)=x,x<10 f(x)=a0*f(x-1)+a1*f(x-2)+--+a9*f(x-10) 题目给出a0~a9,一个n和一个m,要求输出f(n ...

最新文章

  1. Who悄悄偷走了我的流量
  2. docker php composer 使用_宿主机nginx与docker的PHP搭配使用
  3. 【C++ 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 )
  4. web service方法进行全文检索_SpringMVC(Web应用)配置教程终章项目实战
  5. html5 hr代码缩减比例,HTML HR size用法及代码示例
  6. 《那些年啊,那些事——一个程序员的奋斗史》——35
  7. java.io.FileNotFoundException异常,一是“拒绝访问”,二是“系统找不到指定路径”
  8. SCI论文之数据可用性陈述--Data availability statement
  9. 内存管理-基础知识框架和关键结构体(一)
  10. 面试中遇见的一些考试题目
  11. 淘宝与拍拍的世纪之战!(庄帅)
  12. MySQL——基础知识
  13. 阿里云添加域名解析设置
  14. 前端XSS 过滤--亲测有效
  15. 冯诺依曼体系结构 —(收藏版)
  16. 思科模拟器:交换机的vlan的创建以及配置
  17. 如何解决图片路径是中文名称的问题
  18. 计算机控制技术课程配套教材习题解答(第4、5章)
  19. 蚂蚁集团三项技术方案入选“2021年信息技术应用创新典型解决方案”
  20. set feedback on

热门文章

  1. 无麸质麦芽提取物行业调研报告 - 市场现状分析与发展前景预测
  2. 简单几行代码,python制作美图秀秀软件!
  3. 使用sphinx快速为你python注释生成API(html)文档
  4. 视频教程-Python数据分析与挖掘-Python
  5. Pepper/Nao初级教程:第四章 Pepper/Nao的常用指令盒介绍
  6. 芯龙半导体IPO过会:拟募资2.6亿 年营收2亿,员工仅53人
  7. Docker启动SpringBoot项目传递参数
  8. Face Global | 创龙科技2款新品登陆TI全球官网
  9. 【捷码工业互联网行业实践】—帮助机加工企业数字化转型
  10. oracle对某两列求和再求和_“1”招软化他的心,再心狠的男人也会心软求和