上一页 1 2 3 4 5 6 7 8 9 10 ··· 23 下一页
摘要: 题目大意:给一个n*m的方格地图,每个方格中有一个字符,'.'草地,'*'泥巴地,给你一些宽为1方格大小的板子,长度不限,问最少需要多少板子才能盖住所有的泥巴地,但是不能盖住草地,板子允许相互覆盖。分析:扫描行,将连通的泥巴地看成一个结点,这样得到二分图的X部,按同样的方法扫描列得到二分图的Y部,有公共方格的结点之间连边。View Code #include <stdio.h>#include <string.h>#define N 51#define M 51char map[N][M];bool g[N*M][N*M];int n,m 阅读全文
posted @ 2012-08-01 17:19 BeatLJ 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题意:给定n个单词(均为大写字母)和一个文本(均为可见字符),求每个单词在文本中出现的次数。单词数不超过1000,长度不超过50,文本长度不超过2000000分析:AC自动机基础题。一个小的优化:由于单词均为大写字母,所以建字典树时第二维大小可以只开26,这样可以节约时间和空间,在扫描文本时(均为可见字符),碰到非大写字母时,直接将指针指向根结点,继续扫描下一个字符即可。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;#define LEN 阅读全文
posted @ 2012-07-31 21:43 BeatLJ 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题意:给n个单词和一个文本,求有多少个单词出现在文本中。据说这题是AC自动机的模版题。这题也是我写的第一个AC自动机的题。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;#define LEN 55#define N 10010int n,node;int next[N*LEN][26];int cnt[N*LEN];int fail[N*LEN];void init(){ memset(next[0],0,sizeof(next[0])); 阅读全文
posted @ 2012-07-31 17:16 BeatLJ 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个n*n的棋盘,棋盘中的'X’代表障碍物,'.'代表空地,问在空地上最多放多少车,使得它们不会互相攻击。分析:由于n比较小,应该可以直接暴力,这里用的二分匹配的方法。建图:先扫描行,连通的格子看成一个结点,这样可以得到二分图的X部,再同样扫描列,得到Y部,有公共方格的结点连边,然后求最大匹配就是结果。正确性分析:扫描行得到的结点之间不可能有公共方格,所以X部的结点内部没有连边,同理Y部的结点内部结点没有连边,所以建立的图是二部图。每个结点内最多只能放一个车,有公共方格的结点最多只能选取其中一个放车,这样就得到一个最大匹配的模型。View Code #incl 阅读全文
posted @ 2012-07-30 20:21 BeatLJ 阅读(623) 评论(0) 推荐(0) 编辑
摘要: Description一个每块地板标记着0~9某个数字的迷宫,其中标记1的地板不可以走,标记2~9的地板可以不花时间地跳到任意相同数字的位置,也可以和标记0的地板一样向前后左右任意方向花1个单位时间移动1的距离。给出起点和终点,求起点到终点的最短时间。Input每组数据第一行一个n,表示尺寸,2 <= n <= 100。接下来n行每行n个0~9的字符,或S表示起点,E表示终点,S和E的运动规则与0相同。整个地图只有一个S和一个E。Output每组数据输出一个数,占一行,表示起点到终点可以花费的最短时间。如果无法到达重点,输出"Oh No!"Sample Inpu 阅读全文
posted @ 2012-07-30 17:44 BeatLJ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Description 现在有一个N个整数组成的序列,这N个整数的标号分别为1, 2, ..., N,对这个序列一共进行两类操作: ① 1 x y:表示将第x个和第y个(包括x、y)整数之间的所有整数的二进制的最低位的1变为0,如果某个整数的值为0,则不对这个整数做任何改变。 ② 2 x y :表示你需要回答第x个和第y个(包括x、y)整数之间的所有整数异或的结果。Input 输入包含多组测试数据。 对于每组测试数据,第一行包含两个正整数N(2<=N<=10^4)、M(1<=M<=10^5),表示这个序列一共有N个整 数,你需要处理M次操作。接下来一行一共有N个不超过2 阅读全文
posted @ 2012-07-30 17:40 BeatLJ 阅读(218) 评论(0) 推荐(0) 编辑
摘要: Description 在另一个平行宇宙中,有一个神奇的国度名叫天朝。天朝一共有N个城市(标号分别为1, 2, …, N),M条道路,为了方便交通管制,天朝的M条道路都是单行道。 不久前天朝大选,小Q当选了天朝的总统。小Q家住在城市1,但天朝的办公地点在城市N,于是为了便于工作,小Q决定举家从城市1搬迁到城市N去居住。然而小Q惊奇的发现,现在并不存在从城市1出发到城市N路线。 但这点难题是无法阻挡天朝总统的,小Q决定行使总统的权利下令更改一些道路的通行方向,使得至少存在一条从城市1出发到城市N的路线,但为了节省时间和资源,他希望更改通行方向的道路尽可能少,你能帮帮小Q吗?Input 输... 阅读全文
posted @ 2012-07-30 17:33 BeatLJ 阅读(293) 评论(0) 推荐(0) 编辑
摘要: Description有很多个棱长为1的正方体货物整齐地堆在一堆。不过有一些是悬空的, 大概是粘上去的吧。。。给出这些货物的相邻关系,求最小的长方体(或正方体)能装下这些货物的集装箱的体积,(集装箱棱长方向与这些正方体三个棱方向平行)。Input每组数据第一行一个n,表示有n个货物。1 <= n <= 1000接下来n行每行6个数,第i行表示以棱方向为轴的x轴正负、y轴正负、z轴正负方向与第i个货物相邻的货物编号(i为1~n),0表示无该位置信息。Output如果描述出现矛盾或者无法确定货物是堆在一起的,输出"What?",否则输出集装箱体积。Sample In 阅读全文
posted @ 2012-07-30 17:29 BeatLJ 阅读(258) 评论(0) 推荐(0) 编辑
摘要: DescriptionHarmony is indispensible in our daily life and no one can live without it----may be Facer is the only exception. One day it is rumored that repeat painting will create harmony and then hundreds of people started their endless drawing. Their paintings were based on a small template and a s 阅读全文
posted @ 2012-07-30 17:25 BeatLJ 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给一个字典和一些单词,根据字典翻译这些单词,若字典中没有就输出"eh"。View Code #include <stdio.h>#include <map>#include <string>using namespace std;#define N 11map<string,string>dic;int main(){ char a[N],b[N]; char c; scanf("%s%c",a,&c); while(c==' ') { scanf("%s&quo 阅读全文
posted @ 2012-07-30 17:17 BeatLJ 阅读(174) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 23 下一页