- 博客(103)
- 收藏
- 关注
原创 tkinter多进程报错TypeError: cannot pickle ‘_tkinter.tkapp‘ object eof error ran out of input
我错误的原因是因为第一个报错已经指明了:python不能pickle tkinter object, 导致了整个错误。就好了,另外也要注意在win中运行python多进程程序时要加上。
2022-08-08 17:04:31
1811
2
原创 降维——PCA
降维是机器学习中对数据的一种处理方法,目的是使数据变得易于处理,和数据可视化,提取有效信息摒弃无效信息。比如,你将要处理一组数据,这个数据每个样本都有几十个维度,当你对这组数据进行降维处理后每个样本变成了三维甚至是一维(也就是说用一维数据或者三维数据来表示这个样本),这时在对这个数据进行处理就会方便很多。同时你在压缩时也要考虑数据的有效性,意思是:在压缩数据后有效信息应尽可能地多,不能在进行降维...
2019-04-12 17:27:19
1740
1
原创 梯度下降的向量法(矩阵法)推导总结
梯度下降向量化推导再看了一篇博客后,了解了梯度下降向量化的推导公式,所以便写篇博客记录一下,加深一些记忆。首先,对于输入矩阵X为n*m的矩阵所以预测值为y^\widehat{y}y:MSE=12∗(y^−y)2=12(Xω−y)2\frac{1}{2} *(\widehat{y}-y)^2=\frac{1}{2}(X\omega-y)^221∗(y−y)2=21(Xω−y)2...
2019-04-06 11:55:42
6674
原创 矩阵分解学习总结+python代码
矩阵分解常作为推荐系统中一个比较常用的方法,在传统的svd分解中,矩阵分解是把一个Rm×n=Mm×mΣUn×nTR_{m×n}=M_{m\times m}\Sigma U_{n\times n}^{T}Rm×n=Mm×mΣUn×nT对于M矩阵来说是RRTRR^TRRT ,而对于N是RTRR^TRRTR 的特征向量。但是R为稀疏矩阵(因为在用户的矩阵中部分用户对于部分物品是没有评分的...
2019-03-29 18:30:01
2134
原创 BPR 学习小结
前天学习了贝叶斯个性化推荐,现在写篇博客来总结一下知识点,说是总结,其实也就是把里面的公式抄一下,说说其中的思想以及python代码的实现首先,贝叶斯个性化推荐是基于矩阵分解来做的,都是把USER-ITEM矩阵分解为一个user-k,一个item-k的矩阵的乘机形式,唯一不同的是BPR利用了贝叶斯定理的形式来处理这个矩阵,也就是P(θ∣>u)=P(θ∣>u)P(θ)...
2019-03-28 18:27:37
601
2
原创 poj 1456 并查集&贪心
题意是,告诉你每个货物的利润和截止日期,让你求在最后一件货物过期前的最大利润。分析:要想求最大利润,那么每一时间单位都只需要卖出最大利润的货物就可以,如果冲突,就是要并查集来快速查找上一个不矛盾点,来放置。代码:#include<stdio.h>#include<algorithm>#include<stdlib.h>#include<...
2019-02-28 22:17:58
141
原创 poj 1417 种类并查集+普通dp
题意就是:现在这里有两群人,一群人只会说真话,另一群人只会说假话,但你不知道这些人中哪些是说真话的,所以你就去问,然后得出一些信息,其中你只问了是不是说真话的人这一个问题。现在让你去判断这两群人中哪些人是说真话的,如果可以判断请按照升序把说真话的人的编号说出,如果不能,输出no分析:首先对于这道题,我们可以很明显的看出这是一个牵扯到分类的问题,所以要有使用并查集的意识,然后就是去思考如何判断哪...
2019-02-27 10:26:17
150
原创 并查集-poj2236
题意是:给你一个坐标系,坐标系上有多个点。然后在每回合都会给你一个信息,这个信息可以是告诉你那个点是可用的,也可以是询问你某两个点之间是否可以相连。相连的前提为:两个点都是可用的。两点相连分为直接相连或者通过其他可用点来连接。分析:首先我们要先去判断这两个点是否是可用点,如果不是可用点直接fail就好,然后再去判断这两个点是不是在同一个集合里面,如果在同一个集合就代表这两个点是可以相互连接的,...
2019-02-17 11:51:18
132
原创 light oj 1341 唯一性分解【数论入门】
题意就是:给你两个数,然后让你去求第一个数分解的因子对数,其中要求因子对中的任意两个数都必须大于第二个数,声明对于(2,6)和(6,2)是一个因子对。分析:先利用唯一性分解的方法对第一个数进行分解,然后根据定理这个数的因子个数为(1+a1)(1+a2)。。。(1+an)然后再除以2得到因子对个数,再根据第二个数来减去相应的值。对于这道题主要是学习到了唯一性定理中关于因子个数的计算,这一点是我所...
2019-02-07 21:21:13
125
原创 light oj 1370 欧拉函数【数论入门】【模板题】
题意大致就是:给你几个数字,要你算出每个数字的欧拉函数值相加代码:#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int maxn=1e6+10;int eu[maxn];int r...
2019-02-06 12:29:14
176
原创 codeforces #535 D题 DIVERSE garland 简单dp
题意就是给你一个手环的颜色顺序,现在定义要求每个珠子跟两侧的珠子颜色都不一样时,这个手环被定义被diverse garland,分析:很自然应该想到深搜的这样一种处理思路,但是因为题目要求数据量是2*10^5所以,这样做很明显是会超时的,因此,就要想到这一类问题的另一个求解方法:简单dp,使用简单dp'的方法就是把你递归的过程转换成dp比较的过程。举个例子,在这道问题中,如果你是用深搜的方式来...
2019-01-31 17:00:34
199
原创 codeforces #535 div3 c题
题意大致就是给你一个字符串序列,这个字符串是一个手环的展开,其中规定跟当前珠子距离2个单位的珠子跟当前位颜色相同的手环是好手环,现在给你一个手环,请你改变其中的珠子颜色使其成为好手环,颜色只有红黄蓝三种。分析:从题意可以看出,要求每相隔两个单位的珠子颜色要求一样,则表明是把手环分成了三个珠子为一个段的分段和; 那么在处理这道题时就可以采用一个暴力模拟的过程,自己先设定一个颜色序,因为...
2019-01-28 12:40:52
188
原创 code forces 529#div3 c
好久没敲过代码了,今天补一道简单的思维题来练练手题意就是给你一个数n为你是否可以用k个2的次幂的和组成这个数n比如 n=9,k=4 那么答案就是用1 2 2 4 这四个2的次幂来组成9思路 对于这种简单的数据拆分的问题在数据量不大的情况下是可以逐个模拟的所以这道题的思路就是:建立一个k个单位的数组,每个数组元素都设定初始值为1,那么让这k个元素依次以2的幂的形式来累加,看看最后是否可...
2019-01-12 12:13:12
166
原创 codeforces 529div3 problem D
题意是给你一个有向环,让你根据给你的信息求出这个环的序列,给你的信息是这个节点的下面的两个节点思路:首先应该想到是搜索的方法,在深搜过程中,传递一个当前的节点,和祖宗节点,祖宗节点的作用是确保当前节点的下一个节点也在祖宗节点的后连个节点中,然后就是确保有向,这个我用的是path数组,来维护有向关系,如果dfs返回true,就标记当前孩子节点是由当前节点传递而来。代码:(如果被hack,我再...
2018-12-28 09:37:15
132
原创 cf 529div3 A Repeating Cipher
Polycarp loves ciphers. He has invented his own cipher called repeating.Repeating cipher is used for strings. To encrypt the string s=s1s2…sms=s1s2…sm (1≤m≤101≤m≤10), Polycarp uses the following alg...
2018-12-28 09:29:59
256
原创 hdu3085 双向bfs
题意就是给你一个图,图里'.'表示可走,’x'表示墙,‘z'表示怪物,怪物每秒可以向外分裂两个单位,现在你和你的女朋友被困在这个地图里,你每秒可以移动三个单位,你女朋友每秒可以移动一个单位,每一秒,怪物先分裂,然后你们才开始移动,问:你们是否可以在被鬼怪抓到前,相遇?思路:双向bfs 一个广搜男生的路线,另一个广搜女生的路线,对于男生每秒可以移动三个单位意思是最多移动三个单位,哎,我当初就是这...
2018-12-19 08:36:06
196
原创 ZOJ2477 IDA*搜索进阶
问题大意就是给你一个魔方,让你在五步之内还原这个魔方,这个魔方只能让每个面进行顺时针或者逆时针操作,问能否在五步内解决战斗,如果可以,请输出每一步转动的面,以及是逆时针还是顺时针。分析:对于这个问题,核心在于如何魔方的转动,以及预估函数的判断; 关于预估函数,我的观点是当你想出正确的模拟转动过程后这个预估函数也就很好写了,所以先对魔方转动模拟的分析:首先可以知道每转动一次都会有20个方块改变...
2018-12-11 23:08:48
315
原创 hdu1560 IDA* 进阶搜索
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1560题意大致就是:给你几个字符序列,然后问你一个最短的序列的长度:这个序列要可以组成那几个字符序列思路:我一开始想的是双拓扑排序来构建优先关系,但后来失败了。 这道题的思路其实可以理解为一种模拟,假设这里有一个长度为deep的区间,(deep为之前序列的最长的长度)那么...
2018-12-04 15:49:37
152
原创 cf 1077c 二分
题意大致就是给你一个数组,让你移除几个数使得这个数组成为好数组,好数组定义是其中一个数等于剩下数的和因为这道题被hack,导致cf又扣了10分,
2018-12-02 12:03:07
184
原创 hdu3533 进阶搜索 bfs ESCAPE
题意就是在一个m*n的地图上,有k个堡垒,每个堡垒都会想一个固定的方向射箭,现在问你能否在给定的体力下从(0,0)走到(m,n),分析:其实这题的难点在于如何判定你当前走到的点是否有箭,一开始我想的是预处理,在输入每一个堡垒时,就对它的箭的路线进行标记,但是后来发现这样很难对两个箭相遇时处理,于是就换成了当你走到某一格时,去四个方向找堡垒看看它是否有射向那个点的键以及能否射中。这个代码一开...
2018-12-02 10:59:19
119
原创 清华大学 上机复试 成绩排序 简单排序
赛题网站:https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1?tpId=40&tqId=21333&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking思路:就是简单的用两个自定义比较函数,还有一点就是输入是多...
2018-11-27 21:12:52
231
原创 hdu2181 哈密顿绕行世界问题 水题 dfs深搜枚举
本身就是一个简单的深搜枚举问题,这里主要是提醒自己关于递归函数关于递归次数的理解自己脑抽了一直没注意到这个问题,连样例都没过。最后发现问题。代码:#include<iostream>#include<cstdio>#include<stack>#include<vector>#include<cstdlib>#in...
2018-11-27 20:55:03
149
原创 八数码 哈希表链表法
#include<bits/stdc++.h>using namespace std;typedef int State[9];const int maxstate = 1e6;State st[maxstate], goal;int dist[maxstate];const int dx[4] = { -1,1,0,0 };//用来控制x坐标的移动const int...
2018-11-27 14:13:15
373
原创 HDU3567 进阶搜索 IDA*算法 八数码【经典】
题意是给你两个八数码,让你输出从第一个八数码到第二个八数码的最短路径,且要求该路径也是最短路径下的字典序最小的路径。思路:我一开始以为只是简单的在结构体判定一下,让其按照字典序最小的顺序去寻路,后来发现这样做的后果是路径不是最小,嗯。于是就上网查博客,然后就学会了A*算法的升级版IDA A*算法,在这里简单的说一下也加深一下自己的印象:ida算法是A*算法的进化版,它舍弃了a*算法的空间消耗,...
2018-11-23 12:15:21
218
原创 关于优先队列重载符号的一点总结
我到现在仍然对优先队列的重载不明白,刚刚看了一个博主的文章,豁然开朗。之所以在以结构体为元素的优先队列进行重载时bool operator <(const node b)const{ return h>b.h;} 这样做的原因解释如下:因为这个重载操作符的意思是如果h>b.h成立,那么就证明当前的队列首部的那个节点记为a吧,证明a<b成立,因为优先...
2018-11-21 18:15:49
371
原创 hdu1043 A*算法 八数码问题
题意大致就是让你复原一个八数码拼图,输出具体路径思路:这里使用的是A*算法,A*算法可能比较陌生,迪杰斯克拉法求最短路相比大家都比较熟悉,A*算法就是他的进化,或者说dij算法是A*算法中把预估函数看为0得到的算法,A*算法的主体是一个路径计算函数:f=g+h,其中g表示的从起始点到某一点的耗费距离,h则表示的是从当前点到目标点的预估耗费,一般在搜图中使用曼哈顿距离,而在本题中则是计算八数...
2018-11-21 12:47:11
257
原创 hdu1043 双向bfs+康拓展开【经典】
题意大致就是给你一个3X3的矩阵,你要把矩阵转换成12345678的形式,在矩阵中是有一个空缺处可以供你移动滑块的,问你是否可以把给你的矩阵转换成12345678的形式,算了题意自己去看吧,有图更加直接思路:这里主要考虑这几个方面:第一个如何判断经过一定转换的矩阵是规范矩阵?这里就用到了康拓展开,通过康拓展开来把当前的矩阵转换为一个数值,(哈希的思想)然后去参考是否和规范矩阵的康拓展卡的哈希值...
2018-11-15 20:12:06
217
原创 poj 2485 最小生成树 Prim算法 模板
嗯,没错是纯模板,只要会模板就能ac的,在这里还是讲一下模板的意思吧:大致就是现在起始点附近搜距离他最近的点v1,然后再以v1为点去搜距离v1最近的点,且之前都过的点不能再搜了,不明白的就去手画一下过程吧。代码:#include<cstdio>#include<cstring>#include<algorithm>using namespa...
2018-11-13 13:19:51
160
原创 最小生成树-HDU1233 克鲁斯卡尔算法 模板
题意就是给你一个图,然后算这个图衍生的最小生成树简直就是模板题代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=110;const int maxm=5e3...
2018-11-13 13:15:56
184
原创 HDU1160 胖老鼠的速度 dp lis的活用,玄学改bug
题意大致就是:求出一个最长的重量递增,速度递减的序列,并记录路径,这道题本身并不难,只是lis的活用,难的是调bug!!!!,我改了两天,怎末改都是WA,直到刚刚,我从g++换成了c++,就ac了,哭。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring...
2018-11-06 21:42:03
254
原创 数据结构作业 哈夫曼树
#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;set<int>st;int Fre[10000];typedef struct{ int weight; int parent, lchild, rchild;}HTnode,*Huffmantree;...
2018-11-04 21:54:31
330
原创 hdu 1257
思路:感觉这题就是模拟啊!!不过鉴于是在kuangbin的dp专题,索性就用dp来做吧。这里dp[i]表示第i枚导弹是第几个系统代码:/* POJ2533 Longest Ordered Subsequence */ #include <iostream> using namespace std; const int N ...
2018-10-28 21:22:23
217
原创 hdu1176 kuangbin dp专题
思路:对于dp之类的题来说最重要的就是转移方程的建立吧,在这道题中我们可以得知人要想到达x点,他只能从x+1处,x-1处或者x处原地不动来到达,那么转移方程也就同样建立起来,唯一需要注意的一点大概就是对于0和10这两个临界点的处理。代码:#include<cstdio>#include<algorithm>#include<cstring>us...
2018-10-28 20:53:59
135
原创 hdu1069 经典dp例题 monkey and Banana
思路:这道题的核心是对于状态方程的设立,在这里dp[i]表示的在已经堆好的砖块下面再垫上第i块石头的高度,建立完dp后,再找出所有dp里面的最大值。需要注意的是一个砖头可以产生6种状态。然后其中一个细节是需要用sort自定义排序,顺序是长度最小的在前面,长度相同则宽度小的在前,这样处理的好处是方便你在建立dp的过程中优化,具体的优化细节可以在代码中看;代码:#include<cst...
2018-10-28 17:53:24
128
原创 hdu1024 动态规划
题意是给你个数字序列,现在让你把这个序列分成m个连续的子序列,且要求这m个子序列的累加和最大。思路:这道题的题意可以理解为问在序列为末尾时,把序列分为m个子序列这个状态时的最大累加和,那么可以得出这个状态应该是由上一个状态转移得来:(因为dp[i][j]表示数到第j个字符时,前j个数字序列被分为i组时的最大值)dp【i][j]=max(dp[i-1][j]+num[j],dp[i][j-1]+...
2018-10-25 23:12:16
667
4
原创 hdu5638 拓扑入门
题意就是给你一个有向无环图,并且告诉你:你可以任意删去k条边,问在删去k条边后字典序最小的拓扑排序的和也就是如果最后得出的拓扑排序是4 3 2 1 5,那么就应该输出4*1+3*2+2*3+1*4+5*5结果,最后结果要对1e9+7取模思路:其实就是把普通的入度为1进队改为入队<=k 入队。感觉这题数据有点水,貌似不需要判断重边。代码:#include<cstdio&...
2018-10-23 22:21:37
178
原创 hdu 4857 反向拓扑模板题,入门
之前写过的博客,今天回头看时,发现格式好乱,重新写一下。 ---------------------------------------分析首先先处理特殊关系,对于有要求的数字,在他们俩之间建立一条边,a->b 同时b的入度++,表示b的限制条件增加1.那么在处理时,用一个优先队列按照greater的顺序push,(push入度为0)那么这道题就得到解决了,然后在这道题中是行...
2018-10-23 18:25:14
104
原创 HDu 6153 a secret 扩展KMP模板
题意大致就是给你两个串,然后让你求第二个串的各个后缀在第一个串的出现次数,然后让次数乘该后缀的长度累加输出,最后结果是对1e9+7取模思路:在讲具体思路之前,如果对扩展kmp不了解或者没听说过的话,建议先看看这个博客https://blog.csdn.net/dyx404514/article/details/41831947回归正题:我们首先要对这个问题进行转换,因为在我所学过的算法中大...
2018-10-23 16:26:57
150
原创 hdu 2087 KMP模板题 入门
问在父文本中子文本出现多少次,不能算重合部分,也就是说aaaaaa,aa只出现三次思路:kmp!!!!!!,其实这道题用BF算法反而更快(滑稽)就是不在kmp函数中调用getnext函数;代码#include<iostream>#include<string>#include<cstring>using namespace std;co...
2018-10-20 17:10:06
204
原创 hdu1687 oulipo KMP模板入门
题意就是很直接的KMP模板题的要求,先给你一个子文本和一个文本,然后问你这个子文本在文本中出现几次,注意AZA,在AZAZAZA 中是算三次。代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;con...
2018-10-20 16:53:19
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人