P1457 城堡 The Castle
轻度中毒
原题 :The Castle
以下为题解部分:明明辣么简单的一道题,硬是搞了1.5h,WTF?以下列出本题的一些要点。
- 搜索(DFS)嘛,染色嘛,统计大小嘛,很容易想,也很更易处理。
- 接下来就只需要枚举墙,得出最大值了。好像很简单的样子QAQ——but №!我™就是在这里折腾了一个小时(可能是我太菜了)。
- 蒟蒻统计的思路是:北墙(-1,0)与东墙(0,+1)分开枚举,得到各自的最优解,然后再比较这两个解,输出更好的那个(捂脸)。
详细见丑*代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> main() {} const int fx[]= {0,-1,0,1};//W,N,E,S const int fy[]= {-1,0,1,0}; int n,m,id[51][51],a[51][51],tot,room[50*50+1]; void clor(int x,int y,int c) { id[x][y]=c; room[c]++;//面积 for(int i=0,nx,ny; i<4; i++) if(!(a[x][y]&(1<<i))) {//美丽的二进制解析 nx=x+fx[i],ny=y+fy[i]; if(nx>0&&ny>0&&nx<=n&&ny<=m&&!id[nx][ny]) clor(nx,ny,c); } } int entry() { scanf("%d%d",&m,&n); for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) scanf("%d",&a[i][j]); } for(int i=1; i<=n; i++) {//染色 for(int j=1; j<=m; j++) if(!id[i][j]) clor(i,j,++tot); } int maxn=*std::max_element(room+1,room+tot+1); printf("%d\n""%d\n",tot,maxn); int ans1=maxn,ans2=maxn; int x1=n,y1=0,x2=n,y2=0; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { if((a[i][j]&2)&&id[i][j]!=id[i-1][j]&&ans1<=room[id[i][j]]+room[id[i-1][j]]) { if(ans1!=room[id[i][j]]+room[id[i-1][j]]) x1=i,y1=j; else if(j<y1) y1=j,x1=i;//West else if(j==y1 && i>x1) x1=i;//South ans1=room[id[i][j]]+room[id[i-1][j]]; }//北墙 if((a[i][j]&4)&&id[i][j]!=id[i][j+1]&&ans2<=room[id[i][j]]+room[id[i][j+1]]) { if(ans2!=room[id[i][j]]+room[id[i][j+1]]) x2=i,y2=j; else if(j<y2) y2=j,x2=i;//West else if(j==y2 && i>x2) x2=i;//South ans2=room[id[i][j]]+room[id[i][j+1]]; }//东墙 } if(ans1>ans2) printf("%d\n%d %d N\n",ans1,x1,y1); else if(ans1<ans2) printf("%d\n%d %d E\n",ans2,x2,y2);//maxmize result else if(y1<y2) printf("%d\n%d %d N\n",ans1,x1,y1); else if(y1>y2) printf("%d\n%d %d E\n",ans2,x2,y2);//west else if(x1>x2) printf("%d\n%d %d N\n",ans1,x1,y1); else if(x1<x2) printf("%d\n%d %d E\n",ans2,x2,y2);//south else printf("%d\n%d %d N\n",ans1,x1,y1); } int aptal=entry();
P1457 城堡 The Castle的更多相关文章
- 洛谷P1457 城堡 The Castle
P1457 城堡 The Castle 137通过 279提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 我们憨厚的USACO ...
- 洛谷 P1457 城堡 The Castle 解题报告
P1457 城堡 The Castle 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰" ...
- 洛谷 P1457 城堡 The Castle
P1457 城堡 The Castle 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张“幸运爱尔兰”(一种彩票).结果这 ...
- 洛谷—— P1457 城堡 The Castle
https://www.luogu.org/problem/show?pid=1457 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特 ...
- P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰"(一种彩票).结果这张彩票让他获得了这次 ...
- 题解 洛谷P1457 【城堡 The Castle】
这道题,看似很烦,无从下手,但其实只要用位运算和联通快就能水过了呀. 首先,输入:似乎大意是把一个数拆成二进数的相加,分别表示\((i,j)\)东南西北是否有墙.\(1\)表示西,\(2\)表示北,\ ...
- 题解 P1457 【城堡 The Castle】
来讨论区大摇大摆地逛了一圈后,我发现竟然大家的代码 都很长 然而代码真的要写那么长吗 首先,来分析问题,1,2,4,8,这些数显然是有特点的,也许你已经想到了没错,它们都是2的次方数. 1是2的0次方 ...
- [USACO Section 2.1]城堡 The Castle (搜索)
题目链接 Solution 比较恶心的搜索,思路很简单,直接广搜找联通块即可. 但是细节很多,要注意的地方很多.所以直接看代码吧... Code #include<bits/stdc++.h&g ...
- Luogu USACO Training 刷水记录
开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...
随机推荐
- 【原创】修复ios输入框获取焦点时不支持fixed的bug
前些日子,做了一个手机站的项目,有一个页面是这样的, 有一个固定(position:fixed)的头部和底部导航,中间是一些表单内容,没啥特别的.但是到了ios中,正常滚动页面没有问题,一旦触发了文本 ...
- python基础条件和循环
一.if语句 1.if后表达式返回值为true则执行其子代码块,然后此if 语句到此终结,否则进入下一分支判断,直到满足其中一个分支,执行后终结if 2.expression可以引入运算符:not,a ...
- 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介
原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...
- 【转】vim替换命令
vim替换命令 free:此文后面涉及了正则表达式,随便看了一下,觉得正则表达式有时间学一学对于在Linux下操作也是方便许多 替換(substitute) :[range]s/pattern/str ...
- 使用EF操作Mysql数据库中文变问号的解决方案
问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号.但是使用Mysql API却不会. 原因排查:首先想到的肯定是数据库编码问题,一次查询了表 ...
- 【ASP.NET MVC 学习笔记】- 19 REST和RESTful Web API
本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性 ...
- [ACdream]小晴天老师系列——竖式乘
题目链接:http://acdream.info/contest?cid=1269#problem-C Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学 ...
- springCloud四:熔断器ribbon--Hystrix
注:前文概念部分摘抄自博客园 纯洁的微笑 熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩 ...
- 跨站请求伪造(CSRF)-简述
跨站请求伪造(CSRF)-简述 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 ...
- github 项目绑定自己的域名
上周脑子发热申请了自己的一个域名.本想搞一个自己的网站,后来囊中羞涩,数据库,服务器..买不起了,只买个域名,发现啥也搞不成.后来突然想到了不行找个东西映射到这个域名上吧,就想到了github,之前也 ...