- 博客(65)
- 收藏
- 关注
原创 Python的不定长参数
# pos_args是位置参数, keyword_args是关键词参数,位置参数定义必须在关键词参数之前def func(*pos_args, **keyword_args): # "pos_args (1, 2, 3)" print("pos_args", pos_args) # "keyword_args {'A':'a', 'B':'b', 'C':'c'}" print("keyword_args", keyword_args)def func2(D, E,.
2022-04-19 11:22:14
1278
原创 Mybatis日志篇
整个package的类图如上,用工厂模式构造Log类。实现基于各个日志框架的Log类,用适配器模式,实现类内部持有各个日志框架的Logger类,并重写Log接口的各个方法。适配器模式:接口A,适配器B,既有对象C。过程就是,B通过持有C的实例,并将C中的既有方法“翻译”成A中定义的方法,以实现接口A。Log4jImpl就是持有log4j包中的Logger对象,并将Logger对象的既有方法“适配”成满足Log接口的方法,达到实现Log接口的目的。通过Adapter(适配器)屏...
2021-10-26 18:30:26
204
原创 Leetcode-1515 服务中心的最佳位置
题目大意就是,给定一个点集S,找到一个点A,使得A到S中所有点的欧几里得距离和最小min_distance_sum,求min_distance_sum。本质就是个优化问题。目标函数如下,求x,y求偏导,梯度下降,更新x, y;,alpha是学习率。同时为了防止振荡,在振荡发生时,调小学习率。终止条件是更新后的距离和和更新前比较小于题目给定阈值。from typing import Listclass Solution: def getMinDistS
2021-10-25 22:14:39
3575
原创 idea maven工程编译正常,inline hint提示找不到jar的问题
标题有点绕,问题的现象就是项目能够正常编译,但idea提示某些package找不到;1.检查了maven仓库配置,确认没问题;2.reimport所有依赖;没有解决问题,Google了一下,找到一个链接解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题 / 张生荣上述博客里的手段并没有解决我的问题,但让我注意到了一个叫.iml的文件。关于它的作用可以看IDEA中的.iml文件和.idea文件夹作用和意义_LZHHuo的博客-CSDN博客_iml文件检查..
2021-10-19 21:15:59
212
原创 微信桌面端多开
步骤安装ProcessExplorer, 下载地址见https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer; 启动Wechat客户端,并登录; 在ProcessExplorer中找到微信WeChat app,右键 -> show properties,找到两个Mutant,分别是 WeChat_GlobalConfig_Multi_Process_Mutex 和 WeChat_App_Instance_I
2021-03-29 20:03:54
371
原创 图像加法
加法cv2.imread读入图像后会将其转化为numpy的ndarray,cv2和numpy都有各自的加法运算;库 numpy cv2 举例 1+255=1 1+255=255 说明 因为读入的ndarray 其dtype为uint8,运算值产出后会溢出,结果等于取模; cv2进行饱和运算,运算结果溢出将保持在uint的最大值255; 加权加法c = cv2.addWeight(a, alpha, b, beta, d)...
2021-01-09 21:59:47
403
3
原创 图像平滑与滤波
名词解释图像噪声:图像在产生、传输等过程中被其他因素干扰或由于某些原因出现数据丢失,出现的某些像素点明显异于周围像素点的现象,称作图像噪声;图像平滑:为了降低噪声对图像质量带来的影响,对图像进行区域增强的算法,“平滑”可以理解为降低噪点与周围正常点差异,抚平像素值的显著跃迁;人工增噪import cv2import numpy as npimport matplotlib.pyplot as pltdef read_image(path, mode): image = c
2021-01-09 21:26:43
606
原创 组合总和 II
题意给定数组candidates及数字target,找出所有能和为target的组合方式。hint:每个组合中candidate中的元素只能使用一次,ex. candidates中有两个1,那么每个组合方式中1最多只能出现两次;candidatas中可能包含重复元素;重复的组合方式保留其一即可;解法对于这种没有明确思路,又要找出所有解法的题目,显然搜索是可以解决的。class Solution: def __init__(self): self.
2020-12-27 16:37:57
212
2
原创 51nod 1326
原题链接 road(0,n-1)=road(0, n-1的邻接点x)+edge(x,n-1)*2*k 构成!选取mod,mod=min( edge(x, n-1) )。 SPFA跑一遍,求出G[u][d], G[u][d]表示从0出发到达u的路径长度%mod=d的最短路径。 跑完之后, 枚举n-1的邻接点,再枚举d,看能否构造出T。#include<set>#include<map>#
2017-10-17 17:55:22
257
原创 51nod 1490
51nod 1490多重游戏 其实从单个游戏来看,把所有串插到Trie树里,搜一遍,寻找必胜必败态,判先手必胜否,问题就解决了。 但题目要求进行K次游戏,那么每次游戏最优策略就不一定是求胜,因为胜者要让出先手权。 比如,A可以通过先手来实现前K-1次游戏的失败,在第K次游戏时获胜。 所以除了先手可胜搜索,还要进行先手可败搜索。#include<set>#include<map>#incl
2017-10-09 17:18:44
306
原创 2017 ACM西安网络赛 G题 Xor
题意: 给出一棵树,每个节点有个val,q个询问。 询问格式:u, v, k, 从u到v的路径, 每个k个点取一个,求所有点的val值异或和。 如果没有隔k个取1个的限制的话,那么做法是很显然的,dfs一遍,求出所有点到根的异或和,ans=xor(u, root)^xor(v, root)^(lca(u, v),root)。 现在有步长的限制,取m=sqrt(n), 1)预处理出步长k<=
2017-09-18 21:16:38
679
原创 hdu 6078(1012)
1012(hdu 6078) Wavel Sequence题意:给出两个序列,找出所有公共子序列,并使得该公共子序列呈波浪状,即a1a3a5 分析:很显然是个dp的题,类似最长公共子序列的感觉。定义fi,j,k 定为以a[i],b[j]结尾的子序列,且峰谷状态为k,k=0表示谷态,k=1表示峰态。fi,j,k=Σf1~i-1,1~j-1,1-k定义gi,j
2017-08-04 10:47:37
559
原创 2017 Multi-University Training Contest - Team 1
1001 题意: 给定m,求最大的k满足10^k<2^m分析: 显然kmax=log10(2^m-1), 但m太大,直接计算2^m-1不现实,log10(2^m)计算很方便, Log10 (2^m)=m*log10(2),我们发现只有当x(x=2^m)末位为0时,log10(2^m)!=log10(2^m-1),但x作为2的幂,末位必不为0,所以log10(2^m)=log10(2^m-1)
2017-07-29 00:07:17
265
原创 51nod 1307
题意:给出一棵树,每条边上都有一个权值,每个点也有一个权值,当一条边的子树所有节点权值和超过这条边的权值时,这条边会断开。边按序给出,问最多能有几条边。 每条边的可承受重量可以看成其下端点的可承受重量。 数据比较弱,首先可以按题意模拟,当加入一个新点时,向上不断查找父节点,查看新点到根节点的这条路径是否有边会超限断开。#include<cstdio>#include<cstring>#inc
2017-07-05 23:57:18
262
原创 插头dp
最近学习了基于连通性的动态规划,也就是插头dp,刷了一些入门题。 插头dp主要解决的问题是,给定矩阵,矩阵中有些点不能到达,有些点可以到达,问经过所有可达到的点,且每个点只经过一次的回路有多少种。 学习资料有很多,相关的博客也不少,罗列一些: cdq论文 cyendra博客 个人认为上面那篇博客讲的十分详细,值得一看。——————————————-分割线—————————————————
2017-07-03 22:03:54
846
原创 51nod 1624
题意:给定3*n的矩阵,求模P下的路径权值总和最大值。 每次移动都只能向右或者向下走,那么一条完整的路径必然是由 (1,1)->(1,L)->(2,L)->(2,R)->(3,R)->(3,n)。 先预处理出road[i],road[i]代表从(2,1)->(2,i)->(3,i)->(3,n)的路径权值总和和,并插入multiset。 再枚举L:1~n,每次对于L,计算sum[L]:(1,
2017-06-02 01:11:31
305
原创 NBU 1763
官方题解还没放出,这里放上我自己的代码仅供参考。 递推公式很简单,观察样例可以得出 A[i][j]=(A[i-1][j-1]+A[i-1][j])/2),但,题目中要求每个数都保留前八位小数,这里的保留前八位并不是指在输出时保留八位小数,而是在运算过程中保留,即递推计算出每个值我们只能取八位小数。 如果直接用double存储值,在输出时截取八位小数会出现误差,input中有数据专门卡这一点。
2017-05-17 23:31:22
544
原创 HDU 6031(CCPC女生赛1009)
题目大意是给一颗树,n个点,1为根,m次询问,每次询问给出两个集合A,B。求集合A和集合B中的点的深度最大的LCA。 大致思路是深搜,处理出每个点的父节点,倍增法处理出anc数组。 每次询问时,二分目标深度,找出集合A中每个点在目标深度的祖先,并插入集合S,再找出集合B中每个点在目标深度的祖先,如果祖先在集合S中,说明这个深度A,B存在公共祖先。 T不大,sumK也不大,可以水过去。#prag
2017-05-07 22:16:31
1162
原创 ZOJ - 3949 Edge to the Root
Edge to the Root题意是给出一个棵树,每条边权都为1,要求在点1和点x之间连一条边,使得连边之后,点1到所有点的路径长度之和最小。 输出最小长度之和。 显然对于一棵树,添一条边之后,形成了一个环,一个在1-x的路径上的环,这个环的形成只对环上的点以及他们的子树上的点的距离产生了影响。 更准确地说,是对环的中点一下的点及子树产生了影响。 cnt数组记录每个点的子树大小+1(加上自己
2017-04-16 20:52:44
958
原创 UVALive - 4380 Javanese Cryptoanalysis
Uvalive 4380题意是给出一段密文,要求找出找一种解密方式,使得解密后的文本,任意一个单词都是元辅音间隔形成的。 数据输入比较恶心,单词之间可以是空格间隔,也可以是换行符间隔,因此必须读到一个空的行才表示一个TestCase结束。 输入的文本,处理出所有单词相邻字母的情况,存储在一个26*26的二维数组中,G[u][v]表示’A’+u与’A’+v在密文中相邻。 五重循环,枚举原文中的五
2017-04-16 20:28:05
312
原创 Uva 10600
给出一个无向图,要求求出最小的两个生成树。 难么即是求出最小生成树和次小生成树。 次小生成树的求解过程是,先求解最小生成树,再在树上深搜,处理出maxcost[u][v],表示树上u到v的路径上最大的边。然后枚举不在树上的边(i,j),去替换树上的i到j最大的边,求最小即是次小生成树。 #include<bits/stdc++.h>using namespace std;#define d
2017-03-22 16:40:24
435
原创 LA 3887
给出一个无向简单图,要求求出最大边减最小边的差值最小生成树。 鉴于n<=100,那么枚举最小边,并用Kruskal算法构造最小瓶颈树即可。因为Kruskal算法是在构造生成树时保证最大边最小。复杂度O(n*m)。#include<bits/stdc++.h>using namespace std;#define debug puts("Infinity is awesome!")#defin
2017-03-22 15:32:47
419
原创 HDU 4915
HDU 4915贪心,left_min[i]记录在保证1~i合法的情况下1~i最少的‘(’个数,left_max[i]记录在保证1~i合法的情况下1~i最多的‘(’个数,right_min[i]记录在保证(i+1)~n合法的情况下(i+1)~n最少的‘(’个数,right_max[i]记录在保证(i+1)~n合法的情况下(i+1)~n最多的‘(’个数。因为左括号是向右匹配的,所以向右贪心,而右括号是
2017-03-21 18:04:05
265
原创 分桶法
分桶法与平方分割给定一个序列,并询问很多个区间,要求我们求该区间的最值,一般采用的都是ST算法,这边提供一个新的方法——分桶法。相比较ST算法,效率可能没有那么高,ST算法的查询效率是O(lg(n)),而分桶法的效率在O(sqrt(n)),n的平方根,但对于一些数据规模不大的题目,这样的效率已经足够。 那么怎么实现? 设序列有n个元素,我们将整个序列分成sqrt(n)桶,每个桶内有sqrt(n)
2017-03-16 23:48:06
6159
原创 Codeforces 785E
#Codeforces 785E(Round404 div2)题意是初始有一个1,2,3,4....n的序列A,现在有q个操作,每次操作给出两个数L和R,表示交换A[L]和A[R],每次操作后输出当前逆序数的数目。 逆序数的定义是对于两个数A[i],A[j],有A[i]>A[j]且i那么采取分块法,将n个数,每2048个分成一组,对于每一组内,用树状数组维护。 当交换时,显然,
2017-03-16 23:14:48
988
原创 LA 4489
LA 4489题意是女朋友生日到了,你要去给她买礼物(写题也被虐,气)。每个礼物有价格,和女友得到礼物的快乐值。其中有一些礼物是必须买的,否则女朋友会不高兴。 你手上有两张代金券,面值分别为V1,V2,除此,你还有一次免费挑选礼物的机会。对于代金券,你可以拿不价格总和超过面值的礼物,但两张券只能使用,即你必须拿两次,一次不超过V1,一次不超过V2,而不能说一次性拿不超过V1+V2的礼物。 求女朋
2017-03-14 23:32:16
293
原创 Uva 10972
Uva 10972题意是给一个无向图,要求将所有边改为有向边,求还需要添加多少有向边才能使其强连通。 寻找边双联通分量,先深搜一次,标记所有桥,再深搜一次,不经过桥,找出所有边双联通分量,之后建新图,把一个联通分量看做一个点,计算所有点的度数,度数小于2的点需要将度数提升至2才能保证强连通。因此ans=(∑(2-deg[i])+1)/2,(deg[i]<2)。 当边双联通分量只有一个时,原图已经
2017-03-14 17:24:54
440
原创 LA 3514
LA 3514题意是给一个无向图,若它是仙人掌,则求出它有多少生成子图(包括自身)是仙人掌,否则输出0。仙人掌被定义为每条边最多在一个简单回路上的连通无向图。 关于Cactus问题,这里有篇08年国家集训队周冬的论文,比较详细地总结了所有的仙人掌问题。 以下是AC代码:#include<vector>#include<cstdio>#include<cstring>#include<ios
2017-03-14 13:40:31
765
原创 LA 4487
LA 4487题意是有n个数,Q个操作,你并不知道这n个数的具体值。操作有三种: 1)I p v,告诉你第p个数值为v 2)I p q v,告诉你第p个数和第q个数的异或值为v 3)Q k a1…ak,询问a1…ak这k个数的异或值 考虑并查集,par[x]保存x的父节点,v[x]保存x和par[x]的异或值。 I p q v时,合并p和q,并在寻根时路径压缩,更新父节点以及和父节点的异或
2017-03-12 22:33:18
437
原创 HDU 5303
HDU 5303 题意是在一个圆上,有n颗苹果树,相对起点的顺时针距离为xi,每棵树上有ai个苹果。现在带上一个容量为K的篮子,从起点出发,问将所有苹果收回来至少要花多少时间? 显然,从起点出发,不论从从左或是右,在不跨过终点m时,摘到K个苹果后最佳的路径是原路返回。跨过了中点m,那么最佳路径是走一圈回到起点。显然,我们至多只会跨过m一次,因为跨过中点是不得已为之,走一圈是最长路径。 那么
2017-03-10 16:17:15
328
原创 LA 3989
Stable Marriage Problem and Propose-and-reject algorithm有n位男士,n位女士,每个人对于每个异性都有一个排序,表示对他(她)的喜欢程度。现在要求他们两两(异性)组成稳定的关系,对于稳定的关系定义如下,不存在任何一对男女,他们对对方的喜欢程度都大于他们当前的伴侣。 以上,便是Stable Marriage Problem的定义。 对于稳定婚姻
2017-03-08 01:34:47
325
原创 HDU 5316
HDU 5316题意是给一个数列,有两种操作,一是询问[L,R]的最大子序列和,二是改变某个位置的值。单点修改,区间查询,很显然的线段树。关键在于,询问时的最大子序列要求相邻元素的在原序列中的位置奇偶性不同。 序列的奇偶性根据首位和末位的奇偶性最多就四种情况,奇奇,偶偶,奇偶,偶奇。 那么线段树中的每个节点保存这四种序列的最大和即可,并注意合并。 #include<bits/stdc++.h>
2017-03-07 14:48:58
433
转载 LA 4043
LA 4043最佳完美匹配,懒得写东西。 这个博主写得极好-> http://www.cnblogs.com/wenruo/p/5264235.html 直接套模板即可。
2017-03-04 23:33:09
435
原创 Uva 11354
Uva 11354题意是给出n个点,m条边的图,并有q个询问(s,t),输出s到t的最右路径下的最大边权值。 用Kruskal先求出最小瓶颈生成树,并深搜将其转化为有根树,并在同时记录下每个点的深度和父结点。计算出anc[i][j]以及maxcost[i][j],分别表示i的第2^j级祖先,i到其第2^j级祖先的最长边长度,j=0时表示父节点。 那么存在递推关系anc[i][j]=anc[anc
2017-03-03 00:24:29
699
原创 LA 5713
LA 5713要求A/B最大,那我们先保证B最小,然后枚举A。先求出最小生成树,并在树上深搜,记录下maxcost[u][v],即树上点u到点v之间的最长的边。 再枚举A,即枚举法术边的两个端点i和j,删去树中i到j路径上的最长边,加入用法术边(i,j)。此时最小生成树权值变成了sum-maxcost[i][j]。 求出min((W[i]+W[j])/(sum-maxcost[i][j]))即可
2017-03-02 20:03:45
685
原创 HDU 5308
HDU 5308手工一个个算过去,发现 n=12时,我们可以通过(x+x+x+x)/x*(x+x+x+x+x+x)/x=24,来得到24点。 n=13时,构造(x+x+x)/x*(x+x+x+x +x+x+x+x)/x=24,来得到24点。 当n>13时, 1)n为奇数,我们可以通过一加一减多余的x来使x只剩13个,并应用上方n=13时的式子来得到24点; 2)n为偶数,同理,一加一减消去
2017-03-02 14:52:29
289
原创 LA 5237
LA 5237题意是,折纸,每次都从左边向右边折,折n次,最后展开,要求输出折痕。 可以发现,i次的折痕称为Zi,Zi是由Z(i-1)加上Z(i-1)相对折痕终点顺时针旋转90度两部分构成的。那么我们记录下所有的方向角度, int acnt=0; ang[acnt++]=0, ang[acnt++]=1; for(int i=2;i<=n;i++){ int s=
2017-03-01 19:56:58
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人