自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 uva 10562(dfs)

题解:这道题非常让我想xxxxxx, 开始时想了很多情况

2014-07-30 21:16:35 638

原创 uva 196(dfs)

题解:不太会用拓扑,见所以用深搜来写了,╮(╯▽╰)╭,找到直到不是表达式的就返回这个值,#include #include #include #include #include using namespace std;const int N = 1005;const int INF = 0x3f3f3f3f;int row, col, g[N][N], n;string s

2014-07-30 16:04:22 715

原创 uva 10305(拓扑)

题解:直接按照书上的例子敲了一遍就过了,不行。。dei

2014-07-30 09:30:59 860

原创 uva 10596(欧拉路)

题解: #include #include const int N = 200 + 5;int du[N], flag, n, r, pa[N], vis[N];void init() { memset(du, 0, sizeof(du)); memset(vis, 0, sizeof(vis)); for (int i = 0; i < n; i++)

2014-07-30 00:29:32 802

原创 uva 10054(欧拉回路+并查集)

题解:明显的欧拉回路,先用并查集

2014-07-29 22:03:42 904

原创 uva 10129(欧拉回路)

题解:用并查集和判断是否是欧拉路的做法。先将输入转化为有向图,并用并查集检测是否只有一个根节点,即这个图是否是连通图,然后判断是否是欧拉路。有向图的欧拉路的充分条件是:当且仅当图是连通的,最多只能有两个点的入度不等于出度,而且必须是其中一个点的出度刚好比入度大1(作为起点),另一个点的入度比出度大1(作为终点)。同时也说一下无向图的欧拉路的充分条件:当且仅当图是连通的,只能有0个或2个

2014-07-29 18:23:38 882

原创 uva 10004(图)

题解:本来想着用dfs,后来写着写着就成普通的循环了,将起始点0先涂色,然后把和他相邻的其他点涂成另一种颜色,再从下一个点搜索,如果有连线但已经被涂色且和自己颜色一样就可以判断结果是错。#include #include const int N = 200 + 5;int n, l, G[N][N], vis[N], flag;void init() { memset(G, 0

2014-07-29 15:44:56 988

原创 uva 10047(bfs)

题解:这题主要是bfs搜索时的判定条件不太好写,

2014-07-28 19:43:04 758

原创 uva 10557(dfs)

题解:这道题最重要的就是

2014-07-28 02:07:57 717

原创 uva 795(dfs)

题解:这道题开始想了很久doumeisilu

2014-07-27 16:09:50 1043

原创 uva 532(bfs)

题解:按照bfs#include #include #include using namespace std;const int N = 35;struct P { int x, y, z;}p;int l, r, c, x1, y1, z1, x2, y2, z2, flag1;char pos[N][N][N];int vis[N][N][N];int flag[

2014-07-27 08:38:48 764

原创 uva 657(dfs)

题解:#include #include #include using namespace std;const int N = 55;int row, col, flag[3] = {-1, 0, 1}, ans[N], k;char str[N][N];void init() { memset(ans, 0, sizeof(ans)); memset(str, 0, s

2014-07-26 19:32:04 841

原创 uva 839(二叉树)

题解:不需要建树,深搜就可以了。#include int flag;int dfs() { int wl, dl, wr, dr; scanf("%d%d%d%d", &wl, &dl, &wr, &dr); if(wl == 0 || dl == 0) wl = dfs(); if(wr == 0 || dr == 0)

2014-07-25 19:24:54 840

原创 uva 327(字符串)

题解:模拟+栈(存放运算符)。#include #include #include #include #include using namespace std;const int N = 30;int flag[N], now[N], value;void init() { value = 0; memset(flag, 0, sizeof(flag));

2014-07-25 18:34:51 958

原创 uva 699(二叉树)

题解: 在剑术#include #include const int N = 85;struct Node { int val; Node* left; Node* right; Node () { val = -1; left = right = NULL; }};int ans1[N], ans2[N];

2014-07-25 15:36:59 977

原创 uva 297(二叉树)

题解:#include #include #include #include using namespace std;const int N = 10010;struct Node { char c; Node* s[4]; Node() { c = '\0'; s[0] = s[1] = s[2] = s[3] = NUL

2014-07-25 13:01:22 824

原创 uva 712(二叉树)

题解:#include #include #include #include using namespace std;const int N = 500;int num[10], pos;int main() { int n, ans[N], m, inp[10], cases = 1, outp[N]; string str; while (scan

2014-07-25 10:14:47 963

原创 uva 548(二叉树)

