09 2020 档案

摘要:题目传送 核心问题:快速求出各个区间的不同数的个数,数的值域为:[1,1e6] (即可用O(n)数组存下)。 在线算法难以快速维护,尝试先对询问处理,采用离线算法。将询问按区间右端点r升序排列,当r确定时,一个数是否对这个询问做过贡献,只需看它在r左面的最右数是否在这个区间内,即用右端点左面的最右数 阅读全文
posted @ 2020-09-25 22:04 千叶繁华 阅读(118) 评论(0) 推荐(0) 编辑
摘要:P2824 [HEOI2016/TJOI2016]排序 在在线算法的角度思考,发现序列排序的复杂度如何也难以简化(否则想出来的简化办法就进教科书了),故尝试从离线算法的角度思考。 尝试思考二分。二分在大部分情况下都能将模型大程度简化(或说二分多提供了一个限制性条件,将各种奇怪的问题简化为判定性问题, 阅读全文
posted @ 2020-09-18 10:17 千叶繁华 阅读(230) 评论(0) 推荐(0) 编辑
摘要:P1966 火柴排队 题解: 将总距离表达式展开,尝试化简。发现平方的和是不变的,变的只有乘积,使Σaibi最大即可保证距离最小,自然想到最大的a让最大的b乘的贪心想法,即最终的顺序是a和b都从小到大(或从大到小)一一对应。尝试证明。 对于顺序的贪心证明,可从一步步调整入手。即假设存在ax>ay,b 阅读全文
posted @ 2020-09-06 11:37 千叶繁华 阅读(166) 评论(0) 推荐(0) 编辑
摘要:逆序对的定义: 简单来说,一个序列里,若一个数x和其后面一个数y组成逆序,则称有序数对(x,y)为一个逆序对。 所谓逆序,即不符合序列要求的顺序,比如一个应从小到大排列的数列中存在前面一个数大于后面某一个数,或一个应从大到小排列的数列中前面一个数小于后面某一个数 等情况。 计算方式: 1、朴素的n^ 阅读全文
posted @ 2020-09-06 11:34 千叶繁华 阅读(176) 评论(0) 推荐(0) 编辑
摘要:模型概述: 01分数规划,简单地说,有n个物品,第i个物品有xi的价值、yi的费用,你要选取一些物品,使得每费用所带来的价值最大,即∑xj / ∑yj最大(j为你选的物品编号)。 0/1分数规划 详解 01分数规划核心为:二分答案,判断根据为式子: 是否可行。而对于式子左边的这一堆东西,就用贪心DP 阅读全文
posted @ 2020-09-05 11:24 千叶繁华 阅读(151) 评论(0) 推荐(0) 编辑
摘要:题目传送 设计知识:0/1分数规划 详解 (借大佬的精炼语言:(a[ei]为边ei的权值;b[vi]为点vi的权值,这里为“个数”,故为1)) 二分+有向图判负环。 判负环复杂度略玄学,这里用dfs且最短路长度初始化为0 才不超时。 参考资料: 题解 P3199 【[HNOI2009]最小圈】 阅读全文
posted @ 2020-09-05 11:10 千叶繁华 阅读(141) 评论(0) 推荐(0) 编辑
摘要:初次接触请点击:一小时学会快速傅里叶变换(Fast Fourier Transform) 关键字:多项式系数表达法与点值表达法(有关插值可行性的证明),复数,单位根,n次单位向量,折半引理,消去引理, 蝴蝶操作(为减小常数、空间) 复数类型可以自己实现,也可以使用C++自带STL库中的complex 阅读全文
posted @ 2020-09-04 17:03 千叶繁华 阅读(412) 评论(0) 推荐(0) 编辑
摘要:说在前面: complex即为复数 使用c++自带的complex类型,首先要有<complex>头文件,还要使用std命名空间 声明方式: complex <T> a; 声明一个类型为T的复数a,T可为int,float,double,long double,甚至是string等各种类型。如果类型 阅读全文
posted @ 2020-09-04 10:36 千叶繁华 阅读(2911) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示