- 博客(120)
- 资源 (1)
- 收藏
- 关注

原创 k短路 k shortest path 入门
K短路求解算法常用的有djstra + A* 和 Yen算法。本文主要讲解djstra + A* 先了解下A*中的估值函数f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n),显然我们可以通过记录到达某一点的花费。即如下节点struct node { int h,g,v;}不断更新从某一点更新,将其压入优先队列之中。每取出一个点时需保证其...
2018-09-11 21:23:10
2226
原创 使用docker部署jupyter notebook并远程访问
目录pull 镜像(推荐使用官方镜像)得到用户的UID与GID(注意是你要映射文件的所属用户)注意使用上个命令获取的uid gid否则可能会遇到Permission deniedpull 镜像(推荐使用官方镜像)docker pull jupyter/datascience-notebook 得到用户的UID与GID(注意是你要映射文件的所属用户)echo $(id username)...
2019-10-10 12:50:45
1065
原创 Rebuilding-Roads-POJ-1947
Rebuilding Roads POJ - 1947Last Edited: May 27, 2019 7:32 PMTags: dynamic programming,poj设定dp[u][j]为以u为根大小为j的最小值注意dp[u][1] 为1对于每个节点若考虑去除某个子节点显然其已知的dp[u][j]应加一对于保留某子节点的情况需考虑当前为j的情况以及其子节点取k个的情况易得...
2019-05-27 19:37:46
218
原创 Interesting-Array-CodeForces-482B
又是二进制相关的问题注意如下性质val[rt] = K 者定有val[rt<<1] & val[rt<<1|1] 为K这是判断是否合法的依据一开始想的做法是动态插入,事实上会遇到很多难以处理的问题看了题解知道正解是将所有约束条件插入,再查询是否合法显然可以知道对于区间[L,R] 的二进制每一位至少为K的二进制,易得这里是取到了区间最小的解注意使用laz...
2019-04-09 22:18:46
194
原创 codeforces-Same-Sum-Blocks-Hard-1141F1-1142F2
没想到贪心,好菜。即是n^2枚举从坐标小往前枚举只要不重合就可以#include<cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <queue>#include <set>#include <map>...
2019-03-27 19:10:19
202
原创 Palindrome-subsequence-HDU-4632
好菜这么简单的题都想不出来dp式代表i,j内回文串字数最多的次数dp[i][j] = dp[i+1][j] + dp[i][j-1] - dp[i+1][j-1]及是有左端右端减去中间重合部分如果i,j相等说明可以与[i+1,j-1]中的字符串组合成新的子串,并且str[i] 与str[j]也能组合成一个字符串#include<cstdio>#include <algo...
2019-03-26 20:55:00
175
原创 Common Subsequence HDU - 1159
模板 #include &lt;stdio.h&gt; #include&lt;string.h&gt; #include &lt;iostream&gt; using namespace std; int DP[1000][1000]; char s1[1000],s2[1000]; int main() { whi...
2019-03-13 16:43:31
133
原创 Connections in Galaxy War ZOJ - 3261
离线维护,逆序处理#include&lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;iostream&gt;#include &lt;algorithm&gt;#include &lt;cstdlib&gt;#include &lt;vector&gt;
2019-03-13 16:43:22
210
原创 Cyclic Nacklace HDU - 3746
循环节变种。使之成为循环 #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; const int MAX_N = 1000100; #define sci(num) scanf("%d",&amp;num) char str[MAX_N],ps[MAX_N]; int nxt[MA
2019-03-13 16:43:07
119
原创 Diablo III ZOJ - 3769
将多个物品化为一个物品的01背包,注意下组合即可,还有Hand武器如果只有一个也要加入。进行背包要按每种物品的个数从大到小#include &lt;bits/stdc++.h&gt;using namespace std;#define sci(num) scanf("%d",&amp;num)#define mem(a,b) memset(a,b,sizeof a)const in...
2019-03-13 16:42:47
195
原创 Fantasy of a Summation LightOJ - 1213
总共出现的个数为K∗NKK*N^{K}K∗NK 则每个数贡献为 K∗NK−1K*N^{K-1}K∗NK−1再加一加 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define...
2019-03-13 16:42:40
293
原创 Farey Sequence POJ - 2478
欧拉函数前缀合#include&lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;algorithm&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#de
2019-03-13 16:42:33
111
原创 FATE HDU - 2159
Last Edited: Feb 21, 2019 6:20 PMTags: dynamic programming,hdu,knapsack problem第一维是忍耐度,第二维是杀怪数量,每次枚举杀了几只#include&lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#defi...
2019-03-13 16:42:23
155
原创 Food Delivery ZOJ - 3469
通过dp的第三维记录在左端右端再分别枚举由子问题左端与右端来的情况#include &lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#define mem(a,b) memset(a,b,sizeof a)#define sci(num) scanf("%d",&amp;num...
2019-03-13 16:42:08
256
原创 Fruit Ninja ZOJ - 3638
将所有至少的个数和记为sum,对M-sum进行个数有限制的背包#include&lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld",&
2019-03-13 16:41:58
256
原创 GCD - Extreme (II) UVA - 11426
#include&lt;bits/stdc++.h&gt;using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define scl(num) scanf("%lld",&amp;num) #define mem(a,b)
2019-03-13 16:39:15
139
原创 Goldbach`s Conjecture LightOJ - 1259
打表得 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define scl(num) scanf("%lld",&amp
2019-03-13 16:39:07
229
原创 Halloween Costumes LightOJ - 1422
当c[e-1] = c[e] 时显然有dp[][e] = dp[][e-1]更新是更新当第k场舞会衣服与第e场衣服一致时,假设第k场衣服一直穿着 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num)...
2019-03-13 16:39:00
231
原创 Harmonic Number (II) LightOJ - 1245
类似因数分解对于所有下于sqrt(N)值i,有(N/(i+1), N/(i)]的所有数贡献的权值为i,而大于sqrt(N)的值仅有一次可以得到 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) sc...
2019-03-13 16:38:51
190
原创 Harmonic Number LightOJ - 1234
每隔64个打个表 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define scl(num) scanf("%lld",&amp;num) #defin
2019-03-13 16:38:34
149
原创 小希的迷宫 HDU - 1272
判空是否成树 #include &lt;bits/stdc++.h&gt; #define MAX_N 100010 #define INF 1&lt;&lt;28 using namespace std; bool cnt[MAX_N]; int edge,V; int u,v; int main() { while(scanf("%d%d",&amp;u,&
2019-03-13 16:38:26
190
原创 最大报销额 HDU - 1864
基本就是个背包,题意有误是每类物品限额#include&lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld",&amp;num)#d
2019-03-13 16:37:59
156
原创 hdu4489 The King’s Ups and Downs
题意求N个人高矮或矮高依次排列的个数思路不妨先排列好i个人显然第i+1个人可以插在中间任何一个位置,若在开头则要求i个人的排列是先上升,若在末尾则要求i个人最后一个人是下降得到的设DP[i][0] 为开头上升,DP[i][1]为开头下降。显然开头上升和末尾下降是对称的。同理开头下降和末尾上升是对称的。且DP[i][0] 和DP[i][1]应该相等。所以DP[i+1][0] = DP[j ...
2019-03-13 16:37:45
137
原创 Help Hanzo LightOJ - 1197
应为B-a是个在1e5 内所以预先打出1e5 内的素数对于2^31内的数若是合数一定有一个1e5 以内的素数 #include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define scl(...
2019-03-13 16:37:33
177
原创 History Grading UVA - 111
输入诡异#include&lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld",&amp;num)#define mem(a,b)
2019-03-13 16:37:02
151
原创 How Many Tables HDU - 1213
每次在不同集合相连减一#include &lt;bits/stdc++.h&gt; using namespace std; #define MAX_LENGTH 1005 int Unions[MAX_LENGTH]; void init_QucikUnion(int length){ for (int i = 0;i&lt;=length;i++){ Unions...
2019-03-13 16:36:47
86
原创 Human Gene Functions POJ - 1080
类似LCS匹配#include&lt;cstdio&gt;#include &lt;algorithm&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld&qu
2019-03-13 16:36:34
150
原创 Increasing Sequences POJ - 1239
dp1来枚举最后一位数最短长度dp2来最小的第一个数 #include&lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;algorithm&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d&
2019-03-13 16:36:24
331
原创 Is It A Tree? POJ - 1308
判断边数是否是点数-1 还有特例#include &lt;cstdio&gt;#include &lt;cstring&gt;using namespace std;#define sci(num) scanf("%d",&amp;num)#define mem(a,b) memset(a,b,sizeof a)const int MAX_N = 1000005;int F[M
2019-03-13 16:35:37
138
原创 Jury Compromise POJ - 1015
poj数据不够完善 for (int k = 1; k &lt;= N; k++){ for (int i = M - 1; i &gt;= 0; i--) { for (int j = 0; j &lt;= 2 * fix; j++) { if (DP[i][j] &g...
2019-03-13 16:35:29
124
原创 Large Division LightOJ - 1214
模拟一下就好 #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define fst first #define sec second #define sci(num) scanf(&quot;%d&quot;,&amp;amp;num) #define scl(num) scanf(&quot;%lld&quot;
2019-03-13 16:32:43
81
原创 Leading and Trailing LightOJ - 1282
求n^k的前三位和后三位后三位快速幂即可得到对于前三位a.bc * 10^t = n^klog_{10}{a.bc} + t = klog_{10|{n}所以log_{10}{a.bc} 是klog_{10|{n}的小数部分a.bc = 1000 * klog_{10|{n} 的整数部分 #include&amp;lt;bits/stdc++.h&amp;gt; using name...
2019-03-13 16:32:35
101
原创 Max Sum HDU - 1003
求最大子段和 及开始结束位置 #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; int main(){ int T,N; scanf(&quot;%d&quot;,&amp;amp;T); int number[100000]; for (int j = 1;j&amp;lt;=T;j++){
2019-03-13 16:32:29
167
原创 Least common multiple HDU - 3092
将N分解为素数的和。LCM太大,故使用对数保存lcm#include&lt;bits/stdc++.h&gt;using namespace std;#define first fst#define second sec#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld",&amp;
2019-03-13 16:32:13
143
原创 Maximum GCD UVA - 11827
应为N只有100 N^2 枚举即可#include&lt;bits/stdc++.h&gt; using namespace std; #define fst first #define sec second #define sci(num) scanf("%d",&amp;num) #define scl(num) scanf("%lld",&amp;num)
2019-03-13 16:32:03
153
原创 Multiplication Puzzle POJ - 1651
显然1,N是要会留下的dp[l][r] 代表消去l,r区间内的数所能获取的最小值枚举区间内每一个点 #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; using namespace std; #define fst first #define sec second #define ...
2019-03-13 16:31:49
249
原创 Mysterious Bacteria LightOJ - 1220
分解质因数,求每个数指数,指数的gcd即是最大的p#include&lt;bits/stdc++.h&gt;using namespace std;#define fst first#define sec second#define sci(num) scanf("%d",&amp;num)#define scl(num) scanf("%lld",&amp;n
2019-03-13 16:31:36
230
原创 Navigation Nightmare POJ - 1984
维护东西南北的差值,相当于维护两个并查集#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstdio&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;cstring&amp;gt;#define MAX_N 50010#define sci(num
2019-03-13 16:30:44
283
1
原创 Number Sequence HDU - 1711
数字版kmp#include &lt;bits/stdc++.h&gt;using namespace std;const int MAX_N = 1000100;const int MAX_M = 10010;#define sci(num) scanf("%d",&amp;num)int str[MAX_N],ps[MAX_M];int nxt[MAX_M];int lents...
2019-03-11 17:35:13
176
原创 Oulipo POJ - 3461
更改更新后的令j =nxt[j] 不能让j =0 i再回退 会被卡掉#include &lt;cstdio&gt;#include &lt;cstring&gt;using namespace std;const int MAX_N = 1000100;const int MAX_M = 10010;#define sci(num) scanf("%d",&amp;num)cha
2019-03-11 17:35:07
134
NOI 国家集训队论文 1999-2009 2013-2017
2018-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人