03 2018 档案

摘要:Binary Tree Restoring 思路: 递归 比较a序列和b序列中表示同一个子树的一段区间,不断递归 代码: 阅读全文
posted @ 2018-03-13 17:14 Wisdom+.+ 阅读(180) 评论(0) 推荐(0)
摘要:Seven Segment Display 思路: 经典数位dp 代码: 阅读全文
posted @ 2018-03-11 13:52 Wisdom+.+ 阅读(211) 评论(0) 推荐(0)
摘要:813E - Army Creation 思路: 线段树+二分 先预处理每个点往后走k步的下标 线段树二叉树的每个节点用vector维护这些下标,给这些下标排个序 询问区间L,R,那么把下标小于等于R的位置都减掉,因为只要后面连续k个就够了 代码: 阅读全文
posted @ 2018-03-07 19:49 Wisdom+.+ 阅读(272) 评论(0) 推荐(0)
摘要:946D - Timetable 思路: 分组背包 每组物品最多选1个 v[i]表示对于这天来说减掉i节课后最多能减少多少小时的在校时间 代码: 阅读全文
posted @ 2018-03-07 16:15 Wisdom+.+ 阅读(416) 评论(0) 推荐(0)
摘要:817F - MEX Queries 思路: 离线+离散化+线段树 代码: 阅读全文
posted @ 2018-03-06 23:00 Wisdom+.+ 阅读(227) 评论(0) 推荐(0)
摘要:931F - Teodor is not a liar! 思路: 最长上升子序列 先差分数组染色 如果存在一个点,被所有区间包含,那么这张图一定是山峰状,如下图: 那么只要分别从前和从后找一个最长非严格上升子序列,然后从前往后更新就可以找出最大的山峰序列的长度,这个就是答案 代码: 阅读全文
posted @ 2018-03-06 16:40 Wisdom+.+ 阅读(634) 评论(0) 推荐(0)
摘要:932D - Tree 思路: 树上倍增 anc[i][u]:u的2^i祖先 mx[i][u]:u到它的2^i祖先之间的最大值,不包括u pre[i][u]:以u开始的递增序列的2^i祖先 sum[i][u]:以u开始递增序列从u到2^i祖先的和,不包括u 代码: 阅读全文
posted @ 2018-03-03 11:25 Wisdom+.+ 阅读(279) 评论(0) 推荐(0)
摘要:939E - Maximize! 思路: 贪心:最后的集合是最大值+前k小个 因为平均值时关于k的凹形函数,所以可以用三分求最小值 又因为后面的k肯定比前面的k大,所以又可以双指针 三分: 双指针: 阅读全文
posted @ 2018-03-02 20:13 Wisdom+.+ 阅读(220) 评论(0) 推荐(0)
摘要:940E - Cashback 思路: dp+rmq 可以证明最后划分的区间可以由长度为1和长度为c的区间组成的,这样就可以用O(n)的dp求了,区间最小值随便拿什么维护都可以 状态:dp[i]表示到i这个位置为止的最小划分和 初始状态:dp[0]=0 目标状态:dp[n] 状态转移:dp[i]=m 阅读全文
posted @ 2018-03-02 19:46 Wisdom+.+ 阅读(264) 评论(0) 推荐(0)
摘要:937D - Sleepy Game 思路: dfs。 vis[u][0]==1表示u这个点能从s点偶数路径到达 vis[u][1]==1表示u这个点能从s点奇数路径到达 这个样就能保证dfs时每个点最多被访问2次 那么如果存在一个点u,vis[u][1]==1且u的出度为0,那么就存在能Win的方 阅读全文
posted @ 2018-03-02 08:53 Wisdom+.+ 阅读(420) 评论(0) 推荐(0)