摘要: 树状数组优化暴力求逆序对 虽然说这个不难,但是为什么大佬们的博客都是一句话“用树状数组的性质”然后就是代码了qwq,小蒟蒻愣是呆了半小时才明白。 离散化 对于一个要求逆序对的数组,我们只关心数字间的大小关系,于是我们可以将数组中最小的数改成1,次小的改成2…… 法一: 结构体保存数组num 和它在原 阅读全文
posted @ 2021-08-19 21:00 T_X蒻 阅读(36) 评论(0) 推荐(0) 编辑
摘要: NOIP2018 T1 铺设道路 分析样例,贪心,每次填尽量长的一段,当这段中存在h[i]<h[i+1]的情况便会断成两段。 O(n) 找到每一个i(i为0~n的正整数)使得h[i]<h[i+1]这时ans+=h[i+1]-h[i] 注意h[0]=0 T2 货币系统 简单理解,只要是能被其他货币表示 阅读全文
posted @ 2021-08-18 10:58 T_X蒻 阅读(33) 评论(0) 推荐(0) 编辑
摘要: NOIP 2015 Day1 T1 P2615 [NOIP2015 提高组] 神奇的幻方 解题方法在题面里都告诉了,模拟就完事。 #include<iostream> using namespace std; const int mm=40; int m[mm][mm]; int i,j,n,k; 阅读全文
posted @ 2021-08-17 18:27 T_X蒻 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 线段树合并 用一个新的线段树(也可是原先中的一个)包含两个原线段树的信息便是线段树的合并。 由于基础的线段树son为i*2和i*2+1需4倍空间且下标无法改变的缺点,在需合并的情况下就要使用动态开点线段树。 动态开点线段树 多开一个数组son[N][2]记录每个点的儿子位置。(其实真的很简单:) v 阅读全文
posted @ 2021-08-16 23:00 T_X蒻 阅读(38) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2021-08-16 20:12 T_X蒻 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 背包 背包指一类在有限制的条件下选取一些物品使物品总价值最大的问题。 每个物品有其价值 v[i] 代价 w[i] ,可承受的最大代价为 W。 背包问题的解题方法大致就是考虑选与不选两种情况哪种最优。 01背包 01背包顾名思义就是每种物品自由选(1)不选(0)两种情况。 状态设置: f[i][j]表 阅读全文
posted @ 2021-08-16 15:26 T_X蒻 阅读(215) 评论(0) 推荐(0) 编辑