摘要: 这次的ABC三道题非常水,但是我就卡在这个D题上了QAQ 当时大概猜到了贪心,但是没有思路,后来看了一些题解才明白到底是什么意思 首先,假设我们已经处理好了前面的monsters,对于第i个monster,肯定要选择一个能力大于它能力的勇者。那么该怎么选呢,显然(用贪心的思想分析,就是勇者如果能打到 阅读全文
posted @ 2019-11-17 19:24 cminus 阅读(145) 评论(0) 推荐(0)
摘要: 1.声明和定义 声明将一个名称引入程序,不分配任何内存,定义提供一个实体的唯一描述,会分配内存。 (1)对于变量来说,定义就是声明. 例如: int a; 我们可是说它是定义也可以说它是声明。 (2) 对函数而言 void sum(int a,int b);这是函数的声明(仅仅提供函数原型) voi 阅读全文
posted @ 2019-10-26 18:33 cminus 阅读(135) 评论(0) 推荐(0)
摘要: 感觉动态开点线段树空间复杂度好优秀呀 树剖裸题 把每个宗教都开一颗线段树就可以了 但是我一直TLE 然后调了一个小时 为什么呢 因为我 #define max(x, y) (x > y ? x : y) 看起来好像可以减少常数的样子 我也是这么想的(作死 事实上 ans = max(ans, que 阅读全文
posted @ 2018-03-19 02:29 cminus 阅读(147) 评论(0) 推荐(0)
摘要: 很神奇的方法 感觉是有生之年都想不到正解的这种 考虑对i 到根的节点权值 + 1,则从根到z的路径和就是lca(i,z)的深度 所以依次把0 ~ n - 1的点权值 + 1 对于询问[l, r] 这个区间关于z 的深度和,就用(1, r) - (1, l - 1)的值表示 详见黄学长的博客啦 htt 阅读全文
posted @ 2018-03-18 23:10 cminus 阅读(169) 评论(0) 推荐(0)
摘要: 强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BIT用来处理需要暴力的地方即可 下面是代码 阅读全文
posted @ 2018-03-15 01:05 cminus 阅读(162) 评论(0) 推荐(0)
摘要: 最近一直在刷分块啊 似乎感觉分块和BIT是超级棒的搭档啊 这道题首先用dfs预处理一下 得到每一个sum值 此时查询是O(1)的 (前缀和乱搞什么的 但是修改需要O(n) (需要修改该节点所有祖先的sum 复杂度就爆了呀 此时考虑分块优化 似乎弹飞绵羊也是这样思考得出分块做法的 首先分成 √n 块 阅读全文
posted @ 2018-03-15 00:57 cminus 阅读(174) 评论(0) 推荐(0)
摘要: 据说用后缀自动机 + dp也能做 然而并不会 后缀数组的做法呢 就是先建个后缀数组,求出height值,此时如果直接找,复杂度是n ^ 2的,肯定会超时。 但是height大的值是不会对小的产生影响的,所以可以按height大小,从大到小合并两个区间,用并查集维护就可以了 代码如下 阅读全文
posted @ 2018-02-22 10:30 cminus 阅读(209) 评论(0) 推荐(0)
摘要: 说起来学了很久的后缀数组了 思想还是很容易明白的 最大的问题就是 代码看不懂 然后在不断模拟研究的过程中 终于弄清楚了一点 就决定写下来了 不然又会忘的QAQ 以下是代码 ps:首先要弄懂基数排序 定义:c[ ]数组 : 基数排序的桶 x[ ]数组:类似于rank数组,保存当前排序到的以每个位置开始 阅读全文
posted @ 2018-02-12 18:28 cminus 阅读(304) 评论(0) 推荐(0)
摘要: 最优答案一定是一颗树 那么二分比值,不断kruskal找到最大可以满足的解就可以了 代码如下 阅读全文
posted @ 2017-09-02 19:27 cminus 阅读(116) 评论(0) 推荐(0)
摘要: 用dfs优化的spfa判环很快啦 分数规划的题目啦 二分寻找最优值,用spfa判断能不能使 Σ(mid * t - p) > 0 最优的情况只能有一个环 因为如果有两个环,两个环都可以作为奶牛的行程,如果两个环单独计算的结果不一样,那么两个环中比值更大的才是最优解,如果结果一样,多算一个环就没有意义 阅读全文
posted @ 2017-09-02 19:23 cminus 阅读(151) 评论(0) 推荐(0)