摘要:好久没写解题回顾了。主要是没什么时间,但是还是一直在刷题,图论刷了70%的知识点,不过感觉长进不是很大,所以觉得还是得一步步来,最近还是先从刘汝佳大白书把前面基础章节刷完然后再决定以后的训练方式吧。 这个题目还算是理解了。重点在于各种姿态的的表示,顶部在上共有6种放置方法,然后正面对应4种,这样每个魔方对应24种方式放置。利用一个数组p[6]保存旋转后各个面对应的标准姿态的编号。然后将第一个魔方...
阅读全文
摘要:给定一个字符矩阵,s[i][j]为+,-,0分别表示ai+……….aj的和为正,负,0。可以将连续和转化为前缀差,即s[i][j]为+可以表示为B[j]-B[i-1]为正,B[i]表示前i项的和,B[0]为0,然后拓扑排序找出相对关系再依次取值即可。注意相同的B[i],B[j]要注意保存,最后两者的值统一。最终输出结果a[i] = B[i]-B[i-1]l.代码:#include #include #include #include #include #include #include #include #include #include #include #include #define e
阅读全文
摘要:根据地图,要求固定两点间最短路径的条数 。这题的输入数据就是个坑,题目有没有说明数据之间有多个空格,结尾换行符之前也不止一个空格,WA了好几遍,以后这种情况看来都要默认按照多空格的情况处理了。可以先利用bfs求出起点到各点的最短距离,然后dfs统计 num[x][y]表示起点到x,y的最短路径数,转移方程为 num[x][y] += num[nx][ny], nx = x +dx[k],ny = y + dy[k],map[nx][ny] != 0.代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define esp 1e-611 #define pb push_back12 #define in freopen("in.txt", "r", stdin);13 #define out freopen("out.txt", "w", stdout);14 #define print(a) printf(&
阅读全文
摘要:这个题目一直以为是要用图论知识来做,可是一点建图的思绪都没有,后来知道暴力便可破之。由于牛的产奶周期最大为10,1.2.3.....10的最小公倍数是MT = 2520,所以把MT作为最大的周期,然后枚举这个周期内的每一天,看产奶量最小的牛是否唯一,然后杀掉是唯一的最少产奶的那头牛,知道遇到一个周期内没有牛被杀掉。这样就到达了一个稳定的最终状态,统计剩下的牛,和杀掉最后一头牛用去的时间。注意一头牛都不杀的情况应该输出天数为0.不过这题还有更加标准的做法,刘汝佳黑书中提到,将周期相同的奶牛产奶情况用一个堆来维护,每次用一个最小的代表去和其他周期的奶牛比较。删除操作效率比较高。代码: 1 #inc
阅读全文
摘要:题目是要求任意给定两点的的路径上最大的边,最终输出这些最大边中最小的值,也就是求一条路径使得这条路径上最大的边在所有连通两点的路径中最短。根据Floyd—Warshall算法改造一下就行了。dp[i][j]表示i,j两点的连通路径中最大边的最小值。 1 #include 2 #include 3 #define N 110 4 #define INF 999999999 5 #define max(a,b) ((a)>(b)?(a):(b)) 6 #define min(a,b) ((a)>(b)?(b):(a)) 7 8 int dp[N][N]; 9 int main(void
阅读全文
摘要:虽然是道普通的最小生成树题目,可还是中间出了不少问题,暴露的一个问题是不够细心,不够熟练。所以这篇博客就当记录一下bug吧。代码一:kruskal 1 #include 2 #include 3 #include 4 #include 5 #define N 110 6 7 typedef struct 8 { 9 double x,y; 10 } Point; 11 Point point[N]; 12 13 typedef struct 14 { 15 int u,v; 16 double c; 17 } EDGE; 18 EDGE edge[...
阅读全文