摘要: 这题其实就是高斯求和问题,即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) 编辑