摘要: 题目大意:国际象棋中一共有6种棋子:king(国王)queen(皇后)bishop(教主)knight(骑士)rook(车)pawn(步兵) queen和knight不用说了;rook攻击水平和垂直两条线上的所有格子;pawn攻击前方两条斜线方向各一格;king攻击周围8个方向各1格;bishop攻击两条对角线上的所有格子。除knight以外,所有棋子的攻击范围均会被别的棋子所阻挡。(“前方”指x递增的方向,x行y列)。给出的棋盘上的棋子可能互相会攻击,不过你不用理会这些,你只要保证你摆放的bishop不与它们以及不互相攻击就可以了。问在电脑给出的棋盘上,最多能放几个bishop。输入:第一行 阅读全文
posted @ 2012-04-17 20:20 Codinginging 阅读(321) 评论(0) 推荐(1) 编辑
摘要: 有向图有 N 个节点,从节点 0 出发,必须恰好在 T 时刻到达节点 N-1。 现在给出该有向图,总共有多少种不同的路径注意:不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。用矩阵乘法把n个01邻接矩阵(连通性矩阵,a[i,j]=1表示 i 到 j 有一条有向边相连),则a[i,j]就表示走n步后从i到j的不同的路的条数。由于题目中边有权,而权值只是1..9,所以可以把每个点拆成9个点,即第i个点变成第9*(i-1)+1到第9*(i-1)+9个点,把这n个点各自拆出来的9个点串连即a[9*(i-1)+j,9*(i-1)+j+1]:=1(1<=j<=8),读入邻接矩阵时i到 阅读全文
posted @ 2012-04-17 18:07 Codinginging 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 每一切只能平行于一块蛋糕的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成N块蛋糕,必须切N-1次。为了使得每块蛋糕看起来漂亮,我们要求N块蛋糕的长边与短边的比值的最大值最小。求出这个比值。最大最小≈二分答案。。。。然后搜索判定,dfs(xx,yy,limit,nn)表示要把长宽为xx,yy切成nn块蛋糕,答案不超过limit是否可行。View Code 1 program cake(input,output); 2 var 3 x,y,n:longint; 4 answer:double; 5 s:double; 6 procedure init; 7 begi... 阅读全文
posted @ 2012-04-17 16:44 Codinginging 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题意略过,把棋盘上点交叉黑白染色,坏点为-1,则每个骑士在合理跳跃的前提下总会跳到一个不同颜色的点,我们把这两个点连边,问题转化为最大独立子集问题,用匈牙利最大数据0.39水过,第9个点用cena暴栈,但是直接运行没有问题,囧View Code 1 program knight(input,output); 2 type 3 node = ^link; 4 link = record 5 goal : longint; 6 next : node; 7 end; 8 var 9 l ... 阅读全文
posted @ 2012-04-17 15:34 Codinginging 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 又是一道平面图的题,有向边的处理要注意一下,向右的向上连,向下的向右连,向左的向下连,向上的向左连,然后转化即可,对于向上,左的,边界处的边没有必要连,最后还得用dijkstra,反正我的spfa超时2个点,不知道它牛怎么过的,只好打堆了...View Code 1 program noi2010(input,output); 2 type 3 node = ^link; 4 link = record 5 goal,w : longint; 6 next : node; 7 end; 8 var ... 阅读全文
posted @ 2012-04-17 07:34 Codinginging 阅读(442) 评论(0) 推荐(0) 编辑