摘要: 满分做法: 几组样例充分说明,最优的子序列单调区间最多不超过两个。所以可以用树状数组维护三个值,一个是单增的最大值,一个是单减的最大值,一个是有拐点的最大值。最后离散化倒叙处理即可 阅读全文
posted @ 2019-10-23 19:57 lihan123 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 由题,树是不需要染色的,所以我们要让所有的连通块变成树。所有联通块的总点数 是 n,所以如果设联通块数为 C,则最后剩下的边个数就是 n − C,因此答案就是 m − n + C。 阅读全文
posted @ 2019-10-22 21:34 lihan123 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 在第一棵树中确定编号的dfs序,遍历第二棵树时,用树状数组维护在第一棵树相对位置,查询某点的贡献时,统计有多少比他高的就行了。注意要在子树后消除影响。 阅读全文
posted @ 2019-10-22 21:09 lihan123 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 手画样例,发现输出的都是以k为根的叶子节点。于是我们按照以下步骤去操作即可: 1.先按以k为根,进行dfs处理。 2.按照节点深度及编号对节点排序,深度越大排序越靠前,深度相同时,编号小的排在前面。 3.依次处理每个节点 ,每次向上蹦,如果碰到以走过的节点或根节点就停止,记录走过的步数。 阅读全文
posted @ 2019-10-21 21:56 lihan123 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 60分做法:直接暴力背包 满分做法: 按照K的因数进行背包即可 阅读全文
posted @ 2019-10-21 20:12 lihan123 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 对于一条链的情况,我们可以隔一个走一个,最后再走回来,如下: 那对于树来说,我们可以直接扩展:如 果当前节点深度是奇数,那么我们在 DFS 前输出这个点,否则在 DFS 完所有孩子之 后再输出这个点。自己手画一下,感觉很对!!! 阅读全文
posted @ 2019-10-21 17:28 lihan123 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 这个状态是我见到过最奇怪的,$f[i][j][l][r]$表示在区间$[i,j]$中取出一些数后,剩下的数值在$[l,r]$范围内的最小代价。因为$w[i] include include include include include include using namespace s 阅读全文
posted @ 2019-10-21 11:31 lihan123 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 有一个专门解决这类问题的算法叫:GarsiaWachs算法。 算法流程:1.从序列开头往后找第一个位置$i$满足$a[i]=a[i]+a[i+1]$,并把合并的值插入到$j$后面。 这样复杂度就降到了$n²$,用vector就可以达到$nlogn$了。(可以用平衡树优化,但我不会┭┮﹏┭ 阅读全文
posted @ 2019-10-21 11:13 lihan123 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 本题直接搜索即可,因为要记录最优值,直接spfa就好了。 阅读全文
posted @ 2019-10-20 20:01 lihan123 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 这个题好像没什么难度,就是需要耐心调解。 注意事项:1.在加值时, 11要+10,在减值时, 11要 10。 2.判断类型要从分值从大到小判,要先判特殊牌,再判有头牌。 3.在判断是否有头时,也要判断J,K,Q。 4.注意本题是四舍五入。 阅读全文
posted @ 2019-10-18 16:41 lihan123 阅读(124) 评论(0) 推荐(0) 编辑