- 博客(41)
- 资源 (2)
- 收藏
- 关注
原创 使用Swagger2Markup 实现导出的API漂亮的HTML和PDF文档
下载工程后,操作步聚如下:1、修改生成最终文档的索引文件index.adoc,在src/docs/asciidoc目录中,根据自己需要添加章节include::{generated}/overview.adoc[]include::manual_content1.adoc[]include::manual_content2.adoc[]include::{generated}/paths...
2020-03-15 10:24:26
618
1
原创 section 2.4.5 fracdec
这道题相比前几道题来说,没有图,没有别的复杂算法,只是一个模拟计算过程。将结果分为两类,有限和无限循环小数。先将整数部分求出来,0或者是别的整数,然后开始求小数部分,小数部分分为循环节前和循环节后,须将他们依次求出。代码如下。#include<bits/stdc++.h>using namespace std;int bas[100000];int repeat(int x...
2019-06-25 00:13:02
136
原创 section 2.4.4 comehome
这道题是图的最短路径,用dijkstra可以求解。注意路径之间的重复问题。代码如下。#include <iostream>#include <cstdio>#include <cstring>#define inf 9999999using namespace std;int main(){ freopen ("comehome.in","r"...
2019-06-15 14:06:03
199
原创 section 2.4.3 cowtour
这道题需要用到图的遍历的知识,首先需要判断连通片,然后进行Floyd算法求每个连通片的最短路径,然后将每个点的最大值保存起来,又因为只有一条路径,所以我们只需要将任意两个不同连通片的点连接起来并进行判断是否是最小即可。代码如下。#include<bits/stdc++.h>#define INF 0xfffffffusing namespace std;int o[200]...
2019-06-06 23:59:58
137
原创 section 2.4.2 maze1
这道题我是用最短路径来求的,首先将输入转成一个数字数组,并保存出口,接着是用这个初始数组作为一个近似的临界矩阵,用Dijkstra进行最短路径的遍历。代码如下。#include<bits/stdc++.h>#define INF 0xfffffffusing namespace std;struct na{ int x; int y;}dij[3805];int o...
2019-05-30 23:27:54
88
原创 section 2.4.1 ttwo
这道题是要求两者相遇的时间。总共就四个方向,而且一个方向接着另一个方向,可以用一个子函数来求某一点的下一个位置,并用结构体将点坐标以及方向,是否变向存放起来。但是会有不相遇的情况,不相遇有多种情况,可以是两者会经过他们的初始点然后一直绕圈子,那就判断一下两者经过多次的绕圈是否会在同一时间经过他们的初始点;或者是不经过初始点进行绕圈,或者是像布朗运动一样乱走,但是两者就不相遇。所以最简单的方法就可以...
2019-05-22 23:09:43
165
原创 section 2.3.5concom
这道题花了比较大的精力,我是用循环写的,这就需要在最外面套一个大循环,知道循环内什么都不做,才退出大循环。然后就是需要将遍历公司的二维矩阵,将子公司拥有的股份加到母公司上去最后进行判断。代码如下。#include<bits/stdc++.h>using namespace std;int N=0,cu[105][105],cx[105][105];int main (){...
2019-05-18 22:36:14
128
原创 section 2.3.4money
这道题首先是推出一个递归式 ,dp[i,j]=dp[i-1,j]+dp[i,j-c[i]],用递归写完后,会发现超时了,改成动态规划。代码如下。#include<bits/stdc++.h>using namespace std;int main() { freopen ("money.in","r",stdin); freopen ("money.out","w",st...
2019-05-11 23:08:43
99
原创 section2.3.3zerosum
这道题是递归与暴力的结合。首先是需要进行递归将每一个数学表达式存在数组里,然后将每一个表达式通过代码实现进行数学运算,判断结果是否为零,为零就输出。然后递归下一个表达式。代码如下。#include<bits/stdc++.h>using namespace std;char pro[20],sign[4]={' ',' ','+','-'};int n=0,cnt=0,an...
2019-05-06 22:52:37
123
原创 section2.3.2nocows
这道题是一个动态规划问题。我们所关心的树的性质是深度和节点数,所以可以用一张表 table[i][j] 表示节点数为 i、深度为 j 的树的个数。公式为 table[i][j]+=(table[k][j-1]*table[i-1-k][j-1]);边界条件是 table[1][j]=1。但是,这是用 n个点组成深度最多为 d 的二叉树的方法数,而要求的是恰好是深度为 d 的...
2019-04-30 22:52:16
99
原创 section2.3.1prefix
这道题是需要用动态规划来写,主要就是判断集合中的一个元素是否与序列s从当前i开始的一部分字符串相等。代码如下。#include<bits/stdc++.h>using namespace std;char dic[205][15],s[200005];int dp[200005];int main (){ char a[80]; freopen ("prefix.in...
2019-04-28 00:42:56
104
原创 section2.2.3runround
这道题就是用循环遍历来找,首先需要将数字转换成字符型数组,将用到sprintf函数,然后先进行循环判断该数字是否是没有数字重复,以及没有0。然后再用一个while循环找到第一个符合条件的循环数。代码如下。#include<bits/stdc++.h>using namespace std;int main (){ freopen ("runround.in","r",std...
2019-04-11 23:13:22
139
原创 section2.2.2subset
这道题原来用了递归,将每一轮的值不断的进行更改,然而,效率不够。于是改成动态规划,将递归逆向写。最终效率合格。代码如下。#include<bits/stdc++.h>using namespace std;int SN=0;int sv[50];long long sf[40][800];long long sdp(int n,int tot){ sf[1][1]=1...
2019-04-07 23:09:09
112
原创 section2.2.1freface
这道题考察的就是对于数组的遍历,首先构造一个二维数组,将所有基本罗马数字的值都保存在该数组中,然后进行查表,将传入函数的数进行位数分解,然后查表,即可得最终答案。代码如下。#include<bits/stdc++.h>using namespace std;string pre[5][11]={{" "," "," "," "," "," "," "," "," "," "}...
2019-04-05 23:30:09
125
原创 section2.1.5hamming
这道题就是将某一数字的二进制表示形式和已有数字的二进制进行比较,如果该数字与所有原有数字的二进制的不同位数达到要求,那么该数字符合要求。我们可以采用将该数字与原有数字进行异或运算,将异或后的数字转换为二进制,清点该数字二进制中“1”的个数,即为不同的个数。当然,也可以把当前数字转换成二进制,将原有数字也都转换成二进制进行比较。代码如下。#include<bits/stdc++.h>...
2019-04-03 23:21:50
103
原创 section2.1.4holstein
这道题还是比较复杂的,首先是用递归来求得最少的种类数。递归遍历就两种情况,包含或不包含,分成两个分支。然后取两者中少的那种,需要注意,这里面的少,并不是单纯的比较大小,而是要自己定义比较函数。求出最少种类数后,需要用一个结构体来存放,将原有的程序改装成用结构体表示即可。代码如下。#include<bits/stdc++.h>using namespace std;int hn...
2019-03-31 23:13:17
121
原创 section2.1.3sort3
这道题就是要将给定的数组变为三段,三段的长分别为1的个数,2的个数,3的个数。在三段中找不该是本段的数,到该数应在段中找原段中的数。如果该段找完了,就到另一段中找。代码如下。#include<bits/stdc++.h>using namespace std;int a[1005],c1=0,c2=0,c3=0;int search2(int x,int com){ in...
2019-03-29 22:38:22
1010
原创 sction2.1.2 frac1
这道题重点就在于约分和排序上。首先,约分是要找分子和分母的最大公约数。排序这道题选用插入排序,每当有一个新的分数,就往原数组中插入即可。代码如下。#include<bits/stdc++.h>using namespace std;int fn=0,fcnt=2;int fa[26000],fb[26000],fc[165][165];int fjudge(int a,i...
2019-03-27 23:48:38
219
原创 section2.1.1castle
这道题用到了图的遍历,因为每一个格子的值所对应的墙的类型都是固定的,所以可以用四个数组来表示墙。然后要遍历整个矩阵,用一个visit数组来判断该格子是否被访问过,需要注意的是,给visit数组赋值时,需要将不同的房间赋予不同的值,以便于后面拆墙时用。如图所示。进行拆墙时,用了一个双层循环,列为外循环,行为内循环,根据题目要求,先找最西边的,再找最南边的。代码如下。#include...
2019-03-25 23:23:18
143
原创 noip2018d1t1
几个月之后,重新做这题。首先花了30分钟写出了最开始的程序,但是有两个测试数据没有达到时间要求,然后花了两个多小时最终写出了暴力解法的程序,用了dfs。代码如下#include <iostream>#include <cstdio>using namespace std;int road[100005],n1=0,rmin=20000,cnt=0;int ju...
2019-03-20 00:01:12
161
原创 section1.5.3
这道题考的是一个深度搜索,首先通过题意可以剪枝,最高位只有2、3、5、7,后面的低位都是只有1、3、7、9。然后进行深度搜索,ans作为每轮的质数,直到ans的位数与n相等时,输出ans。输出后,需要将ans回退到上一次ans的值,因此需要借助一个last变量使得ans回退到上一轮的值。代码如下。#include <iostream>#include <cstdio>...
2019-03-14 22:39:45
83
原创 section 1.5.2
这道题就是一个回文数和一个素数的判断问题,为了提升效率,可以先将回文数表示出来,再进行判断该数是否是素数即可。代码如下。#include <iostream>#include <cstdio>#include <cmath>using namespace std;int a=0,b=0;int judge(int s){ if (s<a|...
2019-03-12 22:41:48
86
原创 section1.5.1
这道题其实只需用动态规划即可,若用递归,则会超时。代码如下。#include <iostream>#include <cstdio>using namespace std;int N=0;int tri[1005][1005];int ans[1005][1005];int main (){ freopen ("numtri.in","r",stdin)...
2019-03-10 22:52:43
84
原创 section 1.4.2Mother's Milk
这道题其实就是一个dfs,只有6种情况:c->a,c->b,b->a,b->c,a->b,a->c。在dfs中考虑好这6种情况即可。要注意在每种情况中,还要分类讨论判断被灌桶和原桶之间的容量关系。代码如下。#include <iostream>#include <cstdio>#include <cstring>u...
2019-03-09 22:28:31
76
原创 section1.4.1 airprog
这道题主要就是搜索,搜索下一个是否满足条件即可,但是要注意时间的限制,一开始是用递归写的结果时间超时了,然后开始优化程序,用一个数组来保存所有的双平方数,然后在数组中寻找,这样就将递归用一层循环表示了。代码如下。#include <iostream>#include <cstdio>#include <cstring>#include <cma...
2019-03-09 19:38:28
72
原创 section1.3.7skidesign
这道题一开始是想错了的,但是了仔细分析题意之后发现这道题是需要有一个中间变量i来做比较的,即判断一个数是否在[i,i+17]间的。若不在,则需进行分类讨论。代码如下。#include <cstdio>#include <iostream>#include <cstring>using namespace std;int ski[1005],sn=0...
2019-03-05 23:44:32
93
原创 section1.3.6wormholes
这道题就是去考虑一下虫洞的配对是否能成为一个环。先是要将虫洞右边最近的一个虫洞找到,保存在nextr数组中,接着去配对虫洞,先配对,配完了之后再去判断能否成为环。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct point{ ...
2019-03-03 23:00:23
79
原创 section1.3.5
准确的说,这一题也是比较简单的的,逆向考虑重复的就可以了。然而当N<=5时,最终的结果就是N的三次方。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main (){ freopen ("combo.in","r",stdi...
2019-03-01 23:09:07
120
原创 section1.3.4
这道题还是可以说是比较简单的,一个三位数一个两位数,总共五个数字,保存起来就好了,循环遍历,再剪枝就可以了。还需要判断一下中间过程的数字以及结果。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int bas[15];int search...
2019-03-01 22:18:42
75
原创 section1.3.3
这道又是一道典型的动态规划题。通过对题目的分析,我们可以写出这道题动态规划的算法如下。 if (chan[i]==chan[i-ans[i-1]-1]){ ans[i]=ans[i-1]+2; } else if (chan[i]==chan[i-1]){ ans[i]=2; } else { ans[i]=1; }接着,我们所需要的就是将原有的...
2019-02-23 23:29:33
75
原创 section1.3.2
这道题还是比较简单的,逆向考虑,既然要求连续的长度,不如去求间断的长度。只是有些细节需要注意以下,如M>C,M=1,等情况。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main (){ freopen ("barn1.i...
2019-02-22 23:43:21
62
原创 section1.3.1
这道题还是非常简单的,利用排序以及贪心算法就可以解决了。要注意的是,排序算法的选择,由于题目中告诉了我们数据的范围,利用桶排序是个很好的选择,因为桶排序的时间复杂度是O(n)。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main...
2019-02-19 23:50:36
65
原创 section1.2.5
这道题一样还是比较简单的,只需要用上一道题的方法再加上进制循环就能搞定。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;char base[15]={'0','1','2','3','4','5','6','7','8','9'};int...
2019-02-14 22:59:20
113
原创 section1.2.4
这道题还是蛮简单的,就是需要进行数制转换而已,然后判断是否是回文数即可。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int B=0;char bas[25]={'0','1','2','3','4','5','6','7','8','...
2019-02-13 23:30:53
118
原创 section1.2.3
这道题还是可以说是比较简单的,一开始是准备将输入的数字转换的名称全部保存下来,再将这些名称在字典中查找,毫无疑问,这样子太麻烦了,于是就换了一种思路,将字典的名称转换成数字与输入的数字比较,其中还需要注意一层层的筛选。代码如下。#include <iostream>#include <cstdio>#include <cstring>using na...
2019-02-12 00:06:52
96
原创 section1.2.2transform
其实这道题还是比较简单的,主要就是分析清楚,然后将不同方式的方法理解清楚,用数组语言表示出来,再将不同方法存放在函数里,就完成了。代码如下。#include <iostream>#include <cstdio>#include <cstring>using namespace std;char be[15][15],af[15][15],temp...
2019-02-09 21:06:38
110
原创 section1.2.1
这道题呢,其实主要考察了排序和对数据的处理能力。排序用快排比较合适,然后呢将数据排好序后,就可以将数据进行处理,处理各数据间的交集,用数组保存起来。然而,中间有一次错误,即结构体的当前值和前一次的相比,而未与ss和ee的值相比,导致最后结果有误。代码如下。#include <iostream>#include <cstdio>#include <cstrin...
2019-02-04 00:04:03
211
原创 section1.1.4beads
这道题还是花了不少时间的,首先是用普通的搜索写的,然而时间复杂度为O(n2),且对未处理好边界。接着用动态规划。既然是一个环,那就把这串字符复制一下接到原字符串的后面。然而给的样例中有一段是rbwr,当中的w会被前面的b使用,用完后r就直接丢弃了w,所以将w的值保存。但是还会有一串一样的字符,比如说6 wwwwww。所以就判断一下最后的结果max是否大于n。这个程序呢,是对动态规划的一个最初始的...
2019-02-03 20:11:39
121
原创 section1.1.3 friday
其实第三道题还是蛮简单的,思考一下就可知,这道题用循环就可以解了,只是需要注意闰月的情况。代码如下:#include <iostream>#include <cstdio>#include <cstring>using namespace std;bool judge(int y){ return ((y%100 !=0)&&(y...
2019-01-30 22:47:57
99
原创 secion1.1.2 gift1
USACO的第二道题一开始不是很会做,但是,经过分析后,发现其实这道题就是一个边读入边计算的题目,用个结构体把人的名字,支出,收入框起来就行了。#include <iostream>#include <cstdio>#include <cstring>#include <ctime>using namespace std;struct...
2019-01-27 23:26:59
134
使用swagger2markup生成漂亮的PDF和HTML文档(完整工程,解压即用)
2020-03-13
深入探索 高效的Java异常处理框架
2010-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人