12 2018 档案

摘要:update:添加了数学公式markdown 洛谷博客地址:https://www.luogu.com.cn/blog/KingofNight/post shuo lun zheng shuo fen kuai ji yang xi zheng ming 一.复杂度证明 引理一 :对于任意一个正整数 阅读全文
posted @ 2018-12-27 11:07 ThinkofBlank 阅读(1346) 评论(4) 推荐(6) 编辑
摘要:此题其实比较水的。。。 首先我们来分析题目,我们假设,贝茜和艾尔西在i点相遇后贝西开始扛艾尔西,那么代价为多少呢? 显然,代价=贝茜到i点的最小代价+艾尔西到i点的最小代价+贝茜和艾尔西一起到n点的最小代价。 我们分开解决,首先贝茜到i点的最小代价=走的最少步数*b,而走的步数,我们跑一遍以spfa 阅读全文
posted @ 2018-12-24 09:25 ThinkofBlank 阅读(178) 评论(0) 推荐(0) 编辑
摘要:这题,主要是维护平方和来判断区间是否连续,但这里任然有两个问题: 1.值域为1e9,极限下,long long是一定会爆炸的 2.正如讨论区的,平方和可以被hack 那么该如何解决这个问题呢? 我的想法是——离散化! 离散化后,值域的极限就在1e6,假设这5e5个数,每个都是1e6,平方和也才5e1 阅读全文
posted @ 2018-12-23 21:01 ThinkofBlank 阅读(155) 评论(0) 推荐(0) 编辑
摘要:#include using namespace std; const int N=100001; int a[N],b[N],c[N]; inline string zhuan(int x){//int转化string string ant=""; while(x){ ant=char(x%10+'0')+ant; x/=10; } ... 阅读全文
posted @ 2018-12-21 10:47 ThinkofBlank 阅读(424) 评论(0) 推荐(1) 编辑
摘要:非常简单的实现没有什么好讲的,主要是链表的插入具有易实现的特点,才弄出的这玩意儿,效率一般... 本来估摸复杂度为O(nlogn),但似乎用stl后更高? 代码: 阅读全文
posted @ 2018-12-19 22:00 ThinkofBlank 阅读(299) 评论(0) 推荐(0) 编辑
摘要:特点:速度增涨缓慢(前期较慢),耗空间较大,自成素数表 优化 1.无限手动优化 即一开始往链表中加数时不要加完,可以只加奇数(注意2),这样可以少一半的空间时间,依次类推,可以消3,5......只是越往后越麻烦罢了。。。 2.富集优化 空间容易爆?没关系,我们可以至少少接近一半的空间!首先,先用1 阅读全文
posted @ 2018-12-19 21:54 ThinkofBlank 阅读(171) 评论(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 阅读(275) 评论(0) 推荐(0) 编辑
摘要:本题解讲的是快速暴力组合数的方法,需要知道以下知识(能做此题的大佬应该都知道吧。。。): 欧拉筛,组合数公式,卡速米(这个应该没人会吧?) 否则将引起不适 设π(x->y)为从x连乘到y(数学公式编译器崩了。。。) 组合数,大家都知道,公式为C(n,m)=!n/(!m*!(n-m)) 我们将它化简一 阅读全文
posted @ 2018-12-19 21:27 ThinkofBlank 阅读(274) 评论(0) 推荐(0) 编辑
摘要:看了此题,发现是求中位数,自然而然的想到了求kth 求kth有多种,我用的是权值线段树,即记录x的个数,但,我们看题,发现a[i]可以高达1e9,一个数组是开不完的, 不过万幸的是n只到了1e5,而求kth只需要知道大小关系就行,不需要知道具体的值,所以,我们可以用离散化来搞定它! 这里说一下sta 阅读全文
posted @ 2018-12-19 21:26 ThinkofBlank 阅读(187) 评论(0) 推荐(0) 编辑
摘要:这题其实就是高斯求和问题,即1+...+x=x(x+1)/2。 由此,我们就可以用递推的思想来解决问题: 阅读全文
posted @ 2018-12-19 21:22 ThinkofBlank 阅读(122) 评论(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 阅读(241) 评论(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 阅读(291) 评论(0) 推荐(0) 编辑
摘要:此题搜索可以过!!! 看到此题,第一想法,是01背包,然而,作为一个蒟蒻,我怎么会打正解呢?,于是就开始打dfs! 想要完成此题,普通的搜索肯定是过不了的(不然要dp干嘛),所以,我们要考虑 剪枝 比较容易的,我们可以轻松想出来剪枝: (不吐槽名字我们还是好朋友。。。) 1.用数组guji[i]表示 阅读全文
posted @ 2018-12-19 21:18 ThinkofBlank 阅读(129) 评论(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 阅读(163) 评论(0) 推荐(0) 编辑
摘要:​ 对于字符串S,我们从第y位开始搜索(保证前y-1位一定可以是匹配) ​ 从第y位开始生成字符串,若此时生成的字符串在P中出现过,则证明 ​ 此时的字符串可以被匹配到y+i的位置,我们再从y+i+1开始搜索便好了! ​ 而问题的答案就是我们已到达的最大的一个y。 ​ 超时的,有木有什么优化呢? ​ 阅读全文
posted @ 2018-12-19 21:14 ThinkofBlank 阅读(364) 评论(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 阅读(137) 评论(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 阅读(201) 评论(0) 推荐(0) 编辑