关闭

[置顶] 开始你的ACM-ICPC之旅(转)

我觉得这样的文章应该有人写过的,但是Google里面貌似没有(或许有英文版) Baidu给了一个,不过不是很像样http://baike.baidu.com/view/94274.htm 那我就写一个吧,这也是momodi大牛在上个学期初委托给我的一件事情。 这篇文章面...
阅读(1590) 评论(0)

poj 2243 Knight Moves

//这题和1915是一样的题目,只不过这题的输入需要进行转换,还有这题没有给出具体的棋盘和棋子的 //走法,如果对国际象棋不熟悉的人来讲,是很难读得明白题意的,棋盘和棋子的走法可以参照1915题! #include #include #include using namespace std; const int MAX = 15; map m; string input1, inpu...
阅读(504) 评论(0)

poj 1562 Oil Deposits

//和2386是一模一样的题目,当我在这题用c语言的输入的时候,就出错了,应该是有多个空格或者回车键在 //数据的后面,还是不是很懂c语言的输入,特需要注意! #include #include using namespace std; const int MAX = 110; char matrix[MAX][MAX]; int n, m, vis[MAX][MAX], ans; //每一...
阅读(490) 评论(0)

poj 2386 Lake Counting

#include #include using namespace std; const int MAX = 110; char matrix[MAX][MAX]; int n, m, vis[MAX][MAX], ans; //每一个点的八个方向坐标的增减! int dir[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1,...
阅读(417) 评论(0)

poj 1915 Knight Moves

#include #include using namespace std; const int MAX = 310; int map[MAX][MAX], row, r, l, sx, sy, ex, ey; bool vis[MAX][MAX]; //坐标的变换,即是可以移动的方格 int dir[8][2] = {{-2, -1}, {-2, 1}, {-1, -2}, {-1, 2}...
阅读(421) 评论(0)

poj 1321 棋盘问题

#include using namespace std; const int MAX = 10; char map[MAX][MAX]; int vis[MAX], n, k, ans, sum; //地图的输入 void init() { int i, j; for (i = 0; i < n; i++){ getchar();...
阅读(476) 评论(0)

poj 1154 LETTERS

#include #include using namespace std; const int MAX = 25; char matrix[MAX][MAX]; int r, s, ans; bool vis[30]; void init() { int i, j; for (i = 0; i < r; i++){ getchar();...
阅读(472) 评论(0)

poj 1606 Jugs

#include #include #include using namespace std; const int MAX = 105; int a, b, n, vis[MAX][MAX], step[MAX*MAX], l, r; string opr[7] = {" ", "fill A", "fill B", "empty A", "empty B", "pour B A", "po...
阅读(404) 评论(0)

poj 3414 Pots

//和poj1606的题目的解法是一样的,不过有点地方需要注意,这题当没解的时候要输出impossible,还有无论是哪个杯的水的容量符合要求就可以输出了! #include #include #include using namespace std; const int MAX = 110; int a, b, c, r, l, vis[MAX][MAX], step[MAX*MAX];...
阅读(1044) 评论(1)

poj 3210 Coins

/*思路:若n为偶数: 1: 若初始状态为偶数正面 + 偶数反面,要想变成全正或全反,翻转的次数必为偶数。 例如: ○○●●●● 则翻转 2,4,6,8……次均可。 2: 若初始状态为奇数正面 + 奇数反面,要想变成全正或全反,翻转的次数必为奇数。 例如: ○○○○○● 则翻转 1,3(先将●翻为○,再将任一个○翻两下),5,7……次...
阅读(489) 评论(0)

poj 3278 Catch That Cow

#include #include #include using namespace std; const int MAX = 100001; int n, k, path[MAX]; bool vis[MAX]; void bfs() { int tmp; queue q; //队列的初始化 while (q.size() != 0)...
阅读(350) 评论(0)

poj 1979 Red and Black

//这题属于简单的搜索题,可以分别用bfs和dfs来做! #include #include #include #include using namespace std; const int MAX = 25; char map[MAX][MAX]; int i, j, w, h; int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}...
阅读(469) 评论(0)

poj 3974 Palindrome

#include #include const int MAX = 1000005; char str[MAX], Manacher_str[2*MAX]; int len, tc = 0, p[2*MAX]; using namespace std; void change() { int i; Manacher_str[0] = '@'; Manacher...
阅读(674) 评论(0)

Manacher算法:求解最长回文字符串,时间复杂度为O(N)

回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。 经常有一些题目围绕回文子串进行讨论,比如POJ3974最长回文,求最长回文子串的长度。朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、后缀数组、AC 自动机,这道题目...
阅读(30793) 评论(8)

poj 3637 Shopaholic

//贪心算法,简单! #include #include #include using namespace std; const int MAX = 20001; int prices[MAX]; bool cmp(int a, int b) { return a > b; } int main() { int i, tc, num, ans; scanf(...
阅读(773) 评论(0)

poj 3664 Election Time

#include #include #include using namespace std; struct Info{ int index, fv, sv; }info[50001]; bool cmp1(Info a, Info b) { return a.fv > b.fv; } bool cmp2(Info a, Info b) { retur...
阅读(687) 评论(0)
436条 共30页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:420193次
    • 积分:8232
    • 等级:
    • 排名:第2697名
    • 原创:414篇
    • 转载:22篇
    • 译文:0篇
    • 评论:58条
    最新评论