mltang

博客园 首页 新随笔 联系 订阅 管理

2018年4月25日 #

摘要: 这道题主要就是问你,长度为n的序列,有多少种上升的子序列 当前点的情况种数等于前面所有小于它的点的种数相加 + 1 1就是只有这一个点的时候的序列 那就是要多次查询前面比它小的点的种数的和 那么就是区间求和 用到树状数组就过了 一开始我用的a[k]表示这个点的值等于k时有多少种情况,但是后来考虑到对 阅读全文
posted @ 2018-04-25 23:55 mltang 阅读(119) 评论(0) 推荐(0) 编辑

摘要: 这个题给你一堆树,每棵树的位置x和高度h都给你 f[i]代表这棵树的位置排名,s[i]代表这棵树的高度排名 问你任意两棵树的(f[i] - f[j])*min(s[i],s[j])和 (f[i]-f[i-1])*min(s[i],s[i-1]) + (f[i]-f[i-2])*min(s[i],s[ 阅读全文
posted @ 2018-04-25 17:59 mltang 阅读(113) 评论(0) 推荐(0) 编辑

2018年4月23日 #

摘要: 主要就是每个位置x管理 x-lowbit(x)的长度 只要理解这句话就行了 树状数组主要用于区间查询和单点修改 所以用来求a[n]的数组中的k这个点,有多少个点比k这个点小 阅读全文
posted @ 2018-04-23 12:38 mltang 阅读(77) 评论(0) 推荐(0) 编辑

摘要: 这题,因为要统计之前有多少个数比当前的数小,所以我用的树状数组 基本代码就是这样,还是比较好想的,只不过我没想出来罢了 阅读全文
posted @ 2018-04-23 01:12 mltang 阅读(101) 评论(0) 推荐(0) 编辑

2018年4月20日 #

摘要: 这题主要是树形dp 思路就是01背包,小细节都写在代码里了 阅读全文
posted @ 2018-04-20 13:06 mltang 阅读(98) 评论(0) 推荐(0) 编辑

2018年4月18日 #

摘要: 输入n,m,l,s 差n的经验,m的忍耐度,l种怪兽,最多杀s只 输入a[i] b[i] 没杀一只i怪兽增加a[i]的经验,减少b[i]的忍耐度,每种怪兽有无限种 还差n的经验就能升级 问你升级时,最多还能剩多少的忍耐度 其实就是背包问题多加一个维度,还是很好想思路的 阅读全文
posted @ 2018-04-18 22:32 mltang 阅读(67) 评论(0) 推荐(0) 编辑

摘要: 当前所在位的最长上升子序列只和前面一个字符有关 } 阅读全文
posted @ 2018-04-18 15:27 mltang 阅读(133) 评论(0) 推荐(0) 编辑

2018年4月15日 #

摘要: #include using namespace std; int nextr[100]; int main() { char str[100]; char ptr[100]; } void kmp(char *str,int n) { nextr[0]=-1; int k; k=0; for(int i=1;i-1 && str[k+1] !=... 阅读全文
posted @ 2018-04-15 11:37 mltang 阅读(134) 评论(0) 推荐(0) 编辑

2018年4月13日 #

摘要: 题目就是给你 n,m a1,a2......an c1,c2.......cn n种物品,第一种物品价值a1有c1个 问你能组合出多少种不超过m的价格 多重背包+二进制优化(脑补一下其实优化了好多时间啊) 其实不用分成完全背包和多重背包两部分也能过,我这个也是学别人的,之后试了一下不分开写的,也过了 阅读全文
posted @ 2018-04-13 00:12 mltang 阅读(86) 评论(0) 推荐(0) 编辑

摘要: 其实就是把一堆物品分块 分成1,2,4,8.。。。。。。 这样就可以组合成任意一个数 阅读全文
posted @ 2018-04-13 00:02 mltang 阅读(176) 评论(0) 推荐(0) 编辑