2014 网选 5024 Wang Xifeng's Little Plot

题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话,
那么必须是 90度,或者没有转弯!

思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 !
step[i][j][k] 表示的是(i,j)沿着k方向一直走到头或者转弯时的最长步数!
最后枚举每一个可走点转弯为90度的路径,找到最长的长度!
step[i][j][k1] + step[i][j][k2] 就是 (i, j)这个点 k1 和 k2方向构成90度!

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define  N  105
 6 using namespace std;
 7 
 8 int step[N][N][8];
 9 int dir[8][2] = { {0, 1}, {1, 0}, {-1, 0}, {0, -1}, {-1, -1}, {1, 1}, {-1, 1}, {1, -1} };
10 int index[8][2] = { {0, 1}, {1, 3}, {2, 3}, {0, 2}, {5, 6}, {5, 7}, {4, 7}, {4, 6}};//每一个节点所对应的转弯的枚举 
11 char mp[N][N], vis[N][N];
12 int n;
13 
14 bool judge(int x, int y){
15     if(x < 1 || y < 1 || x > n || y > n)
16         return false;
17     if( mp[x][y] == '#')  return false;
18     
19     return true;
20 }
21 
22 void dfs(int x, int y){
23     for(int i = 0; i < 8; ++i){
24         int xx = x + dir[i][1];
25         int yy = y + dir[i][0];
26         if(!judge(xx, yy))
27             step[x][y][i] = 1;
28         else{
29             if( !step[xx][yy][i] )//记忆话的赶脚 
30                 dfs(xx, yy);
31             step[x][y][i] = 1 + step[xx][yy][i];
32         }
33     }
34 }
35 
36 int main(){
37     while(scanf("%d", &n) && n){
38         memset(step, 0, sizeof(step));
39         memset(vis, 0, sizeof(vis));
40         for(int i = 1; i <= n; ++i)
41             scanf("%s", mp[i]+1);
42         
43         for(int i = 1; i <= n; ++i)
44             for(int j = 1; j <= n; ++j)
45                 if(mp[i][j] == '.')
46                            dfs(i, j);
47                        
48         int maxN = -1;                       
49         for(int i=1; i <= n; ++i)
50             for(int j = 1; j <= n; ++j){
51                 if(mp[i][j] == '.')
52                     for(int k = 0; k < 8; ++k)
53                         maxN = max(maxN, step[i][j][index[k][0]] + step[i][j][index[k][1]] );
54             } 
55         printf("%d\n", maxN - 1);//因为多加了一次拐点! 
56     } 
57     return 0;
58 } 
View Code

 

转载于:https://www.cnblogs.com/hujunzheng/p/3993741.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adobe InDesign各版本安装指南

下载链接 https://pan.baidu.com/s/11sTpMUbQEXhyjpkBlixcLg?pwd0531 #2024版 1.鼠标右击【Ai2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Ai2024(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Setup】选择【以…

怎样永久更改嵌入式linux系统ip,如何修改嵌入式系统IP

如何修改嵌入式系统IP(2012-06-05 01:36:56)标签&#xff1a;嵌入式如何杂谈如何修改嵌入式系统IP我的嵌入式设备的根文件系统是用busybox作的&#xff0c;现在我想在程序里面更改它的IP地址等网络信息&#xff0c;但是没有找到方法&#xff0c;希望有知道的给我帮助&#xff0…

codeforces MUH and Cube Walls

题意&#xff1a;给定两个序列a ,b, 如果在a中存在一段连续的序列使得 a[i]-b[0]k, a[i1]-b[1]k.... a[in-1]-b[n-1]k 就说b串在a串中出现过&#xff01;最后输出b串在a串中出现几次&#xff01; 思路&#xff1a; KMP变形&#xff01;如何转换成KMP求解呢&#xff1f; 举一个例…

java模仿qq好友面板的布局(BoxLayout问题)

..............JLabel ll new JLabel(dlg.getNameText() ":" dlg.getIPText(), ii[index], JLabel.LEFT);tmp new JPanel();//将标签添加到这个面板中tmp.setLayout(new FlowLayout(FlowLayout.CENTER));tmp.setBackground(new Color(255, 0, 255));/** BoxLayo…

codeforces C. Design Tutorial: Make It Nondeterministic

题意&#xff1a;每一个人 都有frist name 和 last name&#xff01; 从每一个人的名字中任意选择 first name 或者 last name 作为这个人的编号&#xff01;通过对编号的排序&#xff0c;得到每一个人 最终顺序&#xff01;比较中的序列能否得到给定输出的序列一致&#xff01…

codeforce A. Design Tutorial: Learn from Math

题意&#xff1a;将一个数拆成两个合数的和&#xff0c; 输出这两个数&#xff01;&#xff08;这道题做的真是TMD水啊&#xff09;开始的时候不知道composite numbers是啥意思&#xff0c;看了3遍才看懂.... 看懂之后又想用素数筛选法来做&#xff0c;后来决定单个判断一个数是…

codeforces B. Design Tutorial: Learn from Life

题意&#xff1a;有一个电梯&#xff0c;每一个人都想乘电梯到达自己想要到达的楼层&#xff01;从a层到b层的时间是|a-b|&#xff0c; 乘客上下电梯的时间忽略不计&#xff01;问最少需要多少的时间.... 这是一道神题啊&#xff0c;自己的思路不知不觉的就按照注解的思路走…

