NBUT 1624 死胡同(可以用搜索,也可以不用)
来源:互联网 发布:高丝 艾文莉 知乎 编辑:程序博客网 时间:2024/06/10 06:36
题目链接:https://ac.2333.moe/Problem/view.xhtml?id=1624
[1624] 死胡同
时间限制: 1000 ms 内存限制: 65535 K
问题描述
一个死胡同由排成一列的 n 个格子组成,编号从 1 到 n 。
实验室的“猪猪”一开始在1号格子,开始向前走,每步一格,并且每走 k 步会在当前的格子上打上记号(开始时,1号格子也有记号)。由于这是死胡同,每当“猪猪”走到最左或者最右的格子时,它会改变方向。好奇的“猪猪”在想: 如果我一直走,能否把所有格子都打上记号呢?
聪明的你一定知道答案!Hint1:如果 n=6,k=2,位置变化为:1 -> 3 -> 5 -> 5 -> 3 -> 1 -> 3 -> 5 .... 显然,此时不能将所有格子打上标记。(如下图)输入多组输入数据(组数<=100)每组数据一行,包含两个正整数 n 和 k。(1 <= n <= 100000 , 1 <= k <= 100000)输出对于每组数据输出一行 YES 或者 NO 代表能否给所有格子打上标记。样例输入6 26 3样例输出NOYES提示无来源2015苏州大学ACM-ICPC集训队选拔赛(1)
题目大意: 题目讲的很清楚,不过要注意 k 是可以大于n 的 因为这个 我RE了几发。这个 有人用了搜索写出来的,,我不是用搜索,所以我这里的代码跟搜索没多大关系。
我的思路就是 设置一个数组,比如是记录朝右行走过的点,那么如果你下次还是朝右走,而且这个点已经走过了,那说明已经进入死循环 可以退出了,这样可以减少很多的时间。
上代码:
#include <stdio.h>#include <string.h>#include <math.h>int vis[100010],star[100010]; //定义一个访问过的数组,还有一个就是 朝右走的访问标记int main(){ int n,m; //点的个数,还有一次走几格 while(~scanf("%d%d",&n,&m)) { if ( n == 1 ) //如果n == 1 那么肯定可以全部访问 { printf("YES\n"); continue; } memset(vis,0,sizeof(vis)); //初始化 memset(star,0,sizeof(star)); int res = 1; int l = 1; vis[1] = 1; //起始点在1,所以直接访问过, int flag = 1; while (1) { if (l < 1) { flag = 1; l = 2 - l ; } if (l > n ) { flag = -1; l = 2 * n - l; //这个可以自己计算,为何这样,,这边减了之后,依旧可能比1小的,所以下面有一个判断。 } if (l < 1) { flag = 1; l = 2 - l ; } if (vis[l] != 1 ) //没访问过 { vis[l] = 1; res ++; } if ( (star[l] == 1 && flag == 1) || (flag == -1 && l == 1) ) //如果一个方向上的点,走了第二次 说明进入死循环 可以退出 { break; } if ( flag == 1) //记录朝右走过的点 { star[l] = 1; } if ( res == n ) { break; } if (flag == 1 ) { l += m % (2 * n - 2); // 2*n - 2 这个规律不难发现,我是画一下图,就知道了 就是一个循环,就是下次走到这个点,并且走的方向是相同的 continue; } else if (flag == -1) { l -= m % (2 * n - 2); continue; } //printf("%d\n",l); } if (res == n ) { printf("YES\n"); } else if(res != n) { printf("NO\n"); } } return 0;}
0 0
- NBUT 1624 死胡同(可以用搜索,也可以不用)
- 不用扫描仪也可以“扫描”
- oracle不用安装客户端也可以用plsql远程连接
- oracle不用安装客户端也可以用 plsql远程连接
- oracle不用安装客户端也可以用plsql远程连接
- 不用MFC也可以查内存泄露,简单好用。
- oracle不用安装客户端也可以用plsql远程连接(转)
- 不用重新安装PowerBuilder8.0也可以使用
- WinXP不用Nero也可以刻录ISO
- 不用js也可以控制禁止右键!
- hdu1045 暴力搜索,用二分图也可以做
- 继谷歌之后,百度也可以用https加密方式搜索
- fzu 2092 收集水晶(记忆化搜索(dp),dfs)(也可以用bfs)
- Is It A Tree?------HDOJ杭电1325(两种方法,可以用也可以不用并查集!!!!!!详解)
- oracle不用安装客户端也可以用plsql远程连接 pl sql远程连接
- 不用安装oracle客户端也可以用plsql连接远程oracle
- 不用安装oracle客户端也可以用plsql连接远程oracle
- 不用安装oracle客户端也可以用plsql连接远程oracle
- 1007-Hive性能调优
- 利用ssh传输文件
- android studio总结
- svn 中如何checkout出单个文件
- LeetCode---ZigZag Conversion
- NBUT 1624 死胡同(可以用搜索,也可以不用)
- 一次内存泄漏问题的发现与解决过程
- dubbo extension扩展点 源代码
- ECharts 实时折线
- ab测试
- IOS 关于Text Field设置键盘
- Zookeeper的事件驱动和订阅模式
- Android中常见的热门标签的流式布局的实现
- 从哪里找寻安全感?