自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 看过的机器学习深度学习,NLP课程,视频

1.CS224D Richard Socher 2.Coursera machine learning Andrew Ng 3.DEEP Natural language understanding Kyunghyun Cho http://videolectures.net/deeplearning2016_cho_langua ge_understanding/?q=na

2017-07-25 20:49:29 452

原创 CS224D学习笔记

第二次看了,理解深了一些 2017.7.24 传统方法 通过统计一个单词周围的单词的频率,获得每个单词的wordvec,然后通过SVD降维,去除较大奇异值的矩阵,把vec长度在25-1000内。 缺点是1.单词很多的时候SVD复杂度很高 2.要添加新单词时很困难,扩展性差 深度学习可以部分解决。

2017-07-24 08:57:01 366

原创 dfs序,时间戳

上一篇文章讲了用DFS序来处理割点问题,DFS序表示的是进入的时间戳,用DFS序把之前访问的和之后访问的节点分开。而DFS序还有一个应用就是一个点的入DFS序和他子节点的最大入DFS序,构成了这个点为根的子树对应的区间 这样就可以在树上做区间更改了,树上的每个叶子在线段树上对应一个点,而树上的一棵子树在线段树上对应一个区间,所以要记录每个点的入DFS和出DFS,叶子结点的RDFS = CDFS,中

2017-04-09 11:24:35 1152 1

原创 红色警报 16天梯赛决赛013

自己想到了并查集的做法,但是感觉好傻,就没有写。。 然后以为是求存不存在割点,跑去看割点的算法看了半天 其实用并查集也能过,然而最快的应该是DFS判断连通分量个数,题目的要求是判断去掉一个点之后图中是否有两个点不可达了,其实就是转换成连通分量个数变多,所以只要维护一个上一次的连通分量,然后和这一次的比较就行了……DFS巨水的题我居然都不会总结的话,是否会有两个点不可达可以转换成连通分量变多

2017-04-09 09:03:34 229

原创 最小生成树若干性质以及在ACM中的应用

感觉自己起了个很高级的名字,开心 1.POJ 2395 Out of Hay   好像是叫最小瓶颈生成树,要求生成树中的最大边最小。   其实最小生成树的最大边就是要求的值。   用反证法,首先假设最小生成树为T1,最大边为E1,另外一棵最大边更小的生成树为T2,最大边为E2。   如果E2 < E1,则T2中所有的边权值均小于E1,E1在T1中连接两个连通分量A,B,在T2中一定有连接A

2017-02-08 15:58:39 1865 2

转载 二维树状数组学习

http://blog.csdn.net/z309241990/article/details/9615259这个网站有实例,讲的不错以前很ZZ的以为二维树状数组就是树状数组存vector或者vector存树状数组做了那次网络赛之后知道有单点更新,矩阵查询的(LOGN)^2数据结构,其实就是树状数组里存了树状数组,比如x + lowbit(x) 总会存了x的信息。记: B[1]={a11,

2016-09-21 15:43:15 204

原创 树链剖分学习

http://wenku.baidu.com/link?url=Mgj7EOkOlXg5PqU1fBosxe2yUOtAVVpvvPKW5m_m3h_bBdfXv8X-rJbNqM_YjC2Jp0geeJPsVpmym7-GSBHeVUXIP4zG66DI-FzpqbZSM2a 主要是根据这个网站看了看 感觉树链剖分有分治的思路吧,就是把边分成重边和轻边,从轻边走,剩下的点比较少,从重边走,可以

2016-09-19 20:57:06 167

原创 HDU 5875 N^2能过的大水题,可用单调栈,离线处理优化

就是求A[L] MOD A[L+1] MOD A[L + 2] ….MOD A[R] 很容易想到mod的时候碰到大的数就可以不算,所以只要找到每个数右边第一个小于等于该数的数的位置就行了 这题太水了,N^2枚举就能过 当然这里可以用单调栈优化(复习一下) 维护一个单调递增的栈 碰到一个小于等于栈顶的数,就把大于这个数的数都出栈,同时记录到next数组里,o(n)时间就能算出来了 然后对于每

