基础算法
gogntao_
我相信走过荒芜,生命一定会葳蕤绽放
展开
-
uva_409
这道题的难点在于输入的处理,值得采用的方法是使用一个flag变量进行字符串的分离操作。代码如下:#include #include #include #define INALP 1#define OUTALP 0char e[21][100]; //关键字符串char k[21][100]; //Excuse语句char t[71]; //Excuse语句中的单个单原创 2015-02-25 14:10:39 · 540 阅读 · 1 评论 -
zoj_1002
终于把这题A了,在阅读了多人的博客的情况下,接着找这类题继续做#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXSIZE 10char v[MAXSIZE][MAXSIZE];//0 -> null 1 -> block 2 -> fireint ans = 0, step = 0, cnt = 0;in原创 2015-08-13 22:39:42 · 516 阅读 · 0 评论 -
POJ_2352 树状数组
这是看了白书之后做的第一道树状数组的题目,注意该题的输入是按Y升序排列的,所以在输入某一序列之前的一定在该序列的左边,故Y的值可以不用考虑而接下来的就是记录X之前小于X的个数,如果用x[i]来表示i是否出现过,则C[X]是用来表示X[x-1] - X[0]的前缀和,C[x]记录了小于x的个数AC代码如下:#include #include #include const int原创 2015-03-23 17:17:21 · 530 阅读 · 0 评论 -
POJ_2481(树状数组)
本题的关键在于要考虑到两个区间完全相同的情况,其他的不用考虑太多。#include #include #include #include using namespace std;const int maxn = 100000 + 300;int c[maxn];int ans[maxn];struct cow{ int s; int e; int in; bo原创 2015-03-28 11:24:18 · 514 阅读 · 0 评论 -
POJ_1195 (二维树状数组)
一道二维的树状数组,用细节教你做人。。。。#include #include #include const int maxn = 1100 + 50;int c[maxn][maxn];int tot;int lowbit(int x){ return x & (-x);}int sum(int x, int y){ int t = 0; for(int i原创 2015-03-28 14:04:15 · 553 阅读 · 0 评论 -
zoj 1160 && 中国剩余定理
#includeint main(){ int a, b, c, d, e[3]={23*28, 23*33, 33*28}, f; int i=1 , n, j; scanf("%d", &n); while(n) { j=0; while (scanf("%d%d%d%d",&a, &b, &c, &d) && a!=-1 && b!=-1 &&原创 2013-04-29 20:27:14 · 800 阅读 · 0 评论 -
hdoj1213和zoj2833 (简单并查集)
=========================================================================================hdoj1213最典型的并查集应用,如果节点a的祖先节点和节点b的祖先节点不相同,则将它们合并#include #include int root[10000];int find(int i){原创 2015-03-20 20:54:43 · 979 阅读 · 0 评论 -
poj2299(树状数组)
开始时因为数组开销过大,要不是RE就是编译错误,后来参考网上的写法,其实数值的大小无所谓,只需要保持大小关系就可以了,这样使用一次排序减少数组的开销代码如下:#include #include #include #include using namespace std;const long long int maxn = 500000 + 500;long long int原创 2015-03-26 12:51:47 · 532 阅读 · 0 评论 -
uva_10010
话说10010是联通的客服电话。。这道题就是一个基础的字符串匹配,最后格式输出不正确总是we,郁闷,还好在睡觉前A了该睡了,代码如下:#include #include #include char tbs[56][56];char ts[56];int m, n;int a, b;int chr_s(char* s, int bg, int en){ int i,原创 2015-02-28 23:48:12 · 429 阅读 · 0 评论 -
uva_10115
在写input文件时出现笔误,导致总是输入错误,这点很让人头疼。。。总是有些耽误时间的地方AC代码如下:#include #include #include char s[11][80];char r[11][80];char bf[267];int isS(char* a, char* b, int c){ int lena = strlen(a); in原创 2015-03-01 13:09:35 · 407 阅读 · 0 评论 -
uva_10878
万万没想到开始的第一行横格和最后一行横格竟然也是输入输出的一部分,心塞。。。#include #include #include int toascii(char *s){ int i, k; int sum = 0; k = 1; for(i = 9; i >= 1; --i){ if(i != 6 && i != 9) k = k*原创 2015-03-01 14:55:40 · 454 阅读 · 0 评论 -
uva_401
这道题较为简单,关键在于表示MIRROR的映射关系,用到了strchr函数#include #include const char c[40] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";const char r[40] = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";int isP(char *d){ int原创 2015-02-14 18:02:34 · 503 阅读 · 0 评论 -
uva_644
这道题比较水,早上起来a了他,感觉价值不大。。。代码如下#include #include #include int isD(char* s, char* t){ int i, lens, lent; lens = strlen(s); lent = strlen(t); i = 0; while(s[i] == t[i] && i < le原创 2015-02-27 09:15:40 · 456 阅读 · 0 评论 -
uva_537
这道题不难,写这道题时挺波折的,一个是在写字符串转化成浮点数的算法时分类不当,以后应先将判断条件想好再写,以免思维混乱,代码量多时应该细心,避免笔误AC代码如下:#include #include #include double toD(char* s){ int i, len, flag; double a, tag; len = strlen(s);原创 2015-02-26 20:45:07 · 576 阅读 · 1 评论 -
poj_3278(BFS)
大家都说是第一道广搜题,也是我的第一道BFS,道理和广度优先遍历是一样的,下面是AC代码,参考过别人的,先贴出来#include #include #include #define MAXSIZE 1000000int vis[MAXSIZE], q[MAXSIZE], d[MAXSIZE];int n = 0, k = 0, step = 0;int search(int nu原创 2015-08-14 11:41:53 · 534 阅读 · 1 评论