摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1983封锁出口或者入口周围的格子.最多需要4个封锁点.所以我们可以采取这样的策略:1.寻找一条盗贼的可行路线,如果没有,返回0.2.计算封锁出口和入口四周需要的封锁点数量,取小的一个,假设是k,k <=43.从少到多,遍历所有封锁点个数小于k的方案,验证是否是一条有效的覆盖方案(可以通过是否阻止了1中的盗贼线路进行快速验证).如果有有效覆盖方案,返回这个方案的覆盖点值,否则继续.4.如果没有比k小的覆盖方案,返回k.时间复杂度:最多(M*N)^3次有效覆盖验证.即(8*8)^3=256k次.其中有很大一 阅读全文
posted @ 2011-05-17 15:43 敌敌 阅读(521) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1253//这题是简单的三维搜索,将而为的坐标改为三维//其他的按照正常的bfs框架// 984 ms 1544 kb #include <stdio.h>#include <stdlib.h>#include <memory.h>#include <iostream>#include <queue>using namespace std;int map[55][55][55];int T;//魔王到达的时间int a,b,c;int directio 阅读全文
posted @ 2011-05-17 15:12 敌敌 阅读(147) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1242#include<stdio.h> #include<string.h> #include<iostream> #include<queue> using namespace std; int dir[4][2]={0,1,0,-1,1,0,-1,0}; int si,sj;//公主的起始横纵坐标,int n,m; char map[201][201]; struct node { int x,y; int time; }; priority_queue& 阅读全文
posted @ 2011-05-17 15:04 敌敌 阅读(546) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2553// 采用深度搜索的方式进行搜索,每次放置一个皇后是都得用check()函数进行判断,要是可以放下去,则皇后数目加一,继续进行深度搜索//这里采用的不是传统的二维数组,而是一位数组 queen[n] = i;其中n是行的数目,也是皇后的数目,i是列的数目//这题还有一个特点是测试的数据特别多,因此如果不将第一次获得的数据保存在数组中的话,下次则还要重新计算,绝对会超时// 31ms 152kb #include <stdio.h>#include <stdlib.h>int qu 阅读全文
posted @ 2011-05-17 14:45 敌敌 阅读(995) 评论(0) 推荐(0) 编辑