摘要: 非常简单的实现没有什么好讲的,主要是链表的插入具有易实现的特点,才弄出的这玩意儿,效率一般... 本来估摸复杂度为O(nlogn),但似乎用stl后更高? 代码: 阅读全文
posted @ 2018-12-19 22:00 ThinkofBlank 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 特点:速度增涨缓慢(前期较慢),耗空间较大,自成素数表 优化 1.无限手动优化 即一开始往链表中加数时不要加完,可以只加奇数(注意2),这样可以少一半的空间时间,依次类推,可以消3,5......只是越往后越麻烦罢了。。。 2.富集优化 空间容易爆?没关系,我们可以至少少接近一半的空间!首先,先用1 阅读全文
posted @ 2018-12-19 21:54 ThinkofBlank 阅读(169) 评论(0) 推荐(1) 编辑
摘要: 推导 假设,我们已经求出有一对x,y满足ax+by=gcd(a,b)。 我们想要求最小非负整的x,那么必须要减去一个能减的 最大值,我们设减去一个D,则方程变为: a(x-D)+by+aD=gcd(a,b) 整合一下: a(x-D)+b(y-aD/b)=gcd(a,b) 我们知道,gcd(a,b)是 阅读全文
posted @ 2018-12-19 21:29 ThinkofBlank 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 本题解讲的是快速暴力组合数的方法,需要知道以下知识(能做此题的大佬应该都知道吧。。。): 欧拉筛,组合数公式,卡速米(这个应该没人会吧?) 否则将引起不适 设π(x->y)为从x连乘到y(数学公式编译器崩了。。。) 组合数,大家都知道,公式为C(n,m)=!n/(!m*!(n-m)) 我们将它化简一 阅读全文
posted @ 2018-12-19 21:27 ThinkofBlank 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 看了此题,发现是求中位数,自然而然的想到了求kth 求kth有多种,我用的是权值线段树,即记录x的个数,但,我们看题,发现a[i]可以高达1e9,一个数组是开不完的, 不过万幸的是n只到了1e5,而求kth只需要知道大小关系就行,不需要知道具体的值,所以,我们可以用离散化来搞定它! 这里说一下sta 阅读全文
posted @ 2018-12-19 21:26 ThinkofBlank 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 这题其实就是高斯求和问题,即1+...+x=x(x+1)/2。 由此,我们就可以用递推的思想来解决问题: 阅读全文
posted @ 2018-12-19 21:22 ThinkofBlank 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 这道题,发现暴力能过时,喷了3k的血。。。本人花了近半小时打表找规律。。。然后真找出来一些了。。。 1.f[x^n]=f[x]*(x^(n-1)) 2.设x,y为不相同的质数,则f[x^a*y^b]=lcm(f[x^a],f[y^b])。 3.对于一个质数x,他的f[x]极小(似乎都很小??) 对于 阅读全文
posted @ 2018-12-19 21:21 ThinkofBlank 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 提供一个新思路 这题,我们假设n个数分别为a1,a2,a3,a4,a5...an,且对于任意 1<=i<j<=n满足ai<aj 而他们两两之和即为输入的各数字,从中,我们不难推出对于输入的数字中(我们把它们按从小到大排序,分别设为m1,m2...) 一定满足:m1=a1+a2,m2=a1+a3(我们 阅读全文
posted @ 2018-12-19 21:20 ThinkofBlank 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 此题搜索可以过!!! 看到此题,第一想法,是01背包,然而,作为一个蒟蒻,我怎么会打正解呢?,于是就开始打dfs! 想要完成此题,普通的搜索肯定是过不了的(不然要dp干嘛),所以,我们要考虑 剪枝 比较容易的,我们可以轻松想出来剪枝: (不吐槽名字我们还是好朋友。。。) 1.用数组guji[i]表示 阅读全文
posted @ 2018-12-19 21:18 ThinkofBlank 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 作为首A的人(?)我来发布下这道大水题的题解了~ 首先题目给出了f[i]=f[i-1]+f[i+1],我们移下项: f[i+1]=f[i]-f[i-1],所以我们可以知道:第i项等于它前两项之差! 即: f[i]=f[i-1]-f[i-2],同时,f[i-1]=f[i-2]-f[i-3],代入得: 阅读全文
posted @ 2018-12-19 21:17 ThinkofBlank 阅读(160) 评论(0) 推荐(0) 编辑
摘要: ​ 对于字符串S,我们从第y位开始搜索(保证前y-1位一定可以是匹配) ​ 从第y位开始生成字符串,若此时生成的字符串在P中出现过,则证明 ​ 此时的字符串可以被匹配到y+i的位置,我们再从y+i+1开始搜索便好了! ​ 而问题的答案就是我们已到达的最大的一个y。 ​ 超时的,有木有什么优化呢? ​ 阅读全文
posted @ 2018-12-19 21:14 ThinkofBlank 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 此题就是一个卡兰特数列,用个高精就行 = = // luogu-judger-enable-o2 include<bits/stdc++.h> define me(a) memset(a,0,sizeof(a)) //#pragma GCC optimize(0)//o0优化 //#pragma G 阅读全文
posted @ 2018-12-19 21:13 ThinkofBlank 阅读(134) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> usingnamespacestd; int main() { int a,b,c,d,e,f,g,h,i; for(int i1=100;i1<=999;i1++){ a=i1%10; b=2*i1%10; c=3*i1%10; d=i1/10%10 阅读全文
posted @ 2018-12-19 21:11 ThinkofBlank 阅读(198) 评论(0) 推荐(0) 编辑