2016-09-16 17:59:36 194

原创 HDU 5869 树状数组+GCD性质的利用

大连区域赛网络赛树状数组gcd的应用离线处理

2016-09-16 11:43:36 318

原创 2015 北京区域赛现场赛1C 裸的BFS

本来以为是个DP,想这怎么转移,一直不会做,后来看了题解发现好简单1.对于两种操作的这类问题,要想好操作的顺序会不会影响,这题而言,如果你是操作1和操作2间歇着做的话,一定不如把操作二都做完之后再对那些做过操作一的做一次操作(想一想就知道了,当时也想找到操作之间的关系,可是没发现,好题啊!)2. 考虑做完操作2之后的情况,同一种颜色一定会变成同一种颜色,所以状态数最多就6^6种,然后用

2016-09-14 18:12:42 312

原创 hihocoder 1257 2015北京区域赛I

以前做这种构造题做的不多,拿到瞎想了想,然后放弃了,后来发现和答案的有一种很像1,3,5,7,9可以构成一个正方形,啥的vfdgfbgffhn难题454 (智障猴打的天书)只要剩余部分构成一个矩形就行了……然后发现右边的边长会是2*3 3*4 4*5,偶数的时候加两列,奇数的时候转一下就可以了……

2016-09-12 21:40:59 206

翻译 hihocoder 1252 2015北京赛区区域赛D

自己做的时候想用dp,123555个人广告推广和(宋阔打的)发现学习一个技能,如果考虑他的父节点是怎么来的,父节点的父节点之间会有干扰,不能满足无后效性百度说用最小割,想了一波不会,不知道怎么处理直接买这个技能这个这个这个这个模型不熟悉最小割啊,怎么能使 [  每个割是一种可行的方法  ]呢 比如直接买最后一个点,应该是一个割,但是一个点只有两种到达方式1.由上面的点过来2

2016-09-12 20:11:31 202

原创 hdu 4013树的最小表示

给定一个无根树,求他的子树的个数,子树也是无根树,边和点一一对应即为相等子树。枚举子集,这样就可以枚举出每种树的构成,然后枚举根节点,dfs求出最小表示来判重。注意,每一个子集如果是树的话,最多只能被计算一次,但是它的不同表示却都要放到set里(最小表示是对于确定根的)然后如果他是森林的话,由于枚举子集从小到大,他的每棵树都算过了,所以没有问题如果是在dfs中每一次都插入一次set

2016-09-12 16:24:21 251

原创 hdu 4031 问题分解+线段树+暴力

