摘要: 二维坐标下的运算 在二维图中,常常遇到一些需要大量坐标运算的题目,这时可以封装一个Point类,实现坐标高效运算。 // #define LOCAL #include<iostream> #include<queue> #include<map> using namespace std; #define _for(i 阅读全文
posted @ 2025-09-25 20:49 雾岛春颂 阅读(7) 评论(0) 推荐(0)
摘要: 编程技巧 #include<iostream> #include<vector> #include<set> #include<cstdint> using namespace std; // 封装泛型函数使用c++的IO流对集合进行输出 template<class T> ostream& operator 阅读全文
posted @ 2025-08-22 11:13 雾岛春颂 阅读(14) 评论(0) 推荐(0)
摘要: 八数码(bfs) 关于八数码问题的三种实现方式 #include<cstdio> #include<cstring> using namespace std; typedef int State[9]; const int maxstate = 1000000; State st[maxstate], goal; i 阅读全文
posted @ 2025-08-11 20:15 雾岛春颂 阅读(11) 评论(0) 推荐(0)
摘要: 常用输入输出小技巧 1: scanf(), sscanf(), fscanf() 三姐妹 这是c语言的"输入三姐妹",她们定义在<stdio.h>中,分别掌管从标准输入读,从字符串读,和从文件读的功能。具体点说,她们是从一个数据源,根据一个格式字符串,读取数据并存入指定的变量中,返回类型是读入的变量的数量。 #incl 阅读全文
posted @ 2025-08-07 23:06 雾岛春颂 阅读(17) 评论(0) 推荐(0)
摘要: UVa11212(IDA*) UVa11212 解题思路: 本题n的规模最多为9,即答案最多为9,因此可以考虑迭代加深搜索,让深度d不断增大寻找答案。同时,观察发现,将任何一段连续序列拼接到另外某处,整个序列中最多只有3个元素的后继元素会发生改变,因此可以设计h()函数,求序列中的不符合目标答案顺序的个数,倘若3d+h() > 阅读全文
posted @ 2025-08-07 21:49 雾岛春颂 阅读(8) 评论(0) 推荐(0)
摘要: UVa1374(IDDFS算法) UVa1374 解题思路: 本题跟"埃及分数"有点相似,可以考虑迭代加深搜索,所谓迭代加深搜索,就是在寻常dfs上从小到大限制它的搜索深度,这个"深度",就是我们要找的答案。对于本题,每一步的操作就是让任意两个指数相加或者相减,且不重复。我们可以设d为当前深度并从0开始,maxd作为每一次搜索的深度 阅读全文
posted @ 2025-08-05 22:35 雾岛春颂 阅读(29) 评论(0) 推荐(0)