摘要: 纯搜索,,,模拟,,还不算太难,,就是细节略繁琐 首先因为题目要求保证字典序,所以显然把右边的块换到左边不如把左边的块换到右边优, 所以可以进行不小规模的剪枝,之后显然交换两块相同的色块没有意义,至此基本可以通过,在clear过程中最好对即将删除的色块打标记再统一删除,以避免出现意外情况,同时每次c 阅读全文
posted @ 2016-10-23 20:07 CtsNevermore 阅读(178) 评论(0) 推荐(1) 编辑
摘要: 基本上是裸的IDA*,细节有点难搞,需要耐心,,老久没一次A过题目了,, 也可以考虑使用bfs求解,但是状态较多无法有效判重,需要每次屏蔽掉两个数只处理一个数 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 //#d 阅读全文
posted @ 2016-10-23 20:01 CtsNevermore 阅读(159) 评论(0) 推荐(1) 编辑
摘要: 好端端的一道搜索题目,,,硬生生的被我弄成了乱搞题,,,枚举当前的maxd,深搜结果,然而想到的剪枝方法都没有太好的效果,,,最后用一个贪心乱搞弄出来了,,, 贪心:每次必用上一次做出来的数字与其他数字组合得到结果。 1 #include <cstdio> 2 #include <algorithm 阅读全文
posted @ 2016-10-23 19:59 CtsNevermore 阅读(152) 评论(0) 推荐(1) 编辑
摘要: 貌似某大犇说过 正难则反,,, 题目说要对这张图进行删边,然后判断联通块的个数,那么就可以先把所有边都删掉,之后从后往前加边,若加的边两端点不在同一个联通块中, 那么此时联通快个数少一,否则不变 1 #include <cstdio> 2 #include <cstring> 3 #include 阅读全文
posted @ 2016-10-23 19:58 CtsNevermore 阅读(247) 评论(0) 推荐(1) 编辑
摘要: 迭代加深搜索 IDA* 首先枚举当前选择的分数个数上限maxd,进行迭代加深 之后进行估价,假设当前分数之和为a,目标分数为b,当前考虑分数为1/c,那么如果1/c×(maxd - d)< a - b那么不可能得解,进行剪枝 1 #include <cstdio> 2 #include <cstri 阅读全文
posted @ 2016-10-23 19:57 CtsNevermore 阅读(198) 评论(0) 推荐(1) 编辑
摘要: 首先计算图的联通情况,如果图本身不联通一定不会出现生成树,输出"NO",之后清空,加白边,看最多能加多少条,清空,加黑边,看能加多少条,即可得白边的最大值与最小值,之后判断Fibonacci数是否在这两个之间,如果是输出yes,否则no。 然而,,然而,,我看的题解有问题!!!!!调了俩小时愣是没找 阅读全文
posted @ 2016-10-23 19:56 CtsNevermore 阅读(127) 评论(0) 推荐(1) 编辑
摘要: 首先将所有边按照修复时间进行排序,然后逐条边进行加入,当已联通时break并输出当前time值,否则输出-1 阅读全文
posted @ 2016-10-23 19:53 CtsNevermore 阅读(209) 评论(0) 推荐(1) 编辑
摘要: 有点有趣的并查集问题,类似于食物链而略简单 使用sum[i]表示以i为祖先的并查集的元素个数(不包含i), 以dis[i]表示i到其祖先的距离,每次getfather时根据x的直接父亲来更新x的dis值,每次修改操作时用sum[y]更新dis[x],用sum[x]更新sum[y],最后输出时直接利用 阅读全文
posted @ 2016-10-23 19:51 CtsNevermore 阅读(232) 评论(0) 推荐(1) 编辑