题解:给出了二叉树的中序和后序,重建二叉树,输出路径和最短的叶子的值。两个模板:给出前序和中序建树:Node* build (int n, int* preo, int* ino) { Node* node = new Node; int i = 0; if (n <= 0) return NULL; while (ino[i] != p

2014-07-24 23:03:46 1492

原创 uva 112(二叉树)

题解:先根据括号建树,然后用神搜

2014-07-24 21:49:08 961

原创 uva 10050(线性表)

题解:#include #include using namespace std;const int N = 3655;int main() { int t, n, p, d, flag; int map[N]; scanf("%d", &t); while (t--) { flag = 0; memset(map, 0, sizeof(map)); scanf(

2014-07-22 19:10:04 861

原创 uva 11234(二叉树、线性表)

题解:可以根据输入的字符串画一个二叉树出来,然后层次遍历一下就和输出结果顺序一样,所以根据输入把大写字母当做两个小写字母的根节点,将节点即运算结果当做另一个小写字母放进栈里,和另一个字母组建生成新的树放进栈里,直到最后的的根节点也放进了栈里,开始层次遍历,用数组模拟队列进行遍历,注意因为结果的顺序是从右到左,所以注意遍历的方向问题。#include #include #include #in

2014-07-22 16:17:17 1365

原创 uva 540(线性表)

题解:用一个#include #include #include #include using namespace std;int main() { int t, n, a, cases = 1, flag; queue q[1005]; queue q2; char str[10]; while (scanf("%d", &t) && t) { map m; for

2014-07-22 10:58:03 899

原创 uva 11111(线性表)

题解:像套娃,每个大的值后面#include #include using namespace std;const int N = 10010;int main() { stack s; int a[N]; int n = 0, i; double sum1 = 0; double sum2 = 0; char c; while (scanf("%d%c", &a[n++],

2014-07-21 20:12:53 891 1

原创 uva 442(线性表)

题解:矩阵的乘法,a的行乘bd列

2014-07-21 19:02:55 944

原创 uva 10152(线性表)

题解:输入给出原始和mubiao的两个

2014-07-21 16:01:40 719

原创 uva 101(线性表)

题解:用栈的数组在存木块,然后设置了一个数组储存每个木块当前所在的位置,每次yi

2014-07-21 14:46:24 863

原创 uva 127(线性表)

题解:设zhi#include #include #include #include using namespace std;const int N = 55;struct Card{ char a, b;};int judge(Card c1, Card c2) { if (c1.a == c2.a || c1.b == c2.b) return 1; retu

2014-07-21 08:58:20 1189

原创 uva 133(线性表)

题解:#include int main() { int n, k, m, flag1, flag2, flag, a, b, c, d, i ,j; int s[25]; while (scanf("%d%d%d", &n, &k, &m) && (n || k || m)) { if (n == 1) { printf(" 1\n"); continue; }

2014-07-21 08:45:36 828

原创 uva 673(线性表)

题解:把第一个括号放到栈里,然后看后面的一个括号是否和他匹配,如果匹配就把栈里的括号取出,否则就把当前的括号也放进栈里,继续对比下一个,以此类推,一直到最后一个括号也被判断,看栈是否为空,如果是空的就是yes,否则就是no.#include #include #include #include using namespace std;int main() { int t, fla

2014-07-21 08:40:37 809

原创 uva 10916(数学)

题解:2#include #include int main() { int n, i; double m, ans; while (scanf("%d", &n) && n) { n = (n - 1960) / 10 + 2; m = pow(2, n); double ans = 0; for (i = 1;; i++) { ans += log(i)

2014-07-19 17:46:06 930

原创 uva 579(数学)

题解:将分针的角度减#include #include int main() { double m1, m2, m; double ans, h; while (scanf("%lf:%lf", &h, &m) && (h || m)) { double temp1 = m * 6; double temp2 = h * 30 + 30 * temp1 / 360; d

2014-07-19 17:42:56 771

原创 uva 375(数学)

题解:在一个等腰三角形内找到内切圆半径

2014-07-19 17:38:31 1058

原创 uva 10387(数学)

题解:将台球走过的路线分解并投影到chu

2014-07-19 17:11:58 800

原创 uva 10112(数学)

题解:给出一堆点的坐标,

2014-07-19 17:05:55 896

原创 uva 10250(数学)

题解:一直一个正方形的两个

2014-07-19 16:51:28 749

原创 uva 10010(数学)

题解:有n个灯,一个人来回走n次,每次

2014-07-19 15:54:23 724

原创 uva 10025(数学)

题目:#include int main() { long long k, t, i; scanf("%lld", &t); while (t--) { scanf("%lld", &k); if (k < 0) k = -k; long long temp = 0; for (i = 1;; i++) { temp += i; if (temp >

2014-07-18 21:05:11 825

原创 uva 10392(数学)

题解:#include #include using namespace std;int main() { long long int n, temp; int flag; while (scanf("%lld", &n) && n > 0) { temp = sqrt(n); flag = 0; for (long long int i = 2; i <= temp

2014-07-18 19:14:22 738

原创 uva 10061(数学)

题解:题目要在b进制下输出的是一个数字阶乘后有多少个零,然后输出一共有多少位。首先计算位数,log(n)/log(b) + 1就是n在b进制下有多少位,而log有个公式就是log(M×N) = logM + logN,n! 的位数用公式可以化为( log(1) + log(2) +...+log(n) ) / log(b) + 1,为了精确再加 10^-6。阶乘后的零的数量计算是根据进制数的最大质

2014-07-18 19:08:58 1310 1

原创 uva 10879(数学)

题解:直接算比1大的因子

2014-07-17 21:07:09 853

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除