随笔分类 - 考研复试上机练习
摘要:这是对之前用dijkstra写的那题的重写。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 #define N 1001 7 #define INF 0x3f3f3f3f 8 9 int n,m,dist[N][N],cost[N][N],vis[N],lowcost[N],lowdist[N],queue[N*N];10 11 void spfa(int s)12 {13 memset(vis,0,sizeof(vis));
阅读全文
摘要:刚才又复习了一下dijkstra算法的模板,顺便看了下Floyd算法,所以找了道水题敲了下,HDOJ上的最短路。 1 //Floyd算法 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 #define N 101 8 #define INF 0x3f3f3f3f 9 10 int n,m,adj[N][N];11 12 void floyd()13 {14 for(int i=1;i<=n;i++)15 for(int j
阅读全文
摘要:上午做了下这道排序题,题目链接:http://ac.jobdu.com/problem.php?id=1007题目就是纯粹的模拟题,注意只需对后输入的m个国家排序即可。代码如下: 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 struct Olym{ 6 int goldmedal,medal,po,rank[5]; 7 double gpo,mpo; 8 }nation[200]; 9 10 int todo[200]; //存待排序的国家的编号11 12 int main()
阅读全文
摘要:题目链接:http://ac.jobdu.com/problem.php?id=1016今天做了下这道五星的题,题目倒是不难,但是由于疏忽导致一直RE,最后玉玉发现了问题所在,才使得悲剧没有继续。这题的思路类似于做高精度的运算,就是按位加,如果超过相应位的权值,就向上进位。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 char stra[1000],strb[1000]; 7 int a[30],b[30],c[30]; 8
阅读全文
摘要:题目链接:http://ac.jobdu.com/problem.php?id=1123发这篇文章就是为了记录下模板,把二维数组压成一维数组,很简单的实现。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 int Time[110],Value[110],f[1010]; 7 8 int main() 9 {10 int i,j,t,m;11 while(scanf("%d %d",&t,&m
阅读全文
摘要:题目链接:http://ac.jobdu.com/problem.php?id=1008看到这道题,直接就想到要用dijkstra算法来做。后来看到网上说用SPFA算法来做更简单一些,我想先用dijkstra实现后在学习下SPFA。在实现过程中只需对dijkstra算法进行简单的修改就可以了,加入在长度相等时对花费的判断即可。同时在输入时要考虑有重边的情况。代码如下: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 #defin
阅读全文
摘要:最近开始做图论题,先从MST入手,MST最常用的两个算法就是Prim和Kruskal+Union-Find Set了。这道题由于是稠密图,所以选用Prim更适合一些。简单的模板题,只是为了熟悉下Prim的写法,就不做过多的解释了。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 #define N 101 7 8 int n,adj[N][N],visit[N],lowcost[N]; 9 10 int prim()11 {12
阅读全文
摘要:个人第一道DP,选了个简单的做入门指引了~从明天开始逐步深入学习DP~题目的意思很简单,求出三角形第一行到最后一行的一个路径的最大值。思路:从最后一行开始向上逐行累加,从而找到最大值。题目链接:http://poj.org/problem?id=1163 1 #include <iostream> 2 using namespace std; 3 4 int a[101][101]; 5 6 int main() 7 { 8 int i,j,n; 9 cin >> n;10 for(i=1;i<=n;i++)11 for(j=1;j<=i;j++)1...
阅读全文
浙公网安备 33010602011771号