摘要: 基本思想在于将一个数拆分成每一位的数字,将总问题转化为子问题。 例:求[a,b]中各个数字出现次数。 (luogu2602 数字计数) 1.发现在i位数中(不考虑前导零),每一个数字出现的次数都相同。f[i]=f[i-1]*10+10^(i-1); 2.在ABCD中,将其拆为:A000+B00+C0 阅读全文
posted @ 2018-05-13 11:53 *Miracle* 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 压位高精:即通过将原来数组中一个位置存一位数,改为一个位置存p位数(8-10)。本质上是一种利用进制转换思想的压缩方式。 压位高精VS普通高精优势: 1.节省空间。(10倍以上) 2.节省时间(循环次数少)(10倍) 3.在对于高精与低精(乘法不超int)运算时,可以利用进制较高的优势,达到简化代码 阅读全文
posted @ 2018-05-13 11:52 *Miracle* 阅读(672) 评论(0) 推荐(1) 编辑
摘要: Link Station 传送站 阅读全文
posted @ 2018-05-13 11:50 *Miracle* 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 方法一:scanf()读入char[] 使用方法: char str[1024]; scanf("%[^\n]",&str); getchar(); 方法二:getchar()读入char[] 使用方法: char str[1024]; int i=0; while((str[i]=getchar( 阅读全文
posted @ 2018-05-13 11:48 *Miracle* 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 1.floyd和dij(SPFA同理)算法的路径记录方法。 https://blog.csdn.net/silence401/article/details/62049708 2.背包中用到的vector直接复制。 https://blog.csdn.net/benTuTuT/article/det 阅读全文
posted @ 2018-05-13 11:47 *Miracle* 阅读(254) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/xiong452980729/article/details/51394036 阅读全文
posted @ 2018-05-13 11:46 *Miracle* 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第 i 条被插入的线段的标号为 i 2.给定一个数 k,询问与直线 x = k 相交的线段中,交点最靠上的线段的编号。 若有多条线段符合要求,输出编号最小的线段的编号 (省略输入以及在线操作的要求) 分析: 明显的线段树特 阅读全文
posted @ 2018-05-13 11:45 *Miracle* 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。 施工队的建造总共进行了M天。初始时,所有楼房都还没有开始建造 阅读全文
posted @ 2018-05-13 11:43 *Miracle* 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一个区间及其各个元素的初值,要求支持如下操作: 1.区间加 2.区间赋值 3.查询区间最大值 4.查询区间历史最大值 分析: 容易想到线段树,但是细思恶极(仔细想想恶心到了极点)的是,最后查询区间历史最大值的操作。 如果只记录区间历史最大值显然不能下放,如果单纯更新区间加,区间赋值最 阅读全文
posted @ 2018-05-13 11:42 *Miracle* 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有n个数,要将他们分成若干段,每一段的cost定义为: cost=r-l+ΣCk (k∈[r,l]) 该段的最终花费是:(cost-L)^2; 给出L,n,C(1~n),总共的最小花费。 分析: dp方程极容易想出来: f[i]=max(f[j]+(sum[i]-sum[j]+i-j-1 阅读全文
posted @ 2018-05-13 11:41 *Miracle* 阅读(251) 评论(0) 推荐(0) 编辑