/*区间有两种情况如果区间值为1则区间内的数处于同一状态,为0则不属于同一状态,要再分 记录回复好的时间,如果查询时间》=这个时间,则区间继续属于回复状态,更新父亲节点值否则ans = ans + (R-L + 1)这种问题的复杂度不太好估计,最坏情况下要一直分下去,感觉复杂度没有那么好保障但是也能做吧上面想的做法应该不对233查了网上的做法……好像是N^2的算法啊不会做的

2016-08-31 15:13:30 227

原创 hdu 4034 预处理+map映射字符串

首先要注意输出时候有空格的问题,一行的最后一个空格不要输出!!切记!!我的做法就是前n次,每得到一组关系,即A和B是朋友就找到A的全部朋友,把B和他们的公共朋友数+1(A)因为每组关系只出现一次,即对于人C来说,如果他现在不是A的朋友,那么B和C现在不会加如果现在和A是朋友,那么现在会加一次,而以后不会出现A,C或者AB这个关系了,所以C,B有A这个公共朋友只会加这一次如果现在

2016-08-29 18:43:51 355

原创 暑期赛c题 存储历史状态的树状数组+二分

http://acm.xidian.edu.cn/problem.php?id=1181开始以为是离线处理的……然后发现离线做不行,在线做不会啊就放弃了看了解题报告之后知道就是一个存储历史状态的树状数组,存储了以前时间的修改树状数组单点修改修改一个点会影响logn个点,这些点的vector都要更新一个新时间(因为是在线操作,时间是按顺序的)然后查找一个操作时间的时候,在进行sum的

2016-08-27 11:53:46 397

原创 暑期赛B题 矩阵快速幂DP,注意状态的化简

题目:http://acm.xidian.edu.cn/problem.php?id=1180一看就感觉是矩阵快速幂的题,可是状态设计的太复杂不好转移,就崩了DP[I][J][K]表示考虑前i个珠子,最后一个的颜色是j,有k个,所能达成的方案数k = 1时 dp[i][j][k] = dp[i - 1][p][q] p!=j   1 k != 1时 dp[i][j][k

2016-08-27 09:43:51 394

转载 hdu 4022 multiset

要注意有重复点!好麻烦……开始自己的做法错了……用multiset保存点,然后访问过一个条边之后,把边上每个数都从从另一边剪掉,本身这条边也剪掉……详见http://www.cnblogs.com/wally/archive/2013/03/13/2958324.html

2016-08-25 11:34:32 196

原创 hdu 4027 线段树 + 减少重复计算

因为每个最多只会被更新8次左右,所以经常会出现区间的值不需要更新,所以在更新区间值的时候判断这个区间需不需要更新如果需要了,再分下去,具体更新其实是单点更新的。好题/*开方的次数最多是8次 所以很容易出现一个区间内全是1的情况,这样的话如果碰到全是1的区间就不用更新了 还有得注意一个小trick,就是左边可能会大于右边233 其实还是为了减少重复运算 因为我们是一个数一

2016-08-25 10:02:36 196

原创 hdu 4004 4006 4010

4004/* 用优先队列维护前K大的数,然后每次输出最小的一个就可以了 如果新的数比最小的一个数大,那么新的数入队,那个出队 啊啊啊啊为啥没想到……其实还是考虑了数据的冗余,每一次结束之后, 只有前k大的是有用的……*/ #includeusing namespace std;int main(){ int n,k; while(scanf("%d %d

2016-08-23 11:50:06 213

原创 hdu 5834 dfs

就是求出每条边两个方向分别能到达的最值比赛时候头脑发热想不出来……其实仔细想想以一个点为根,两次dfs就可以求出这个值了然后就是再对每个点进行一次计算,如果都 否则选择一个不走回来,其它都走回来复杂度差不多就是DFS的复杂度但是这题代码还挺长……不想写了。。

2016-08-18 09:47:54 146

原创 hdu 2430 优先队列/线段树

1.我自己的想法是用线段树的考虑从i开头的字串,设sum[i,n] = x,sum[j,n] = y;要使得x mod p + y mod p 只要用线段树处理每个y的最小sum,就可以在logN时间内求出i开头的字串中的最大满足条件的值了今天Hdu关了,没交,感觉代码好丑。。可能会wa。。#includeusing namespace std;typedef long l

2016-08-17 11:21:34 269

原创 HDU2437 2008 Asia Chengdu Regional Contest Online 记忆化搜索+剪枝

#includeusing namespace std;/*记录到达这一点%k的最小距离,如果当前距离》最小距离,就更新一下  算是记录状态的搜索,状态的描述方便剪枝*/   typedef long long ll;const int maxn = 1010;const ll INF = 1e18;struct edge{int to;int cost

2016-08-16 15:03:36 274

原创 快要区域赛了。。

1.后天就是ccpc的比赛了,加油……明天开始,好好刷题,这段时间主要负责dp和数据结构方面的内容把握现在,把握人生人一我百,人十我万哈哈哈哈哈!!!

2016-08-12 21:59:19 201

原创 la4487 加权并查集,异或的性质

