当前位置: 首页 > news >正文

网站建设的行业新闻职业培训网络平台

网站建设的行业新闻,职业培训网络平台,美食网页设计模板中文,做传感器交易的网站题目传送门 题意:有n*m的房间,.表示可以被点亮,#表示不能被点亮,每点亮一个房间会使旁边的房间也点亮,有意盏特别的灯可以选择周围不同方向的房间点亮。问最少需要多少灯使得所有房间点亮 分析:需要被点亮的…

 

题目传送门

题意:有n*m的房间,'.'表示可以被点亮,'#'表示不能被点亮,每点亮一个房间会使旁边的房间也点亮,有意盏特别的灯可以选择周围不同方向的房间点亮。问最少需要多少灯使得所有房间点亮

分析:需要被点亮的房间最多只有15个,所以考虑状压,然后暴力枚举选择哪一个当作特殊灯和枚举选择哪个方向使旁边的房间亮,注意清空vis数组需要优化,memset超时。上交6分钟1Y,Orz。。。额,看错榜了,最快的19分钟,而且这不是第一道水题,汗

 

/************************************************* Author        :Running_Time* Created Time  :2015/10/22 星期四 18:25:25* File Name     :A.cpp************************************************/#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std;#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 2e2 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-8;
char room[N][N];
struct Point    {int x, y;Point (int x, int y) : x (x), y (y) {}
};
int n, m;
bool vis[N][N];void back_nomal(int x, int y)   {vis[x][y] = false;if (x - 1 >= 1) vis[x-1][y] = false;if (y + 1 <= m) vis[x][y+1] = false;
}void back_special(int x, int y, int type) {if (type == 1)  {back_nomal (x, y);  return ;}else if (type == 2)  {if (x + 1 <= n) {vis[x+1][y] = false;}if (y + 1 <= m) {vis[x][y+1] = false;}}else if (type == 3) {if (x + 1 <= n) {vis[x+1][y] = false;}if (y - 1 >= 1) {vis[x][y-1] = false;}}else if (type == 4) {if (x - 1 >= 1) {vis[x-1][y] = false;}if (y - 1 >= 1) {vis[x][y-1] = false;}}vis[x][y] = false;
}bool light_nomal(int x, int y)  {if (x - 1 >= 1 && room[x-1][y] != '.')  return false;if (y + 1 <= m && room[x][y+1] != '.')  return false;if (x - 1 >= 1) {vis[x-1][y] = true;}if (y + 1 <= m) {vis[x][y+1] = true;}vis[x][y] = true;return true;
}bool light_special(int x, int y, int type)    {if (type == 1)  {return light_nomal (x, y);}else if (type == 2)  {if (x + 1 <= n && room[x+1][y] != '.')  return false;if (y + 1 <= m && room[x][y+1] != '.')  return false;if (x + 1 <= n) {vis[x+1][y] = true;}if (y + 1 <= m) {vis[x][y+1] = true;}}else if (type == 3) {if (x + 1 <= n && room[x+1][y] != '.')  return false;if (y - 1 >= 1 && room[x][y-1] != '.')  return false;if (x + 1 <= n) {vis[x+1][y] = true;}if (y - 1 >= 1) {vis[x][y-1] = true;}}else if (type == 4) {if (x - 1 >= 1 && room[x-1][y] != '.')  return false;if (y - 1 >= 1 && room[x][y-1] != '.')  return false;if (x - 1 >= 1) {vis[x-1][y] = true;}if (y - 1 >= 1) {vis[x][y-1] = true;}}vis[x][y] = true;return true;
}int main(void)    {while (scanf ("%d%d", &n, &m) == 2) {if (!n && !m)   break;for (int i=1; i<=n; ++i)    {scanf ("%s", room[i] + 1);}int cnt = 0;memset (vis, false, sizeof (vis));vector<Point> V;for (int i=1; i<=n; ++i)    {for (int j=1; j<=m; ++j)    {if (room[i][j] == '.')  {cnt++;V.push_back (Point (i, j));}}}if (cnt == 0)   {puts ("0"); continue;}int tot = 1 << cnt;int ans = INF;for (int i=0; i<tot; ++i) {for (int k=0; k<cnt; ++k)   {for (int l=1; l<=4; ++l)    {bool ok = true;for (int j=0; j<cnt; ++j)   {if (i & (1 << j))   {if (j == k) {if (!light_special (V[j].x, V[j].y, l))    {ok = false; break;}}else    {if (!light_nomal (V[j].x, V[j].y))  {ok = false; break;}}}}if (!ok)    {for (int j=0; j<cnt; ++j)   {if (j == k) back_special (V[j].x, V[j].y, l);else    back_nomal (V[j].x, V[j].y);}continue;}bool flag = true;for (int j=0; j<cnt; ++j)   {int x = V[j].x, y = V[j].y;if (!vis[x][y]) {flag = false;   break;}}if (flag)   {ans = min (ans, __builtin_popcount (i));}for (int j=0; j<cnt; ++j)   {if (j == k) back_special (V[j].x, V[j].y, l);else    back_nomal (V[j].x, V[j].y);}}}}printf ("%d\n", ans == INF ? -1 : ans);}return 0;
}

  

转载于:https://www.cnblogs.com/Running-Time/p/4902677.html

http://www.lbrq.cn/news/2750419.html

相关文章:

  • 网站自建系统广东广州网点快速网站建设
  • 重庆綦江网站制作公司哪家专业大型网站制作
  • 网站批量发布互联网广告公司
  • 江阴做网站的公司搜索引擎收录提交入口
  • 陕西企业营销型网站广东网络seo推广公司
  • sem推广是什么意思呢常德seo招聘
  • 图片制作表情包的软件惠州百度seo在哪
  • 网站建设首选唯美谷在线识别图片来源
  • 完整网站开发视频鸡西seo顾问
  • 长沙网站建设长沙建设银行吉林网络推广公司
  • 网站权重怎么查询企业查询
  • 用织梦做的网站好不好谷歌优化技巧
  • 做家政有什么网站做推广好河南百度关键词优化排名软件
  • 国外的网站模板网站建设公司哪家好
  • 社交网站建设百度在线使用网页版
  • 家里的电脑怎样做网站赚钱新浪体育最新消息
  • 网站底部版权信息潍坊自动seo
  • 做日语问卷调查的网站新闻最新消息
  • 网站服务器是网站的空间吗日本比分算1:1
  • 网站黑链怎么做的上海最新新闻热点事件
  • 动漫设计难不难学优化软件seo排名
  • 建站seo赚钱百度网站推广
  • 114百事通做网站是不是诈骗2020年百度搜索排名
  • 哪家网站建设比较好南宁网站优化
  • 建筑网站建设方案百度应用商店官网
  • 网站建设7个基竞价排名什么意思
  • 电子商务运营网站品牌营销网站建设
  • 建设工程教育网怎么样重庆seo顾问服务
  • 下沙做网站软件清博大数据舆情监测平台
  • IC 网站建设宁波seo快速优化平台
  • 旋钮键盘项目---foc讲解(闭环位置控制)
  • Django前后端交互实现用户登录功能
  • 胶质母细胞瘤对化疗的敏感性由磷脂酰肌醇3-激酶β选择性调控
  • 电工的基础知识以及仪器的使用
  • 基于多分类的工业异常声检测及应用
  • 【Linux基础知识系列】第九十六篇 - 使用history命令管理命令历史