codeforces D. Design Tutorial: Inverse the Problem

题意&#xff1a;给定一个矩阵&#xff0c;表示每两个节点之间的权值距离&#xff0c;问是否可以对应生成一棵树&#xff0c; 使得这棵树中的任意两点之间的距离和矩阵中的对应两点的距离相等&#xff01; 思路&#xff1a;我们将给定的矩阵看成是一个图&#xff0c;a 到 b会有…

linux ssh 远程会话保存,远程SSH会话和流程在断开后运行的5种方法

SSH或安全Shell简单来说就是一个人可以远程访问其他用户的其他系统&#xff0c;但仅在命令行即非GUI模式的方法。 在更多的技术术语中&#xff0c;当我们ssh到其他用户在某些其他系统上并在该机器上运行命令时&#xff0c;它实际上创建一个伪终端并将其附加到登录用户的登录she…

java模拟一个简单的QQ

v 项目源码https://github.com/hjzgg/java_QQ v 标题效果package testFour;import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.I…

AC_Dream 1216 G - Beautiful People

题意&#xff1a;有n个人每人有一个力气值Si,美丽值Bi&#xff0c;满足Bi>Bj&&Si>Sj 或者 Bi<Bj&&Si<Sj 的人可以一起参见晚会&#xff0c;问最多有多少人可以一起参见晚会。思路&#xff1a; 我们根据S从小到大将所有人排序&#xff0c;然后看B最…

二级c语言程序设计bug,《C语言及程序设计》实践项目——发现Bug

返回&#xff1a;贺老师课程教学链接【项目1-sin泰勒展式中的错误】下面是sin函数的泰勒展式&#xff1a;(注&#xff1a;x取弧度值&#xff0c;而非角度值)编写了double mysin(double x)用于求sin值&#xff0c;却“死”在了123上。剧透一下&#xff0c;循环没有问题(当然问题…

AC_Dream 1224 Robbers(贪心)

题意&#xff1a;n个抢劫犯分别抢到的金钱是k1, k2, k3,...&#xff0c;一共得到的金钱是m&#xff0c; 但是在分钱的时候是按照x1/y, x2/y, x3/y,....的比例进行分配的&#xff01;这样的话 一些抢劫犯就会觉得不公平&#xff0c;不公平度为|xi/y - ki/m|(浮点运算)&#xff0…

codeforces B. Strongly Connected City(dfs水过)

题意&#xff1a;有横向和纵向的街道&#xff0c;每个街道只有一个方向&#xff0c;垂直的街道相交会产生一个节点&#xff0c;这样每个节点都有两个方向&#xff0c; 问是否每一个节点都可以由其他的节点到达.... 思路&#xff1a;规律没有想到&#xff0c;直接爆搜&#xff0…

Uvaoj 11248 Frequency Hopping(Dinic求最小割)

题意&#xff1a;1到n节点&#xff08;节点之间有一定的容量&#xff09;&#xff0c;需要流过C的流量&#xff0c;问是否可以&#xff1f;如果可以输出possible&#xff0c; 否则如果可以扩大任意一条边的容量 可以达到目的&#xff0c;那么输出possible option&#xff1a;接…

UVAoj 11324 - The Largest Clique(tarjan + dp)

题意&#xff1a;给定一个有向图&#xff0c;寻找一个点数最大集合&#xff0c;使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<>v 思路&#xff1a;首先将强连通分量通过tarjan算法求出来&#xff0c;然后进行缩点&#xff0c;也就是每一个缩点 所组成…

hdu 2014鞍山赛区 5073 Galaxy

题意&#xff1a;就是给你 n 个数&#xff0c;代表n个星球的位置&#xff0c;每一个星球的重量都为 1 &#xff01; 开始的时候每一个星球都绕着质心转动&#xff0c;那么质心的位置就是所有的星球的位置之和 / 星球的个数 现在让你移动 k 个星球到任意位置&#xff08;多个星球…

codeforces B. Friends and Presents(二分+容斥)

题意&#xff1a;从1....v这些数中找到c1个数不能被x整除&#xff0c;c2个数不能被y整除&#xff01; 并且这c1个数和这c2个数没有相同的&#xff01;给定c1, c2, x, y&#xff0c; 求最小的v的值&#xff01; 思路&#xff1a; 二分容斥&#xff0c;二分找到v的值&#xff0c;…

Android延伸布局到状态栏,Android 状态栏透明

前言&#xff1a;最近项目大量用到状态栏透明&#xff0c;网上也出现很多库可以直接拿来用&#xff0c;个人认为没有必要那么重引用到一个库(有木有同学和我有一样的想法)&#xff0c;所以研究了一番&#xff0c;在此做个记录加强记忆也便后期查阅&#xff0c;如果无意中有幸能…

华为HarmonyOS 鸿蒙,华为鸿蒙HarmonyOS2.0手机开发者Beta版正式发布

据悉&#xff0c;本次手机开发者Beta测试支持以下中国境内主制式手机及平板电脑。手机&#xff1a;全网通(5G双卡)P40 、 全网通版P40 Pro、Mate30、Mate30(5G) 、Mate30 Pro、Mate30 Pro(5G)&#xff0c;型号清单为ANA-AN00、ELS-AN00、TAS-AL00、TAS-AN00、LIO-AL00、LIO-AN0…