摘要:
莫队算法是离线处理一类区间不修改查询类问题的算法。 如果你在知道了[L,R]的答案时,可以在O(1)的时间下得到[L,R-1]和[L,R+1]和[L-1,R]和[L+1,R]的答案的话,就可以使用莫队算法。时间复杂度大概是O(n^1.5)。 莫队算法就是在知道一个区间的ans时,暴力的转移到所有的相 阅读全文
摘要:
题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有出现偶数次的数异或的值。 思路:容易想到,把区间内的所有的数都异或得到的是出现奇数次的数的值,然后再 阅读全文
摘要:
归并排序完全遵循分治模式,直观上操作可分为: 分解:分解待排序的n个元素的序列各具有n/2个元素的两个子序列。 解决:使用归并排序递归的排序两个子序列。 合并:合并两个已排好序的子序列以产生已排序的答案。 当递归到序列长度为1时,递归回升,此时不需要做任何操作,因为长度为1的每个序列都已排好序。 归 阅读全文
摘要:
一、文件输入输出 C/C++ 输入: freopen("in.cpp", "r", stdin); fclose(stdin); 输出: freopen("in.cpp", "r", stdout); fclose(stdout); C++ 输入: ifstream cin("in.cpp"); c 阅读全文
摘要:
题意:conversion的定义是下一句提到上一句的人的名字。请你输出最长的对话的长度,及组成对话的序列号。 思路:动态规划的思想很容易想到,当前句子,根据所有提到的人的名字为结尾组成的对话长度来判断当前name的最长对话长度。每个名字需要记录它形成最长对话的长度及此时出现的行数。 想说的是,C++ 阅读全文
摘要:
题目链接:UVALive 6948 Jokewithpermutation 题意:给一串数字序列,没有空格,拆成从1到N的连续数列。 dfs. 可以计算出N的值,也可以直接检验当前数组是否合法。 dfs要优雅... 阅读全文
摘要:
题目链接:Lucky7 题意:求在l和r范围内,满足能被7整除,而且不满足任意一组,x mod p[i] = a[i]的数的个数。 思路:容斥定理+中国剩余定理+快速乘法。 (奇+ 偶-) 阅读全文
摘要:
求最长上升子序列长度: 单纯的dp时间复杂度是O(n*n)的 dp[i] = max(dp[j]+1); (0=<j<=i-1 && a[i]>a[j]) 用二分可以减少查找的时间:时间复杂度:O(n*log(n)) 模板: Eg:题目链接:The All-purpose Zero 题意:给一个序列 阅读全文