随笔分类 -  搜索

摘要:考虑按顺序暴搜子序列。如果序列中的数两两不同,显然每次给上一个找到的子序列添上后缀最小值,即为下一个要找的子序列。如果不能再加了就回溯继续考虑后缀次小、第三小……值,直到找到k个子序列。 有重复的数后,考虑后缀k小值只取第一次出现的位置,并在每找到一个子序列后就统计其出现次数。显然这样就能找到所有要 阅读全文
posted @ 2019-02-14 19:09 Gloid 阅读(289) 评论(1) 推荐(0)
摘要:线段树的任意一棵子树都相当于节点数与该子树相同的线段树。于是假装在树形dp即可,记忆化搜索实现,有效状态数是logn级别的。 阅读全文
posted @ 2018-12-08 21:17 Gloid 阅读(234) 评论(0) 推荐(0)
摘要:对反图跑最短路求出每个点到终点的最短路径,令其为估价函数大力A*,第k次到达某个点即是找到了到达该点的非严格第k短路,因为估价函数总是不大于实际值。bzoj可能需要手写堆。正解是可持久化可并堆,至今是第二次见到这个那当然是不学啦。 阅读全文
posted @ 2018-11-08 12:47 Gloid 阅读(200) 评论(0) 推荐(0)
摘要:线段树优化建图裸题。建两棵线段树,一棵表示入一棵表示出。对题中所给的边新建一个虚拟点,将两段区间拆成线段树上对应区间,出线段树中对应区间所表示的点向虚拟点连边权0的边,虚拟点向入线段树中对应区间所表示的点连边权1的边;线段树上的点之间连边权0的边(表示入的由父亲连向儿子,表示出的由儿子连向父亲),表 阅读全文
posted @ 2018-11-05 00:00 Gloid 阅读(182) 评论(0) 推荐(0)
摘要:dfs一遍给每个齿轮随便标个值看是否矛盾就行了。 阅读全文
posted @ 2018-11-03 14:07 Gloid 阅读(148) 评论(0) 推荐(0)
摘要:搜索好难啊。 1.对于每个分数集合记忆化。 2.某人得分超过总分,剪枝。 3.某人之后全赢也无法达到总分,剪枝。 4.每有一场比赛分出胜负总分会多三分,而平局则会多两分。某人的分出胜负场次或平局场次超过该限制,剪枝。 面向代码编程直到除了变量名几乎都一模一样还是T。最后发现记忆化判断某个状态是否已经 阅读全文
posted @ 2018-10-20 14:34 Gloid 阅读(179) 评论(0) 推荐(0)
摘要:暴力枚举每一位是否进位,然后就可以高斯消元解出方程了。然而复杂度是O(2nn3),相当不靠谱。 考虑优化。注意到某一位进位情况的变化只会影响到方程的常数项,于是可以在最开始做一次高斯消元算出每个未知数与每个常数项的关系。这样就变成了O(2nn2),虽然仍然不靠谱不过经常可以早早break,就能过了。 阅读全文
posted @ 2018-10-15 23:56 Gloid 阅读(234) 评论(0) 推荐(0)
摘要:非常经典的剪枝题然而一直没有写。感觉自己连普及组水平都没有了。 1.半径和高枚举范围满足加上后总体积不超过n且剩下每层还能放。 2.半径从大到小枚举,因为体积正比于半径平方而面积正比于半径,大的半径更有可能成为最优解。 3.剩下的最大体积+当前体积>=n。 4.剩下的最小面积+当前面积<ans。可以 阅读全文
posted @ 2018-10-14 20:34 Gloid 阅读(121) 评论(0) 推荐(0)
摘要:单纯的暴搜似乎还是很好写的,然而过不了。出完顺子之后答案是可以dp出来的,于是大力搜然后大力dp就好了。 dp时强行讨论完了几乎所有拆牌情况,理性愉悦一发。 阅读全文
posted @ 2018-10-14 16:03 Gloid 阅读(308) 评论(0) 推荐(0)
摘要:暴搜加个最优性剪枝即可。一直觉得正式比赛出这种不能一眼看出来暴搜就行了的搜索题的出题人都是毒瘤。 阅读全文
posted @ 2018-10-14 12:49 Gloid 阅读(126) 评论(0) 推荐(0)
摘要:注意到怼大佬的操作至多只能进行两次。我们逐步简化问题。 首先令f[i][j]表示第i天结束后自信值为j时至多有多少天可以进行非防御操作(即恢复自信值之外的操作)。这个dp非常显然。由于最终只需要保证存活,那么取f中的最大值即可(可以在第n天之前使大佬自信值为0而结束),之后就不用再管自己的自信值。复 阅读全文
posted @ 2018-08-04 20:53 Gloid 阅读(366) 评论(0) 推荐(0)