![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法小讲堂
文章平均质量分 81
SSimpLe_Y
人一我百,人十我万,然而我做不到。
展开
-
lightoj 1146 - Closest Distance(三分)
Two men are moving concurrently, one man is moving from A to B and other man is moving from C to D. Initially the first man is at A, and the second man is at C. They maintain constant velocities suc原创 2017-01-29 16:11:58 · 982 阅读 · 0 评论 -
线性基(处理集合异或的强力工具)
看了好多篇关于线性基的博客,只是说明了怎么求线性基,但是大都没有说明为什么这样求线性基。定义:有一个集合 S = {a1,a2...,an},T的满足下面条件的一个最小子集A = {a1,a2,....,ak}A的所有子集的异或和的值域与T的所有子集的异或和的值域相同,那么A就是T的线性基。预备知识:1、张成:S的所有子集,其异或和的所有可能的结果组成的集合,为S的张成,记作span(S)。2、...原创 2018-04-10 20:37:59 · 1784 阅读 · 0 评论 -
查询区间内等于x的数的个数(分块)
问题:有一个有n个数的数组,q次查询,每次查询l, r ,x,查询区间[l,r]内等于x的数的个数思路:分块。就把这题当成是分块的入门题来讲解一下分块。分块其实就是一种比较优美的暴力(我觉得),一般的分块都是把长度为n的数组分成每一块为sqrt(n)个数的多个块。然后对于区间的操作就可以不再是一个一个数进行处理,而是可以一个块一个块的处理,每次查询最多会涉及到sqrt(n)个块,这样复杂度就降了下...原创 2018-03-24 17:02:22 · 3204 阅读 · 1 评论 -
树状数组求逆序对
很久以前就学了树状数组,也知道可以用来求逆序对,然而一直没弄明白他是怎么实现的(可能当时没搞清楚逆序对是什么吧。。。)。逆序对就是如果i > j && a[i] < a[j],这两个就算一对逆序对,简单来说,所有逆序对的个数和就是找每一个数的前面有几个比他的大的数,他们加起来的和就是逆序对的总数。知道什么是逆序对后就好办了,树状数组的功能就是可以单点更新,区间查询,这样...原创 2016-12-19 17:27:38 · 33534 阅读 · 17 评论 -
HDU 2089 不要62 (数位DP)
中文题,题意没什么好说的,就是给你一个区间,问你这个区间里不含62连号的数字有多少个。数位DP的模板题。数位DP一般有两种套路,一种是写出状态转移方程,预处理出来dp数组;另一种套路是写成dfs形势的记忆化搜索,其实DP就是记忆化搜索,只不过把搜索写成了for循环的形势,但是有的时候数位DP写不出状态转移方程,所以还是写成dfs的形势比较靠谱。解释一下程序里一些变量的含义,df原创 2016-08-15 22:05:41 · 895 阅读 · 1 评论 -
长度不超过m的最大连续子序列(dp + 单调队列)
给你n个数,然后让你求最大连续子序列的和,限制条件是连续子序列的长度不超过m。n,m 就是让你找到一个长度不超过m的区间,区间和最大。普通的dp转移方程就是 dp[i] = sum[i] - min(sum[j] | i- m 但是这样的复杂度最坏会达到n^2,所以得优化,就用到了单调队列。针对这题来说一下什么是单调队列,这题我们需要存下距离不超过m,且最小的前缀和的下标。原创 2017-05-13 12:11:51 · 7290 阅读 · 0 评论 -
lightoj 1424 - New Land(单调栈)
Once upon a time there lived an old wise king. He had only one son. The prince had the idea that he (the prince) was about to be the future king; that's why he became too lazy day by day. This made th原创 2017-04-07 17:06:57 · 1183 阅读 · 0 评论 -
背包三讲
V表示背包容量,v[i]表示物品价值,w[i]表示物品重量,c[i]表示某种物品的个数1、01背包for(i=0;i<n;i++)//表示物品总个数 for(j=V;j>=w[i];j--) dp[j] = max(dp[j],dp[j-v[i]] + w[i]);2、完全背包for(i=0;i<n;i++)//表示物品总个数 f原创 2016-07-02 16:28:21 · 1376 阅读 · 0 评论 -
lightoj 1101 - A Secret Mission(MST上的树链剖分)
All of you have heard about Evil Jack Diablo, the one who had stolen the whole problem set from the Good Judges last time. Once again he is making evil plans, but he does not know that Alice is on a s原创 2017-01-15 23:06:50 · 996 阅读 · 0 评论 -
SPOJ DQUERY - D-query (莫队算法)
Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to return the number of distinct elements in the ...原创 2018-04-11 22:07:00 · 676 阅读 · 0 评论