两个数异或是一个值,这个时候只要再有任意一个数,两个数就都可以知道了而如果知道了a和b的异或,a和c的异或,显然就可以知道b和c的异或对于这题首先我的思路:我的思路特别麻烦……因为受到了以前做并查集一题的影响:每个数的每一位都存起来,把它与它的反都存一遍,并查集维护与他相同的位的,并且用一个0一个1来表示和其他位的关系但是问题在于……碰到一大堆异或在一起的话,有一些未知关系

2016-06-06 15:06:29 497

原创 cf 346 D E

D 就是找到某一次走路方向和一下一次方向的关系,就可以判断会不会掉到水里。。小学生题E 开始考虑的方向是:如果某个点是被隔离的,那么他就全是出边,那么什么情况下这个点可以不被隔离呢?好像和有没有环有关系   对于每个连通分量,如果没有环,就是一棵树,随便选一个点为根,只有这个点是被隔离的(而且必须被隔离)   如果有环,环上绕一圈,以环上的点为跟出发到其他地方,每个点都没有被隔离然

2016-05-15 11:14:15 401

原创 c++ stl lower_bound upper_bound用法浅析

就是用来二分查找的嘛,比较方便一点……懒得手写比如给一个数组a[0] = 1;a[1] = 2;a[2] = 3;a[3] = 5;a[4] = 7;lower_bound(a,a+5,6)表示从a开始五个位置,查找6,返回的是第一个》=6的数的迭代器指针即返回的是7的指针,减去a,就得到了a[4]对应的数组下标4upper_bound(a,a+5,5)表示第一个>5的数的指针

2016-05-15 08:52:57 590

原创 cf348E

开始开很多个树状数组……后来用map存树状数组再后来用树状数组存map……再后来发现每个操作数可以分开处理……网上还说可以用优先队列我不信……反正要离线处理的……有点天真反正对bit和map的理解稍微深了一丢丢……

2016-05-11 15:49:03 262

原创 cf 666B

注意这里要用BFS,复杂度是(n + E) 要是用某些最短路算法,时间更长……然后考虑到只要四个点,可以枚举中间两个点,在这之前初始化好到每个点和从每个点出发的前三长……也就O(n^2) 吧不管了就这样……又没有提交,有点虚,周末做的题再必须提交吧……平时就水一水

2016-05-05 23:00:46 272

原创 cf 666A

理解错题目意思 + 没有好好思考……开始理解成不能有两个一样的,后来发现是不能有连续两个一样的。。。后一种就可以用dp做了,无后效性但是还是要保存两个或三个行不行……不管了,浪费好长时间**c*

2016-05-05 19:57:27 300

原创 uva11795 简单状态压缩DP

