- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 SGU 249 Matrix
格雷码。。#include #include #include #include using namespace std; int grayCode[10000000]; int main() { int s,n,m,pn,pm,t,i,j; scanf("%d%d",&n,&m); s=pow(2,(n+m)); pn=pow(2,n); pm=p
2013-04-22 21:28:44 811
原创 LA 3618 Cubic Eight-Puzzle
立体的八数码问题。 普通的DFS和BFS就别想了,迭代加深TLE,而用启发式搜索又想不到合适的启发函数。可发现目标状态有固定的2^8种,而状态转移的方式最多只有4种......所以用双向bfs,应该能解决问题。因为会产生很多重复的状态,所以用hash表判断一下重复的状态。stl的hash会TLE,所以还是手写静态链表哦。 #include #include #include
2013-04-22 21:22:29 1308
原创 UVa 11212 Editing a Book
黑书P207 例题 IDA* 搜索,估价函数设计得很经典。 #include #include #include using namespace std; class Board { public: int a[16]; int h; int n; bool readIn() { int i; scanf("%d",
2013-04-22 21:03:16 1964
原创 POJ 3856 deltree
模拟题。 deltree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 58 Accepted: 33 Description You have just run out of disk space and decided to delete some
2013-04-22 21:00:05 745
原创 POJ 2870 Light Up
题意简述:在n*m的格子中放置灯泡。其中格子中有些障碍,灯光可以照亮上下左右的格子,光线会被障碍挡住。 题目解法:搜索。 每个状态的转移会产生很多状态,而目标状态有是不固定的,所以不能BFS或双向BFS。但是DFS又很容易陷入搜索到很深但是却又是错误的状态,而最优解的深度又是不深。所以考虑使用迭代加深搜索。 剪枝:搜到每个障碍时,发现上面的格子是空的,剪枝。
2013-04-22 20:55:10 1656
原创 POJ 3852 String LD
简单题,第一次提交居然TLE了。然后以为暴力不行,所以写了个Trie树,汗...赛后和别人讨论发现是可以暴力的。 #include #include #include using namespace std; int ans; struct Trie { int dep; int next[26]; bool init(int d) { d
2013-04-22 19:54:36 959
原创 LA 5506 Eight
同样是South Central USA 1998的题,POJ和HDU上的数据比较水,用BFS不加任何优化都可以AC,时间一般是三位数左右。而用A*或IDA*则可以把时间控制在10ms左右,甚至0ms! 然而UVa Live上的这道题是多数据的,用IDA*不加优化都会超时。除此之外题目输入输出很严格,case和case之间必须有空行,在最后一组case之后不能有空行,否则会Wr
2013-04-17 13:07:28 787
原创 LA 3211 Now or later
训练指南 P325 例题 2-SAT问题+二分。 题目的数据范围小,所以用朴素的算法解2-SAT能过。 tarjan的SCC算法判2-SAT #include #include #include #include #define MAXN 2200 #define MAXN_2 4400 using namespace std; int min(int a,int b) {
2013-04-11 17:34:28 1088
原创 UVa 11235 Frequent Values
训练指南 P198 例题 在一个非降序数组中寻找区间内出现次数最多的值的出现次数。 用线段树和RMQ都能AC。 RMQ解法 #include #include #include #define INF 0x7fffffff using namespace std; int n; int a[120000]; int nb[120000],b[120000],bv[120000],l[
2013-04-11 17:31:44 1192
原创 LA 3027 Corporative Network
并查集的应用。 在压缩路径的时候维护一个dist数组,保存其到祖先的长度。 #include #include #include using namespace std; int uset[21000],dist[21000]; int abs(int a) { return a>0?a:-a; } bool init() { int i; for (i=0; i
2013-04-11 17:28:25 894
原创 LA 4329 Ping pong
训练指南 P197 例题 扫描一下所有的i,计算出从1到i-1有多少个数比它大,和从i+1到n有多少个数比它大。 然后就是交叉相乘算出总的方案数。 #include #include #include #define INF 120000 using namespace std; long long a[21000]; long long l[21000],r[2100
2013-04-11 17:25:14 1645
原创 LA 3942 Remember the Word
训练指南 P209 例题 用trie树使得每次寻找递推的下一步。 #include #include #include #define MOD 20071027 using namespace std; struct Trie { bool tag; int next[26]; bool init() { tag=false;
2013-04-11 17:21:50 1650
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人