题目链接 题意:给你一个图以及起点和终点,求起点到终点的第k短路的大小。 思路:先用迪杰斯特拉求出每个点到终点的最短路,然后用A*算法,令f(x)为每点到终点的距离,将f(x)附加到每条边的边权上,再利用优先队列对最小的进行扩展,直接暴力搜相邻边,则第k个从优先队列中出来的就是正解。思路很明了,代码 Read More
posted @ 2019-08-03 18:55 Ldler Views(344) Comments(0) Diggs(0) Edit
看书情况:109~124页 刷题数:6 今天把上两次比赛的该补的题都补了,补题有博客,还写了两道书上例题的博客。 书上例题 BFS思维https://www.cnblogs.com/2462478392Lee/p/11291434.html 二分+双向DFShttps://www.cnblogs.c Read More
posted @ 2019-08-02 22:29 Ldler Views(102) Comments(0) Diggs(0) Edit
题目链接 题意:就是求每个点到最近的1的距离,但距离是|xi-x|+|yi-y|。 思路:将每个是1的点BFS全图,想到了就是很水的BFS。 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #includ Read More
posted @ 2019-08-02 21:59 Ldler Views(297) Comments(0) Diggs(0) Edit
题目链接 题意:给你n个礼物重量,给你一个M力量,看你一次性搬动不超过M的礼物重量。 思路:看似背包,但M太大。所以要用DFS,但n也有45,所以考虑双向DFS先搜前半部分满足情况的所有重量,然后去重,再往后半部分搜索,并二分找答案。 #include<cstdio> #include<cstrin Read More
posted @ 2019-08-02 21:49 Ldler Views(214) Comments(0) Diggs(0) Edit
题目链接 题意: 思路:只要求出矩阵{{a,b}{1,0}}的n-1次方就能得出答案。学习了网上的十倍快速幂https://blog.csdn.net/To_the_beginning/article/details/88367974。 #include<cstdio> #include<cstri Read More
posted @ 2019-08-02 19:10 Ldler Views(145) Comments(0) Diggs(0) Edit
题目链接 题意:每次给出两个字母 和 只有这两个字母的原字符串的子序列,最后让你输出原字符串。 思路:先将字符转换为hash值,然后再转换成图,就是一个拓扑排序了,然后满足不了的情况有两种,一个是构造不了给出的n字符串大小,还有就是字母去重后多了。 #include<cstdio> #include Read More
posted @ 2019-08-02 19:02 Ldler Views(186) Comments(0) Diggs(0) Edit
题目链接 题意:n个数,q次查询,查询[l , r] 内, | a[i] - p | 第k大的数 思路:主席树维护下权值大小,二分答案,查询区间[p - mid, p + mid] 的个数 #include<cstdio> #include<cstring> #include<algorithm> Read More
posted @ 2019-08-01 22:07 Ldler Views(187) Comments(0) Diggs(0) Edit
上午看书总结 今天上午我看了拓扑排序,DFS+剪枝,相当于回顾了一下,写了三个比较好的例题。算法竞赛指南93~109页。 1.状态压缩+拓扑排序 https://www.cnblogs.com/2462478392Lee/p/11285039.html 2.DFS+剪枝 https://www.cn Read More
posted @ 2019-08-01 22:07 Ldler Views(136) Comments(0) Diggs(0) Edit
题目链接 题意:多组输入三角形各个顶点坐标p1,p2,p3,在三角形中任取一点p,计算 期望E=max(S(p,p1,p2),max(S(p,p1,p3),S(p,p2,p3))); 思路:用随机数找规律,找到了篇大佬的博客https://blog.csdn.net/weixin_43350051/ Read More
posted @ 2019-08-01 22:05 Ldler Views(173) Comments(0) Diggs(0) Edit
题目链接 题意:给你两个字符串都是数字,让你求第一个字符串的子序列中大于第二个字符串的个数。 思路:dp[i][j] 表示 str1的前i个,匹配 str2的前 j 个的种类数,那么 if(s[i] == t[j]) dp[i][j] = dp[i -1][j] + dp[i - 1][j - 1] Read More
posted @ 2019-08-01 21:33 Ldler Views(119) Comments(0) Diggs(0) Edit