上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 86 下一页
摘要: 分析:高级数据结构学傻了.....一眼看上去觉得是莫队,发现带修改,于是分块,由于写的常数很大,只有70分. 正解很简单,记录下颜色为c的每只兔子的位置,每次二分找这个区间有多少只这种颜色的兔子就可以了,交换操作就交换位置,颜色.可能会存不下,所以用vector. 70分分块: 正解: 阅读全文
posted @ 2017-11-05 23:35 zbtrs 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 分析:暴力分有90,真良心啊. a,b这么大,连图都建不出来,肯定是有一个规律.把每个点的父节点写出来:0 1 1 12 123 12345 12345678,可以发现每一个循环的长度刚好是斐波那契数列中的第i项,那么求个前缀和,二分求一下LCA就可以了. 阅读全文
posted @ 2017-11-05 23:31 zbtrs 阅读(252) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-11-04 22:01 zbtrs 阅读(2) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-11-04 17:05 zbtrs 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 分析:这其实就是括号匹配题,一眼贪心题,不过一开始贪错了,以为([)]是合法的......其实括号之间不能嵌套. 一开始的想法是尽量往左边填左括号,因为每种括号的数量都确定了,那么左括号和右括号的数量也就确定了,但是这样会有一个问题:1 1 1 2 3 1 1 3 2 1,最后两个1被指定为右括号, 阅读全文
posted @ 2017-11-03 21:07 zbtrs 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 分析:模拟题,只是有几个地方需要注意一下:第一个人必须支付5元,找零15元可以找一张10元一张5元,也可以找3张5元. 阅读全文
posted @ 2017-11-03 20:56 zbtrs 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 分析:显然的,树形dp,状态也很好想到:f[i][j]表示以i为根的子树收集到j个果子的方案数.转移的话就相当于是背包问题,每个子节点可以选或不选.如果不选子节点k的话,那么以k为根的子树的边无论断不断都没关系,贡献就是f[i][j] * 2^(size[k]).如果选的话,枚举一下收集到多少个果子 阅读全文
posted @ 2017-11-03 18:03 zbtrs 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 分析:这道题真心难想.最主要的是怎么样不重复. 为了不重复统计,把所有符合条件的单词分成两类,一类是某些单词的前缀,一类是 不是任何单词的前缀.涉及到前缀后缀,维护两个trie树,处理3个数组a,b,c. a[i][j]表示长度为i-1的前缀,第i位接字母j是不是任何单词的前缀的个数. b[i][j 阅读全文
posted @ 2017-11-03 16:25 zbtrs 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 分析:非常像货车运输那道题.先求一下最大生成树.求完之后会发现并不好处理.通常这类求生成树的题目不会就分析kruscal算法的性质.每往最大生成树中加一条边,如果配重大于这条边权,那么这条边所连的两个集合就都要建一个仓库.也可以这么想:本来在所有点都建仓库,如果配重小于这条边的边权,那么少建一个仓库 阅读全文
posted @ 2017-11-03 10:06 zbtrs 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 分析:要遍历所有的区间,肯定是枚举左端点,然后再枚举右端点.关键是怎么高效地求区间&,|,一般而言是用前缀和的,但是&,|不满足区间可减性,所以可以考虑线段树?这道题不带修改操作,用线段树太浪费了,那么可以用ST表来维护. 查询做到O(1)了,但是怎么快速枚举区间呢?枚举左端点和右端点肯定只能选择一 阅读全文
posted @ 2017-11-02 21:57 zbtrs 阅读(249) 评论(0) 推荐(0) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 86 下一页