摘要: 题目传送门 这道题明显N数据范围非常小,但是M很大,所以用折半搜索实现搜索算法的指数级优化,将复杂度优化到O(M^(N/2))。 将搜出的两半结果用哈希的方式合并(乘法原理)。 Code: 阅读全文
posted @ 2018-06-11 18:15 Cptraser 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 过了好久,终于重新开始写博客了。。。 这是一道二进制trie树的模板题。 二进制trie树,理解一下就是一颗二叉树,左右儿子为0或1。 然后每插入一个数就进行一次Find操作。 Find:对于一个数x,我们在trie上总是走x在二进制下第i位的相反的那个节点。(当存在此节点时) Code 阅读全文
posted @ 2018-06-09 14:38 Cptraser 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 总题面传送门 这次考试只过了3题,前三题题目难度并不大,但是第三题的代码细节卡了我两个半小时(基本上整场考试),所以以后要合理把握时间,注意把握代码细节,并更加完善我的代码风格,使其更加简练。(赛外话)。 A:较简单的模拟题,但是注意对于刚开始的航班不需要S*2。 B:贪心题。显然我们一定会先将Si 阅读全文
posted @ 2018-04-30 00:17 Cptraser 阅读(173) 评论(0) 推荐(0) 编辑
摘要: Day0 一早起来6点左右,吃完早饭去班里拿了书包就来机房,说实话怕被打[手动滑稽]。 在车上大约经历了3个半小时的车程,终于到达了目的地:余姚。当然基本上大家的设备电量都不多了,除了某些上车睡觉的大佬。 在车上吃了好多东西,such as瓜子之类的东西当然没少吃。 下车时出现重大失误!身份证落在车 阅读全文
posted @ 2018-04-24 19:55 Cptraser 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题目大意大概就是给你一个混合图(既有有向边又有无向边),对于每条无向边,u-v,问删去u->v,或删去v->u那条可以使新图强连通。(保证数据有解)。 这道题前几个数据点送分。 枚举每一条边,先将它去掉,遍历图,如果可以达到所有点,即强连通。 比如去掉u->v,其实只要dfs(u),判断 阅读全文
posted @ 2018-04-15 18:35 Cptraser 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 例题传送门 好久没写博客了,写一发。 之前学的Manacher算法拿到模板题找到那最后一个点的错误了,TMD没开long long。 Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 O(n)的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在 阅读全文
posted @ 2018-04-14 19:07 Cptraser 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 观察数据a*2^b,转化成二进制后,后面跟了b位的0,可以转化为一个分层背包。 先预处理出每个物品是哪一层的,并放在同层内DP。 同层内直接背包,考虑层与层之间的DP。 第一维枚举层数,然后做类似于背包的DP,细节看code。 code: 阅读全文
posted @ 2018-04-14 15:48 Cptraser 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 看到M<=16经典状态压缩的数据范围,考虑题目。 一道类似于背包的题目。 设f[i][j]表示前i个商店,物品购买状态为j。 先将f[i][j]加上w[i](到i的路费),转移一次,在与同状态的前一商店取min就好了。 code: 阅读全文
posted @ 2018-04-04 10:19 Cptraser 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 裸的带修莫队。 在Sort时如果左右区间都在同一块中,就按询问的修改的先后Sort。 对于每次查询判断向前或向后修改。 当size为N*2/3时据说是最优。O(N^(3/5))。 code: 阅读全文
posted @ 2018-04-03 19:45 Cptraser 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 第一次接触CDQ分治,感谢YZ大佬的教导。 CDQ分治就是一种奇特的分治方法,它用左区间的区间信息来更新右区间。 设CDQ(L,R,l,r)表示递归到区间[L,R],区间的值为[l,r]。 mid=l+r/2。 将L~R区间按<=mid和>mid的两块重新分开。 继续递归区间分治。 CD 阅读全文
posted @ 2018-04-03 16:07 Cptraser 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 数位DP,其实只要求1~A-1和1~B就可以了。两数相减即为答案。 考虑怎们求1~A。 设f[i][j]表示到第i位,为j的windy数总数。 由前一位差值大于1的方程转移。 但是统计答案要分类讨论。 首先设所求数的位数为len。 1~len-1首先加入答案。 第len位的数-1也可以直 阅读全文
posted @ 2018-04-02 14:17 Cptraser 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 DP。 但要分类讨论,对于M=1和M=2的情况分别讨论。 1>M=1 设f[i][j]表示选了i个矩阵,到第j位。N^3转移。(前缀和) 2>M=2 设f[i][j][k]表示选了i个矩阵,第一列到i,第二列到j。 枚举i,j,k后枚举j1和k1表示选一行的情况。 如果j==k则可以从之 阅读全文
posted @ 2018-04-02 13:52 Cptraser 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 区间DP,设f[i][j][0/1]为i~j区间的压缩情况,1表示在插入了一个M。 code: 阅读全文
posted @ 2018-03-30 10:14 Cptraser 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 这道题可以用C++的random_shuffle屮过去。 random数列插入顺序,每次都插入数值和最小的那一组。 #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using names 阅读全文
posted @ 2018-03-29 15:57 Cptraser 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 LCA,对于每一个(x,y,z),两两求LCA得最优解或求出LCA不同于其他两组的那个为最优解。 code: 阅读全文
posted @ 2018-03-22 20:26 Cptraser 阅读(144) 评论(0) 推荐(0) 编辑