
算法
cugfjp
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVa 10010 - Where's Waldorf?
#include #include #include #include using namespace std;char g[52][52];char dir[8][2] ={ {-1, 0}, //north {-1, 1}, {0, 1}, //east {1, 1}, {1, 0}, //south {1, -1},原创 2013-04-09 16:18:05 · 459 阅读 · 0 评论 -
UVa 10361 - Automatic Poetry
#include #include #include #include using namespace std;char l1[120], l2[120];char s[5][120];char sign[] = "";void gets() { int i, j; char *p = l1; for(i=0; i<5; i++) {原创 2013-04-10 09:08:04 · 465 阅读 · 0 评论 -
UVa 10878 - Decode the tape
#include #include #include char buff[100];int main(){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif char *p; int sys; char letter; while(fgets(buff, si原创 2013-04-11 09:31:34 · 480 阅读 · 0 评论 -
UVa 10815 - Andy's First Dictionary
#include #include #include #include #include using namespace std;char buff[220];int k_num = 0;int main(){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif typedef原创 2013-04-11 17:17:50 · 501 阅读 · 0 评论 -
UVa 644 - Immediate Decodability
#include #include #include #include #include using namespace std;char buff[100][20];int cmp(const void *a, const void *b){ return strcmp((char *)a, (char *)b);}int main(){ #原创 2013-04-11 20:11:37 · 488 阅读 · 0 评论 -
UVa 537 - Artificial Intelligence?
#include #include #include #include using namespace std;char buff[300];double p, u, i;void getNum(){ char *pa = buff;; int t=2; double n; p = u = i = 0; char con, te原创 2013-04-10 13:23:35 · 539 阅读 · 0 评论 -
UVa 409 - Excuses, Excuses!
#include #include #include #include using namespace std;char keywords[22][22]; //keywordschar excuses_o[22][72]; //原始excuseschar excuses[22][72]; //转化为小写后int e_k[22]; //每个语句含有keyword数统计void原创 2013-04-10 21:41:33 · 403 阅读 · 0 评论 -
UVa 10115 - Automatic Editing
#include #include #include #include using namespace std;char sfind[12][100];char sreplace[12][100];char buff[300];void moveback(char *p1, char *p2, int b){ char *p; for(p=p2; p>=p1原创 2013-04-12 08:41:52 · 441 阅读 · 0 评论 -
UVa 639 - Don't Get Rooked
/*回溯法*/#include #include #include #include #include using namespace std;const int MAX = 4+2;int board[MAX][MAX]; //棋盘int n; // n*nint most; //输入时判断最大rooksint max_rooks; //最大rooks//判断原创 2013-05-16 20:00:29 · 351 阅读 · 0 评论 -
UVa 539 - The Settlers of Catan
/*回溯法*/#include #include #include using namespace std;const int MAX = 25 + 5;int n, m;int M[MAX][MAX];int max_len=0;void dfs(int u, int len){ int found = 0; for(int v=0; v<n; v++)原创 2013-05-16 20:01:27 · 388 阅读 · 0 评论 -
UVa 301 - Transportation
/*回溯法1、乘客限制。2、当剩余所有票价加起来也不会超过最大价格则回溯。AC:0.092s*/#include #include #include #include #include using namespace std;const int MAX_ORDERS = 22+2;const int MAX_STOPS = 7+2;struct order {原创 2013-05-17 09:49:55 · 361 阅读 · 0 评论 -
UVa 10344 23 out of 5
/*回溯法 最坏情况:5!*3^4*/#include #include #include #include #include using namespace std;const int MAX = 5;const int OPTS = MAX-1; //操作符个数int A[MAX];int dfs(int cur, int sum){ if(cur == O原创 2013-05-17 11:22:08 · 469 阅读 · 0 评论 -
UVa 331 - Mapping the Swaps
/*回溯法 交换次数等于逆序对个数*/#include #include #include #include using namespace std;const int MAX = 5;int A[MAX];int n;int reverse_order; //逆序对个数int swap_map; //交换map个数void dfs(int rev){ if原创 2013-05-17 15:28:31 · 413 阅读 · 0 评论 -
UVa 572 Oil Deposits
/* 思路: 1、DFS和BFS都可以 实现深度遍历递归形式和栈形式*//* 注意点: m(rows)*n(columns): 1<=m,n<=100; end: m=0 @:oil *:no oil*/#include #include const int MAX = 110;int m, n;char grid[MAX][MAX]原创 2013-05-05 20:28:23 · 457 阅读 · 0 评论 -
UVa 165 - Stamps
/* 连续邮资问题 参考:王晓东《计算机算法设计与分析》 方法一:直接枚举(h+k<=9)*/#include #include #include #include #include using namespace std;const int MAX_H = 9+5; // 最大邮票数const int MAX_K = 9+5; // 最大面额数const原创 2013-05-20 16:16:55 · 452 阅读 · 0 评论 -
UVa 10305 Ordering Tasks
/* 思路: 1、图的拓扑排序 注意点: 1、1<=n<=100*/#include #include const int MAX = 110;int G[MAX][MAX];int visit[MAX];int topo[MAX];int cur;int n, m;void dfs(int u){ visit[u] = 1; fo原创 2013-05-06 22:10:49 · 405 阅读 · 0 评论 -
UVa 10012 - How Big Is It?
/* 暴力枚举,模拟放入圆。 半径为R1、R2的两个圆相切,通过勾股定理推出,两圆心的水平距离为 2sqrt(R1*R2) 注意到对一些特殊情况处理,如例子 4 1000.0 1.0 1.0 1.0 最坏时间复杂度为 8!,其实可以优化成 8!/2, 因为排序1、2、3 和 排序3、2、1求出来的值是相等的。*/#include #include #include原创 2013-05-19 18:40:26 · 409 阅读 · 0 评论 -
UVa 439 - Knight Moves
/* 思路: 1、BFS遍历,不必遍历全部 注意点: 1、8*8的棋盘格,骑士的走法与象棋中的马走法相同*/#include #include const int MAX = 8;int visit[MAX][MAX];int dist[MAX][MAX];const int dir_x[] = {-1, -2, -2, -1, 1, 2, 2, 1};c原创 2013-05-06 21:19:26 · 403 阅读 · 0 评论 -
UVa 532 Dungeon Master
/* 思路: 1、BFS最短路径,三维数组,可以向六个方向移动 注意点: 1、L*R*C <= 30*30*30*/#include #include const int MAX = 35;char dungeon[MAX][MAX][MAX];int visit[MAX][MAX][MAX];int dist[MAX][MAX][MAX];const i原创 2013-05-07 17:14:18 · 476 阅读 · 0 评论 -
UVa 10603 - Fill
/*倒水问题,隐式图bfs*/#include#include#include#include#includeusing namespace std;const int MAX = 200+5; // a,b,c<MAXstruct state { int a[3]; //三个水杯 int fa; int water;};state states[M原创 2013-05-21 15:52:34 · 492 阅读 · 0 评论 -
UVa 196 Spreadsheet
/* 思路: 先把函数存起来,之后深度遍历.*/#include #include #include const int ROW = 1000 + 10;const int COLUMN = 18278 + 10;const int EXP = 200; //?const int FUNCTS = COLUMN;struct cell { int val;原创 2013-05-08 22:09:00 · 416 阅读 · 0 评论 -
uva 10054 - The Necklace
/* 思路: 1 判断是否为欧拉回路,条件:不存在度为奇数的点,图是连通的。 2 打印欧拉回路*/#include #include const int MAX_COLOR = 50 + 5;int G[MAX_COLOR][MAX_COLOR];int edge[MAX_COLOR];int visit[MAX_COLOR];void dfs(int原创 2013-05-08 12:16:14 · 444 阅读 · 0 评论 -
UVa 10282 - Babelfish
/*hash*/#include #include #include using namespace std;const int DICT = 100010;const int WORD = 12;char eng[DICT][WORD];char lan[DICT][WORD];int entry;const int MAX_HASH = 1000003;int he原创 2013-05-22 20:34:42 · 433 阅读 · 0 评论 -
UVa 10391 - Compound Words
/*hash, WA了两次。1个单词有多种组合,只要输出1次。*/#include #include #include using namespace std;const int DICT = 120010;const int WORD = 30;char eng[DICT][WORD];int entry;const int MAX_HASH = 1000003;int原创 2013-05-22 22:08:54 · 387 阅读 · 0 评论 -
UVA 10596 Morning Walk
/* 思路: 无向图判断是否存在欧拉回路,条件:1、图是连通的 2、不存在奇点 注意: WA一次,没考虑R=0情况*/#include #include const int MAX = 200 + 10;int G[MAX][MAX];int degree[MAX];int visit[MAX];int N,R;void dfs(int u){原创 2013-05-09 09:47:44 · 459 阅读 · 0 评论 -
UVa 188 - Perfect Hash
#include #include #include #include #include #include #include using namespace std;char line[20][6];struct node{ int a; int t;};node v[20];int w; //单词数int c; //参数cint getW(int i原创 2013-05-22 18:35:26 · 482 阅读 · 0 评论 -
UVa 10422 - Knights in FEN
/*bfs + hash*/#include#include#include#include#include#include using namespace std;typedef int state[25];const int MAX_STATE = 1000000;state st[MAX_STATE];state goal = {1, 1, 1, 1, 1,原创 2013-05-22 16:27:29 · 437 阅读 · 0 评论 -
UVa 784 - Maze Exploration
/* 思路:BFS、DFS都可以*/#include #include const int MAX_X = 30+5;const int MAX_Y = 80+5;char maze[MAX_X][MAX_Y];int dir_x[] = {-1, 0, 1, 0};int dir_y[] = {0, 1, 0, -1};const int DIR = sizeof(di原创 2013-05-10 15:36:31 · 351 阅读 · 0 评论 -
UVa 657 - The die is cast
/* 思路:双层遍历(bfs, dfs都可以),麻烦的是需要记录访问状态。有两类方法: 1、修改原图,外层'*'访问完之后设为'.',内层'X'访问完设为'*',比较简单。 2、不修改原图, 另设标记数组,可以建2个数组分别表示内外层访问情况,也可以把两个数组合为1个(本程序用这种方法)。 结果排序用计数排序就好了,数字都在1-6范围内。*/#include原创 2013-05-10 10:34:21 · 351 阅读 · 0 评论 -
UVa 10167 Birthday Cake
/* 思路:简单枚举 外层加了层循环,改变斜率的变化率(从大到小),使AC时间由原来0.082减至 0.009S*/#include #include #include using namespace std;const int MAX = 50*2+5;int X[MAX];int Y[MAX];int N;void solve(){ int s原创 2013-05-11 19:28:22 · 410 阅读 · 0 评论 -
UVa 10098 - Generating Fast
#include #include #include using namespace std;const int MAX = 10+5;char A[MAX];int main (){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif int n; scanf("%d",原创 2013-05-12 16:48:56 · 344 阅读 · 0 评论 -
UVa 11205 - The broken pedometer
/* 思路:简单枚举 利用STL set去重, AC:0.169s*/#include #include #include #include #include using namespace std;const int MAX_P = 15+5;const int MAX_N = 100+5;int LEDs[MAX_N];int P, N;int min_原创 2013-05-12 11:14:34 · 462 阅读 · 0 评论 -
UVa 131 - The Psychic Poker Player
/* A 2 3 4 5 是顺子, T J Q K A也是顺子 1. straight-flush 同花顺 2. four-of-a-kind 四张 3. full-house 3+2 4. flush 同花 5. straight 顺子 6. three-of-a-kind 3张 7. two-pairs 2对 8. o原创 2013-05-12 14:55:38 · 460 阅读 · 0 评论 -
UVa 167 - The Sultan's Successors
/* 八皇后问题两种方法实现,参考《算法竞赛入门经典》*/#include #include #include using namespace std;const int MAX = 8;const int RESULT = 100;int row[MAX];int save[RESULT][MAX];int cur = 0;int m[MAX][MAX];int原创 2013-05-13 11:47:28 · 446 阅读 · 0 评论 -
UVa 729 - The Hamming Distance Problem
#include #include #include using namespace std;const int MAX = 16+4;int A[MAX];int main (){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif int T; scanf("%d", &T原创 2013-05-14 09:34:08 · 393 阅读 · 0 评论 -
UVa 592 - Island of Logic
/* 思路:枚举所有情况。 this is impossible. 所以情况都不满足条件。 No facts are deducible. 有满足条件的情况,但是情况之间没有交集,也就是说原条件不能推导出任何结论来。 fact: 满足条件的情况之间的交集。*/#include #include #include using namespace std;原创 2013-05-14 17:28:10 · 805 阅读 · 0 评论 -
UVa 10057 - A mid-summer night's dream.
/*绝对值含义:点点之间的距离n为偶数取中间区域n为奇数取中间点排序 + 二分查找*/#include #include #include #include using namespace std;const int MAXN = 1000000;int A[MAXN];int n;int main(){ #ifndef ONLINE_JUDGE f原创 2013-05-28 19:48:16 · 376 阅读 · 0 评论 -
UVa 10132 - File Fragmentation
/*串长= 最短串长 + 最长串长先按长度排序,枚举出串*/#include #include #include #include #include #include using namespace std;const int MAX_FRAG = 300;string frags[MAX_FRAG];int n;map m;map::iterator ite;b原创 2013-05-27 20:36:50 · 348 阅读 · 0 评论 -
UVa 270 - Lining Up
/* 任取1点,计算出其他点到该点斜率,斜率相同的点必然在一条直线上。 枚举n 斜率排序nlgn 时间复杂度n^2lgn*/#include #include #include #include #include #include using namespace std;const int MAX = 705;const int INF = 1<<30;原创 2013-05-28 11:18:52 · 576 阅读 · 0 评论 -
UVA 127 "Accordian" Patience
//用STL list来表示一叠牌,list每个节点是一个数组栈。 STL list用起来还是用点不方便,自己写一个代码就有点乱了。 AC:0.345s#include #include #include #include struct piles { int size; //牌个数 char cards[60][3]; //牌};using namespace原创 2013-04-30 10:35:38 · 408 阅读 · 0 评论