- 博客(27)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Uva305——Joseph
约瑟夫环问题。#include using namespace std;int a[14];int main(){ int n; a[1] = 2; for(int i = 2; i < 14; i++) { for(int m = i + 1; ; m++) { int s = 0, j = 2 * i; while(1) { i
2016-03-27 19:36:51 757
原创 Uva299——Train Swapping
简单的题目。求冒泡排序交换的次数。#include using namespace std;int data[60];int main(){ int n, l; cin >> n; while(n--) { cin >> l; for(int i = 0; i < l; i++) cin >> data[i]; int ans = 0; fo
2016-03-27 18:55:01 601
原创 Uva160——Factors and Factorials
求n!的质因子个数。也就是2~n每个数的质因子的个数之和。输出的格式比较麻烦,需要注意。代码:#include #include #include using namespace std;int vis[110], prime[100], count = 0;int ans[100];void prime_table() //获取质数表{ int i,
2016-03-24 23:32:32 1130
原创 Uva216—— Getting in Line
题目的意思求n个点连起来的最短距离。n最大为8,直接枚举排列的所以情况,然后求最短的距离,最短距离等于连线上的每两个点的距离加上16的和.点的排序可以多种情况,只要找到最短距离就行。枚举排列用next_permutation函数。代码:#include #include #include #include using namespace std;int n,
2016-03-19 11:46:21 410
原创 Uva208——Firetruck
题目的意思:给你节点k,然后输入的是无向图,求1到节点k的所以路径。首先用Floyd算法算出两两之间的是否存在路径。然后在递归求出路径的时候可以很快的判断是否有路到达k节点。代码:#include #include using namespace std;const int maxn = 25;const int INF = 0xfffffff;int ma
2016-03-16 22:15:43 384
原创 Uva10048——Audiophobia
题目的意思,无向图中求某个点到另外一个点的路径上的最大噪声值,最大噪声值比其他路径上的最大噪声值小,比该路径上的噪声大。最后问的是有q个问题,每个问题存入两个点,求这两点之间的最大噪声值,直接用Floyd算法。代码:#include #include using namespace std;const int INF = 0xfffffff;int c, s,
2016-03-15 20:03:33 633
原创 Uva247——Calling Circles
求有向图的传递闭包,并输出各个连通分量的成员。输出各个连通分量,可以递归输出。代码:#include #include #include #include #include using namespace std;const int maxn = 40;int n, m;vector vec;bool data[maxn][maxn], vis[ma
2016-03-14 23:27:12 571
原创 Uva10603——Fill
求的是倒水量最小,不是次数。代码:#include #include #include #include using namespace std;struct Node{ int v[3], dist; bool operator < (const Node& a)const { return dist > a.dist; }};const int
2016-03-12 23:16:51 536
原创 Uva1151——Buy or Build && POJ2784——Buy or Build
最小生成树的应用。输入n个城市(1~n),和q个方案,接下来q行的第一个数为该方案中的城市数a,第二个数为用该方案需要的钱b,接下来a个数为城市的编号。接下来n行为第n个城市所在的坐标位置。在这些城市之间建设道路,使得两两城市直接连通。在两个城市之间建设道路,需要花费 两个城市之间的坐标的欧几里德距离,若买方案,则方案内的城市已经连通。先进行一次求最小生成树,再枚举方案再求最小生成
2016-03-12 16:29:03 793
原创 Uva1395——Slim Span
这题,最小生成树的应用,只是需要稍微变形一下。输入结点数为n,边数为m,对每条边进行从小到大排序,然后枚举枚举每一条边,从该边起到最后这些边中求最小生成树并找到权值最大的边。不断的更新最大权值与枚举的边的差值。代码:#include #include using namespace std;const int maxn = 110;int m, n;
2016-03-12 14:20:18 651
原创 Uva108——Maximum Sum
题目的意思,求矩阵的的子矩阵的最大和。暴力枚举行的组合,将各列数值相加,再查找最大连续和,更新最大值即可。代码:#include #include #include using namespace std;const int maxn = 110;int data[maxn][maxn], n;int main(){// freopen("1.txt
2016-03-10 14:46:03 583
原创 Uva524——Prime Ring Problem
简单的回溯的应用。代码:#include #include #include using namespace std;int data[50], vis[50], n;int is_pre[50];void dfs(int x){ if(x == n && is_pre[data[0] + data[n - 1]]) { cout << data[0];
2016-03-10 13:09:39 409
原创 Uva10976——Fractions Again?!
简单的题目,很容易看懂。主要是枚举,但是枚举的范围不确定。从x >= y , 推出 1 / x 然后就是枚举,暴力过。代码:#include #include #include using namespace std;int data[15000];int main(){// freopen("1.txt", "r", stdin); int k,
2016-03-08 19:26:16 501
原创 Uva11057——Exact Sum
简单的题目,在N个数中找到差值最小的并且相加等于所给的 M。直接暴力枚举,数据量较小。代码:#include #include #include using namespace std;int data[10010];int n, money;int main(){// freopen("1.txt", "r", stdin); int i, j; w
2016-03-08 19:06:28 479
原创 Uva11059——Maximum Product
暴力枚举,数据量相对较小。不过__int64 这个类型过不了。代码:#include #include using namespace std;int data[20];int n;long long Max, ans;int main(){// freopen("1.txt", "r", stdin); int i, j, t = 0; while(cin
2016-03-08 18:39:00 246
原创 Uva725——Division
简单的题目,暴力枚举可以过。只不过我第一次用的是五重循环枚举一直WR,2到79 的答案都对,就是不过,不知道为毛。。后来改用直接枚举其中一个数。代码:#include #include #include using namespace std;int ans[10];bool flag;int cheak(int x, int y){ memset(ans, 0
2016-03-07 22:15:25 250
原创 Uva12118——Inspector's Dilemma
这题的意思:给你V个城市,两两城市有双向的通路,给你E个边,求最短路径走过这E个边。边长为T。一开始以为是BFS来求解,但是怎么都想不到切入口。后面看到欧拉两个字,恍然大悟,这题就是无向图的欧拉回路的求解。只不过,还需要判断图是否连通,存在多个连通图,需要将他们连通起来。然后判断各个节点的度,奇数的节点大于2,则需要加上 奇数点 / 2 - 1个边,才能使图存在欧拉回路。下面的代码
2016-03-07 15:56:22 688 4
原创 Uva1600——Patrol Robot
这题:找最短路径,只是可以跨越障碍,不能连续跨越K个障碍。可以通过BFS做。一开始我没有用vis数组,是在输入的矩阵中操作的,结果一直WR,不明白,为毛加了vis就可以,同样是标记的,自己还是有待提高。下面AC代码:#include #include #include using namespace std;struct node{ int x, y,
2016-03-05 17:47:51 373
原创 Uva439——Knight Moves
简单的BFS。只是国际象棋的棋盘有点特殊,坐标需要转换下。AC代码:#include #include #include using namespace std;struct node{ int x, y, count;};int xy[8][2] = {-1, -2, -2, -1, -2, 1, -1, 2, 1, 2, 2, 1, 2, -1, 1, -2};
2016-03-05 14:28:47 293
原创 Uva536——Tree Recovery
根据先序遍历以及中序遍历,构造二叉树,输出后序遍历。代码:#include #include #include using namespace std;struct node{ char c; struct node *lchild, *rchild;};node *Root;int len;char pre[30], in[30];void crea
2016-03-05 13:44:48 361
原创 Uva712——S-Trees
输入的第一行数字,是该满二叉树的叶子节点。接下来m行是查找叶子节点的数值的,0 向左走, 1 向右走。 用数组来表示二叉树。根节点为k,左孩子为2*k + 1,右孩子为2*k + 2。代码:#include #include #include using namespace std;char str[8][5];int num[300], ans[150
2016-03-05 11:35:03 351
原创 Uva673——Parentheses Balance
题目很简单,栈的应用。需要注意的是空串也是合法的。AC代码:#include #include #include #include using namespace std;int main(){// freopen("1.txt", "r", stdin); int n; bool ans; char str[140]; cin >> n; getchar
2016-03-05 10:25:17 326
原创 Uva1572——Self-Assembly
题目的意思:给你N个正方形,正方形每条边有编号,为一个大写字母加上一个“+”或者“-”,还有一个编号是“00”,“00”边不能连接其他的正方形,而想要连接需要字母相同,符号相反,问能不能无限的铺。下面是代码,有解析。主要是dfs来判断是否存在环。代码:#include #include using namespace std;int c[55];int G[55][55];
2016-03-05 09:14:11 602
原创 Uva10562——Undraw the Trees
可以用DFS来做。找到子树的根,进行深搜。代码:#include #include #include #include using namespace std;const int maxn = 200 + 10;int n;char buf[maxn][maxn];void dfs(int x, int y){ cout << buf[x][y] <<
2016-03-04 09:27:20 650 2
原创 Uva10129——Play on Words
这题,可以转换成有向图的欧拉回路的判断。有向图的判断方法:所以点的入度等于出度或者有一个点的出度比入度大1有一个点的入度比出度大1,剩下的点入度等于出度。不过还有一个前提,就是图是连通的,可以用DFS来判断或者并查集。我用的是并查集。代码:#include #include using namespace std;struct node{ int indegre
2016-03-03 17:40:29 284
原创 Uva10305——Ordering Tasks
简单的拓扑排序,模拟一下就可以了。AC代码:#include #include #include using namespace std;const int maxn = 110;int n, m;vector vec[maxn];int ans[maxn];bool cheak(){ for(int i = 1; i <= n; i++) if(!an
2016-03-01 20:51:49 286
原创 Uva1103 World finals 2011——Ancient Messages
这题是2011年的World finals的题目。判断由01矩阵组成的图像是属于哪个古埃及的文字。从6个图形可以看出,每一个图形里面的 空洞 都是不同的。可以从空洞的个数来判断属于哪个文字。矩阵组成的每一个文字都是完整的,两个文字之间不会有连接。题目的给是01矩阵每四位构成的十六进制的矩阵,需要转换一下,这个不难。01矩阵外围再围上一圈 的 0,一开始进行一次深搜dfs(0
2016-03-01 19:11:02 506
vs2013 fstream 无法打开文件
2015-03-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人