首页 > 其他分享 >AT_abc335_d [ABC335D] Loong and Takahashi 题解

AT_abc335_d [ABC335D] Loong and Takahashi 题解

时间:2024-06-13 14:32:18浏览次数:17  
标签:ABC335D int 题解 abc335 else ++ flag && 我们

题目传送门

题目大意:

高桥在一个地图的中心,有一条龙从地图的左上角开始,每次只能到达与他相邻的四个点,现给出地图的边长,请你给出一种方案,使得地图上的每个点除高桥所在的地方外,都被龙走过且不重复。

解题思路:

首先,我们拿到这个题目,想十秒,便会发现,我们按照螺旋矩阵的方式行走,一定是符合题意的,于是我们就开始模拟:

  1. 如果我们没有走到最后一列,则向右走一列,并跳过此次循环。
  2. 如果我们没有走到最后一行,则向下走一行,并跳过此次循环。
  3. 如果我们没有走到第一列,则向左走一列,并跳过此次循环。
  4. 如果我们没有走到第一行,则向上走一行。

然后,我们就会发现,我们会走到重复的点。

于是,我们看了看 n n n 的数据范围,很小,所以直接定义一个数组标记,在模拟时判断当前点是否走过,然后直接执行下一步即可。

AC CODE:

#include <bits/stdc++.h>
using namespace std;
int c[50][50];
int main() {
	ios::sync_with_stdio(false);
	ios_base::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int n;
	cin >> n;
	c[n / 2 + 1][n / 2 + 1] = 114514;
	int x = 1, y = 1;
	int ans = 1;
	int flag = 1;
	while (ans < n * n) {
		c[x][y] = ans++;
		if (flag == 1)
			y++, flag = (y < n && !c[x][y + 1] ? 1 : 2);
		else if (flag == 2)
			x++, flag = (x < n  && !c[x + 1][y] ? 2 : 3);
		else if (flag == 3)
			y--, flag = (y > 1  && !c[x][y - 1] ? 3 : 4);
		else
			x--, flag = (x > 1  && !c[x - 1][y] ? 4 : 1);
	}
	for (int i = 1; i <= n; i++, cout << endl)
		for (int j = 1; j <= n; j++)
		{
			if (c[i][j] == 114514)
				cout << "T ";
			else
				cout << c[i][j] << ' ';
		}
	return 0;
}

总结

只要做过螺旋矩阵的都很容易想到正解,这题主要还是考察我们运用知识的能力,所以大家一定要将知识都掌握牢,懂得变通,才能走得更远。

标签:ABC335D,int,题解,abc335,else,++,flag,&&,我们
From: https://blog.csdn.net/2301_76224755/article/details/139626157

相关文章

  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 团队派遣(100分) - 三语言AC题解(Py
    ......
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA与朋友们的石头剪刀布游戏(100分
    ......
  • CF244A的题解
    前言:这题很水,只能评红。代码也很短。之前分析的不是很好,现在改了,感谢大家指出错误。这题给出n×kn×kn×k......
  • 2024/6/12高一高考集训欢乐赛题解
    目录赛时榜T1.Efim与奇怪的成绩T2.美丽的IP地址赛时榜你说得对,但是安禄山进长安——\(\huge{唐完了}\)。T1.Efim与奇怪的成绩贪心题+小模拟。先说结论:从小数点往后找到第一个可以四舍五入的位置,然后开始四舍五入。证明:首先,小数位数靠后的如果四舍五入,收益肯定是没前面的......
  • 【问题解决】java.util.jar.JarException: file:bcprov-jdk18on-1.78.jar is not sign
    现象启动程序报错,同时在classpath下有多个bcprov-jdk开头的包Causedby:java.util.jar.JarException:file:/C:/Users/93986/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk18on/1.78/619aafb92dc0b4c6cc4cf86c487ca48ee2d67a8e/bcprov-jdk18on-1.78.jaris......
  • 掌握调试艺术:提升开发效率与问题解决的策略
    调试作为开发中不可或缺的一环,其重要性不言而喻。若尚未掌握此技能,不仅可能影响团队的整体进度,还会限制个人的开发效率。虽然在线资源提供了快速解决问题的途径,但过度依赖可能阻碍深入培养扎实的调试能力。认识到调试技能的重要性,意味着将有更多精力投入到其他富有创造性的工作......
  • python安装库失败问题解决
    相信很多小伙伴在安装python软件包时候会遇到各种各样的报错吧,为此针对这些问题我进行了汇总并解决。 此时,使用cmd,pipinstall--相应包名称  这里需要升级一下pip,python.exe-mpipinstall--upgradepip然后按照操作一步步就可以解决咯。 ......
  • atcoder 官方dp题单题解(持续更新)
    题单链接:https://atcoder.jp/contests/dp/tasks洛谷搜索:https://www.luogu.com.cn/problem/list?keyword=at_dp&type=AT|B|CF|P|SP|UVA&page=1A题目链接:https://atcoder.jp/contests/dp/tasks/dp_a简单线性dp.dp[i]表示在i这个位置的最小代价,转移的时候把两种选择都考虑......
  • 题解:P5786 [CQOI2008] 传感器网络
    题意从一个\(n\)个结点的有向无环图里选出\(n-1\)条边,构成一棵树,且除根节点以外的点的儿子个数的最大值最小。输出满足题意的节点的父亲,要求字典序最小。思路我们肯定要先把最小值求出来。很容易看出是拆点+二分答案求解,这里要注意的是拆完的两个点是不用连起来的,将......
  • 2024年新高考2卷精选试题解答
    **(2024年新高考2卷19题)**已知双曲线$C:x^2-y^2=m\(m>0)$,点$P_1(5,4)$在$C$上,$k$为常数,$0<k<1$.按照如下方式依次构造点$P_n\\left(n=2,3,\cdots\right)$:过$P_{n-1}$作斜率为$k$的直线与$C$的左支交于点$Q_{n-1}$,令$P_n$为$Q_{n-1}$关于$y$轴的对称点,记$P_{n}$的坐标......