- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 字符串算法manacher算法
manacher是一种线性时间复杂度算法,对于给定的字符串s, 可以在O(n)时间内,求出以每个位置为中心的最长回文子串。插入无关字符 在相邻字符之间以及字符串首尾分别插入s中没出现的字符,设为#,得到str。则str中以任意位置为中心的最长回文串长度是奇数。记 p[i]=max{j|开区间str(i−j...i+j)是回文串}。 p[i] = max\{j | 开区间str(i-j...
2016-11-28 23:19:11 360
原创 cuDNN:Efficient Primitives for Deep Learning 解读
一直用cuDNN所以很好奇其实现,于是花了点时间看了一下cuDNN:Efficient Primitives for Deep Learning,还是很容易懂的。 1. caffe的卷积 首先,caffe的卷积操作是讲卷积转化为矩阵乘法,然后就可以用已有的GPU矩阵乘法的优化算法进行计算。具体可以参见[这篇博文] 。(http://blog.csdn.net/mounty_fsc/artic
2016-09-07 23:24:25 2510
原创 c指针解析
今天定义了一个多维数组bool dp[2][500][500];然后想吧这两个500*500的数组分别给两个指针,于是bool **cur = dp[0];bool **next = dp[1];结果:error: cannot convert 'bool (*)[500]' to 'bool**' in initializationerror: cannot convert 'bool (*)
2016-07-24 16:17:54 478
原创 Codeforces Round #360 (Div. 1)
A略Bdescription 给定c1,...,cn和k,若已知x mod ci,i∈[1,n],能否求出x mod k给定 c_1,...,c_n 和k,若已知x \ mod \ c_i, i \in [1,n], 能否求出x \ mod \ k . solution 可以从考虑什么时候是NO来入手.可以从考虑什么时候是NO来入手. 结论:yes<=>k∣lcm(c
2016-07-21 14:31:11 288
原创 c++中关于cin.tie以及sync_witch_stdio同步
flush()ostream类的一个方法,作用是将缓冲区的数据刷新到输出文件。 /* Flushing files (flush manipulator) */ #include <ostream> /* std::flush*/ #include <fstream> // std::ofstream #include <bits/stdc++.h>
2016-03-04 15:37:39 4189
原创 Codeforces Round #333 (Div. 1)
problem C. Kleofáš and the n-thlon 或者601C description: m的全排列随机选n个得到n行m列的矩阵。第j列的得分为该列所有数的和。第j列排名为得分比它小的列数+1。给定该列的n个数,求其排名期望。solotion:这n个数的为sum,就是说有多少个数的和小于sum。其他m-1个数是无分别的,因此只要求某一列得分小于sum的概率,然后乘以m-1。
2015-11-29 01:04:37 627
翻译 gvim不识别.vim插件编码
问题:前几天在win10下装了gvim,今天装了几个插件,NERDTree,minibufexpl,winmanager。运行时报错:NERDTree的69,70行错误,显示乱码。解决:百度了一下 把这段代码粘到了_vimrc里面就好了。代码转载自雪候鸟的专栏_Gvim中文菜单乱码解决方案""""""""""""""""""""""""""""""""""""""""""""""""""""""
2015-11-28 01:59:31 617
原创 python3编码
看了各种blog解析,不如查一下文档 首先,本文针对的python3,相对于python2有一定的改动。unicode Renames unicode to strstr class str(object=b”, encoding=’utf-8’, errors=’strict’)返回一个指代object的字符串。encoding哈errors为None时,尝试返
2015-11-28 00:11:36 425
原创 eclipse 打开.java文件乱码
d(x,y):=x,yd(x,y) := x,y之间的最短路径长度;f(u):=min{d(u,vi)|1≤i≤m},uf(u) := min\{d(u,v_i) | 1 \le i \le m\}, u为树上的任意一点;h(v1,...,vm):=max{f(u)|1≤u≤n}h(v_1,...,v_m) := max\{f(u) | 1 \le u \le n\};欢迎使用Markdo
2015-11-27 19:18:59 6282
原创 spring开发时所遇的乱码问题
前几天在测试时发现从前端访问你数据库出现乱码。经过分析应该是前端和后端,后端和数据库之间数据访问编码不一致的结果。整个流程机制还不是很明朗,先记点明朗的东西。 1. 首先,前端通过浏览器向后端传输数据有两种途径: 一是通过地址栏,这时候采用的是系统默认编码二是通过浏览器控制台,通过js向后台传输数据时默认采用utf-8编码我用的是spring+tomcat,所以要配置spring解析UR
2015-11-22 20:14:29 413
翻译 几道数论趣题
内容来自Quora,只是做个笔记。涉及基础数论但很有意思 Q: 10100+110^{100}+1是质数吗?A/Alon Amit: x≡x+1−1=>xm≡x+1(−1)m=>xm+1≡x+1(−1)m+1 \begin{eqnarray*}&& \quad \quad x \equiv_{x+1} -1\\&& =>x^m \equiv_{x+1} (-1)^m \\
2015-11-22 19:00:40 1551
原创 polya计数回顾
burnside引理设G=g1,g2...gkG={g_1,g_2...g_k}是[1,n]上的置换群,令c(gi)c(g_i)表示置换gig_i下不动点的个数,那么G将[1,n]划分为等价类>的个数是: l=1|G|∑j=1|G|c(gi)l = \frac{1}{|G|}{\sum_{j=1}^{|G|}{c(g_i)}}即是说,等价类个数等于不动点个数的均值。 如果存在gig_i将gi(
2015-11-03 13:30:19 503
原创 2015多校第九,十场总结
1010 sometiems naive 树链剖分。从根到任意节点的路径不超过log2nlog_2n条轻链,因此,轻链可以单独维护。#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <cstring>#include <string>#include <algorithm>
2015-10-30 20:50:41 371
原创 2015多校第八场总结
1001 Travel with candy 贪心。此类问题,关键是上帝视角,用充分的自主权进行贪心。 如果油箱里的buykbuy_k高于当前购入价buyibuy_i,则将油kk退出如果油箱里的buykbuy_k小于当前售价sellisell_i,则此时再个贪心。油kk要么在ii售出,要么在j≥i,sellj≥sellij\ge i,sell_j \ge sell_i处售出。考虑到sellj−
2015-10-30 19:24:32 374
原创 2015多校第七场总结
1004 Segment Game n条线段[li,li+i][l_i,l_i+i],询问每条线段内部有几条完整的线段。从小到大处理i时, A={[l,r]|r≤li+i}A=\{[l,r]| r \le l_i+i\}B={[l,r]|l≥li}B=\{[l,r]| l \ge l_i\}C={[l,r]|li≤l<r<=li}C=\{[l,r]| l_i \le l < r <= l_
2015-10-30 18:47:11 295
原创 2015多校第6场总结
1006 First One 给定数组A,S为前向和,求 ∑i=1n∑j=in(⌊log2S(i,j)⌋+1)∗(i+j)\begin{equation} \sum_{i=1}^{n}\sum_{j=i}^{n}(\lfloor log_2S(i,j)\rfloor+1)*(i+j) \end{equation} O(nlog2n)O(n{log}^2n)挂了。 考虑其物理意义。
2015-10-30 17:14:15 271
原创 2015多校第5场总结
1010 MZL’s City 董宣毅搞出来这题,还挺厉害的。 动态加点做最大流。 胡伯涛的最小割还得好好看看。 常设源汇点S,T。可用来处理节点自身属性。
2015-10-30 16:42:17 329
原创 2015多校第四场总结
1003 Question for the Leader 经典结论:如果可以把这颗树分成大小都为k的n/k份,那子 树大小是k的倍数的节点恰好有n/k个。(根可以任选) 反过来思考,想像一棵被分成n/k个,节点数为k的子树,每棵子树的根为深度最浅的节点。将这些子树拼接回去,这时候那些根节点的sz依然是k的倍数。顺着这个思路,可以将该树分成n/k棵大小都为k的子树。1004 Route Stat
2015-10-30 16:27:19 360
原创 2015多校第三场总结
1001 Magician 线段树。维护区间四个值:奇奇,奇偶,偶奇,偶偶。更新父区间的每个值需注意:可由左儿子单独更新,可由右儿子单独更新,可由左右儿子结合一起更新,三种情况。#include <cstdio>#include <iostream>#include <vector>#include <algorithm>#include <cmath>#include <cstrin
2015-10-30 15:11:10 366
原创 2015多校第二场总结
1003 Connect the Graph 构造问题,从特殊到一般。先考虑无黑边的特殊情况,从而找到突破口。1004 Delicious Apples 将环拆成链,然后贪心。思路一:可以将苹果树作为分界;思路二:将苹果作为分界。1008 He is Flying 求{S[i]-S[j-1]|1<=j<=i<=n},FFT, 对精度要求较高。方法论: 构造问题,从特殊到一般,考虑
2015-10-30 13:32:08 276
原创 CF #325 div1 C + D + hdu 5458
hdu 5458给定一个连通图,动态删边,并询问任意两点u,v之间的桥的数量(i.e删掉这条边后,u,v不连通)。保证任意时刻图是联通的。把原图叫G0,第i个操作结束后的图叫Gi,所有询问结束后的图叫Gq。把删边改为反向加边,然后询问。那么就变成初始状态为Gq,最终状态为G0的加边过程。当时想的是先把删完边后的图缩点,构成树。添加边(u,v)时又要缩点,但此时只需要将路径(u,
2015-10-13 20:26:12 325
原创 polya计数回顾
burnside引理设G={g1,g2...gk}是[1,n]上的置换群,令c(gi)表示置换gi下不动点的个数,那么G将[1,n]划分为等价类b,则a和b等价">?的个数是:[latexpage]\[l = \frac{1}{|G|}{\sum_{j=1}^{|G|}{c(g_i)}}\]即是说,等价类个数等于不动点个数的均值。如果存在$g_i$将$g_i(a)-
2015-08-15 23:40:00 517
原创 组合数取模
赤裸裸的组合数取模没什么意思,但也是必须掌握的一门知识。一个计数的问题辛辛苦苦搞到最后发现被取模坑成狗也是很有可能的。今天主要总结一下各类取模问题。限长整(long)范围内。 所谓组合数取模,即求 [latexpage]CmnC_n^m % pp 1<=m<=n<=1e3,1<=p<=long1<=m<=n<=1e3, 1<=p<=long杨辉三角,直接递推 Cmn=Cmn−1+Cm−1n−1C_
2015-08-09 17:46:16 1049
原创 状态压缩dp_POJ1185炮兵阵地
位压缩dp,单行有效状态最多只有60种。 0.压缩:用j的二进制表示单行状态(0 1.状态表示:dp[i][j][k]表示第i行放置方式为j,第i-1行放置方式为k时所能得到的最大炮兵数量 2.状态转移:dp[i][j][k] = max{ dp[i-1][k][s]} + num[j] } { j,k,s均为有效状态
2014-04-29 16:58:40 393
原创 差分约束_POJ 1752 Advertisement
好久没做差分约束系统了,有点陌生。 简述:给定一个数K和若干个区间Li , Ri(Li可能大于Ri,交换下即可)。|Li|,|Ri|。要在区间 [ Li , Ri ]上选出 K个点涂上颜色。求数轴上最少的被涂色的点的个数。(简单起见,假设 Li,Ri>=0) 思路:差分约束系统: 记 S_i 为 [ 0 , i ] 这个区间内染色的点的个数。那么就有S
2014-04-29 16:57:01 437
原创 UVA 12576 - Simply Loopy
简述:给定N,求 x1 + x2 + x3 + x4 + x5 = N的所有非负整数解的平方和。 思路:先求 x1 的所有解的平方和。当 x1 = k,x2 + x3 + x4 + x5 = N - k的非负整数解个数为C(N-k-1,3),产生了 k*k*C(N-k-1,3) 这么多值。当 k 取遍 1,2...N-4 时,x1 这个位置上的解就求完了。然后根据轮转对称性,x2
2014-04-29 16:54:22 604
原创 数位dp_HDU_3943_K-th Nya Number
本题不是求不大于 n 的Nya数的个数,而是求给定区间内第 K 大的Nya数。有两种做法:一种是二分+模板,还有一种一直接构造。下面的代码是直接构造。 关于 f :起初定义为最高位不大于 l 位(个位是 0 位)的且含 i 个4,j 个7的且大于 P 的数的个数。后发现这样定义根本就是错的。因为若f的值与P挂钩,那么在递归过程中就会受到P的各种限制,丧失了 f 记忆化的优越性。因此,
2014-04-29 16:51:36 446
原创 数位dp_HDU_4507_吉哥系列故事——恨7不成妻
依然满足区间减法,和一般的数位do没什么不同,只是要求平方和罢了。 由于 ∑(Y + xi)^2 = ∑(Y^2 + 2 * Y * xi + xi^2) = n * Y^2 + 2 * Y * ∑xi + ∑ xi^2 , 因此dfs的时候记录三个数组:(1)f:和 7 无关的数的个数;(2)sum:和 7无关的数的和;(3)squSum:和 7无关的数的平方和即可。#i
2014-04-29 16:49:04 395
原创 HDU_2013 ACM-ICPC南京赛区全国邀请赛——题目重现
南京赛区题目重现 1001.令Ex表示从开始掷骰子到结束得到的期望值,假设涂色的筛子是1,2,3...m,那么 有 Ex = 1/n*(a[1]+Ex) + 1/n*(a[2] + Ex) +...1/n*(a[m]+Ex) + 1/n*a[m+1]+...1/n*a[n] 化简得 Ex = sum{a[i]}/(n-m);P.s. n==m的时候未
2014-04-29 16:46:40 616
原创 什么什么的
一味的追求算法,数据结构什么的,到头来发现它们只不过是SHIT而已。 为何这么说呢?因为很多时候我们是思维跟着算法和数据结构走。想着自己学过什么,然后怎么把问题转化到相关问题上。这固然是一种正确的思维方式,把未知变已知。但鉴于我们这弱菜对于算法结构之类所知实在有限,用这种思维不免处处碰壁。。。 其实我想说的是,抛开算法和数据结构的话,对于一道题,我们总该有些自己的想法。
2014-04-29 16:45:29 858
原创 dp_PKU Online Judge 1055:Tree
记:f[n]为上式产生的节点数为n的树的深度期望; g[n]为上式产生的节点数为n的不同形态的树的个数.那么:f[n] = ∑n所有形态(∑ndep[v]所有节点深度)/(n*g[n]);则f[n+1] = ∑n所有形态(n*∑ndep[v]所有节点深度+∑ndep[v]所有节点深度+n)/[(n+1)*g[n+1]];且 g[n+1] = g[n]*n;化简得 f[
2014-04-29 16:40:43 346
原创 dp_Zju_3688_The Review Plan II_不愿若菜
F[n]:n个限位排列的方案数;g[n]:n个限位排列中有一项映射到自己,剩下所有项依然遵循限制所获得的方案数。//不难推得,k映射到k和k映射到k+1所得到的g[n]是相等的。则:F[n] = F[n-1]*(n-3)+[2*(n-3)+1]*g[n-1]+g[n]+g[n-1]+g[n-2]; g[n] = F[n-1]+g[n-1];考虑n的情况:1不能映射到{1,2},...,n
2014-04-29 16:38:10 441
原创 CF238_DIV1_D
题意:每次求和当前点连线斜率最大的点,然后求最小公共祖先。对于当前点i,记和i点连线斜率最大的点为r[i],则r[i]一定是i+1或者i+1的祖先。于是预处理出r[]数组然后建树求LCA#include #include #include #include #include #include #include #include #define clr(A) memset(
2014-03-30 11:26:56 514
原创 CF238_DIV1_C
题意是给一个无重边无自环的连通无向图,每次取出两条有公共点的边,求一种取边方案。无解时输出no solution。很容易想,无解等价于边数为奇数。有解的时候靠构造。构造是一个猜想+调整的过程。可以肯定的是,要对边遍历一遍。但是如果先匹配父亲的边再匹配儿子的边的话,可能会造成把原图分裂成两个子图并且有个子图边数为奇数进而导致无解的情况。所以想到先匹配儿子的边,这样,父亲的边可以适时调整。
2014-03-30 11:08:45 558
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人