摘要: 刷了好几道高斯消元的题,感觉掌握的应该差不多了,这道还算比较经典。(感觉高斯消元就是模板题)题目描述:多组数据,N个开关,给出N个开关操作前和操作后的状态,再给出有联系的开关,每行两个数I J,表示如果操作第 I 个开关,第J个开关的状态也会变化。解法:高斯消元,建立一个N*N的方程组,由开关间的状态可以确定方程组的系数,方程组的bn为初状态和末状态异或得出。View Code 1 Source Code 2 3 Problem: 1830 User: celia01 4 Memory: 704K Time: 0MS 5 Language: G++ Result: Accepte... 阅读全文
posted @ 2012-04-06 23:54 celia01 阅读(1757) 评论(0) 推荐(0) 编辑
摘要: 题目描述:求八数码的解,输出x的移动方式(输出步数最少的解,但是也可能会有多解,所以是special judge)如果判断8数码有没有解可以用逆序数求,找出规律即可求解解法一:搜索(没写过)解法二:康托展开,一种hash的方法。int try_to_insert(int s){ int code = 0; for(int i=0;i 9 #include 10 #include 11 #include 12 #include 13 #include 14 #define see(x) cout=0&&newx=0&&newy0) Path(ans);102 el 阅读全文
posted @ 2012-04-06 23:28 celia01 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://poj.org/problem?id=1077题目描述:给出一个迷宫,#表示墙,S表示起点,E表示终点。求从S到E的优先靠左边的墙走、优先靠右边的墙走和S到E的最短路径。解法:求优先靠左靠右的路径,用dfs,求最短路径用bfs即可。dfs中可以用nx = x+move[(i+4)%4][0];ny = y+move[(i+4)%4][1];处理很巧妙View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define see(x) cout q; 19 int bfs(){ 2... 阅读全文
posted @ 2012-04-06 23:03 celia01 阅读(277) 评论(0) 推荐(0) 编辑