一看到n = 16就想到状态压缩DP了,而且只要保存这个状态就行了转移时也用状态压缩的转移方法,比较两个二进制数,就能知道能否从已知状态转移到需要的状态开始没看到题目给的就是二进制数,自己还转换成了二进制还有要记得用longlong……不能因为这个wa还有位运算还不是很熟悉,可以用异或来去掉某一位数 S ^ (1#include#include#include#inclu

2016-04-09 10:22:38 285

原创 la 4731 贪心+DP+概率

其实不要概率知识……题目给了公式开始其实就想到,大的应该放前面,不过还有如何划分等各个问题,所以没有敢直接下手证明分析了对于某一种划分方式,应该把那个组放在最前面(可证明 (∑P)/个数)最大的应该放在前面,这样可以使总值最小可是还是不知道怎么划分啊,划分的方法太多了,不适合做DP的条件假设每个算式中前面的系数已经给定(每组的个数,组的顺序已经给定) 那么怎么把各个区域填进去,能达

2016-04-07 21:42:06 579

原创 uva11552

做过难的dp再做这种,就能很清晰的发现状态转移过程中关键的状态量就是第i组结束后末尾的字母dp[i][j]表示前i组,以j结尾的最少块数dp[i][j] 转移时要转移到全部的dp[i-1][k] 分成k等于j和k不等于j分别考虑难得1A,水题。。#include#include#include#includeconst int INF = 111111111;usin

2016-04-02 17:24:17 236

原创 la4015 树形dp(状态设计)(不会)

其实也没有那么难,只是自己不敢想先把解法说一下,因为要用dp么,根据树的递归的特性设计状态,因为题目要求的是各种距离最多能访问到多少点但是以距离作为状态会空间不够用,所以要把值比较大的东西存成数据,作为dp的值而不是状态量dp需要考虑哪些状态?1.那个节点出发是必须的。2.决策要考虑要不要走回头路回到这个节点,所以分成了回到这个节点和不回到这个节点(这个不好想)最后一个是能访问多少

2016-03-17 20:43:54 311

原创 uva 11584 dp

开始用二维的dp做了,显然要on3的时间后来想到用初始化+一维的dp怎么做呢,dp[i]表示0到i的划分字符串个数,如何计算dp[i]? 考虑决策:i的用法,一种是i自己和自己,第二种是i和其他构成回文串所以只要初始化出i能和它前面的哪些构成回文串,就能在o(n^2)内完成dp初始化我也用了dp,考虑i与前面的构成回文串,那一定要是i-1也和前面的构成回文串这样就很容易了~

2016-03-16 16:31:10 238

原创 la 4945 free goodies,不会!

dp和贪心都能做……不过好像百度题解都没看懂啊。。。因该是有些性质没理解,回头再看吧

2016-03-16 14:50:41 195

原创 la4327 优先队列优化dp

很容易想到dp的模型,这一行的转移到下一行,但是复杂度很高,要优化首先可以初始化出距离和高兴值的sum,这样就可以o1得到距离然后是用单调队列优化dp首先把dp分成两部分,从左边过来和从右边过来,从1到m扫描的过程中,可以发现满足条件的点是一个滑动窗口,要求窗口中的最值只要维护一个单调队列,每次入队,出队,保持单调性,就能在o1时间得到最值,从而完成状态转移要想出用优先队列做还

2016-03-15 23:20:00 328

原创 la 4394 string painter 区间dp

开始练dp了,要好好练啊。这是一道区间dp的题目,每次对序列的一个区间操作,区间dp有一个特点是,对于某一个区间,如果你没有对这个区间进行操作,而对这个区间的子区间进行操作,那么这个区间就没有必要再操作了,否则对子区间的操作就成了费操作,这个是区间dp的决策,决策是对本区间进行大操作,还是分到其他子区间(o(n))的分法本题就是这样,dp【i】【j】表示从i到j的原序列变成末序列需要的费用

2016-03-14 15:26:13 707

原创 LA4394 区间dp

没能自己想出来..不过还是有所长进1.题目的一些性质,如果对ij区间刷过一次了,那么以后再刷的时候,只能刷ij之外的或者单纯ij之内的了,如果和ij相交的话,那等于ij多刷了一部分,在其他情况中会考虑到所以就打算这么刷,这么做的话,A[I][J][K]表示ij段是k字母,要变成s2所需要的费用,但是状态转移的时候,要考虑下一次刷的区间,就会导致转移到的状态太多,最好是枚举分割点转移到分割的

2016-03-12 09:59:33 332

原创 训练指南DP例题读后感

例27 王子与公主: 元素互不相同,并且大小关系与题目无关,可以标号,然后利用lis来求lcs,因为在A序列中重新标号后序列是12345单调递增的,和B序列的任何一个公共子序列也是单调递增的,所以只要找到B中的A中元素的最长上升子序列就可以了,把B有A没有的标记为0,即可    这题告诉我们如果A序列是严格单调递增的,B中每个都不一样,就可以用LIS来求LCS例题28 首先分析题目

2016-03-09 19:34:54 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除