04 2013 档案
摘要:DescriptionYou are playing the game ‘Whack the Groundhog’ with your little nephew. Considering your terrible performance, you decide to get some help to establish your glory image in front of him. The first is to collect some necessary data. After a few times of practicing, you get to know exactly w
阅读全文
摘要:DescriptionYou are given a number matrixAwithNrows andMcolumns. Elements in the matrix are referred asAi,jwhere 0≤i<Nand 0 ≤j<M. The matrix has the following two properties:lFor each row, the numbers increase from left to right, that isAi,j-1≤Ai,jfor all 0 ≤i<Nand 1 ≤j<MlFor each column,
阅读全文
摘要:题目链接:http://poj.org/problem?id=3460题意:有一些高度不等的书,可以一次取出一摞相对顺序不变的书插入任意位置,问最少多少次操作才能使书的高度递增有序。IDA*,刘汝佳黑书P169的例题,经典题目,启发函数的设计十分巧妙。以“h(s)=后继书本高度正确的书本个数”为估价函数,假设每次把一摞书本S从P1后面移动到P2后面,只有P1,S1的最后一本,P2三本书的后继有变化,h每次最多减少3,令h'=h(s)/3作为估价函数值,则每次h最多减少1。 1 #include <cstdio> 2 #include <cstring> 3 #i
阅读全文
摘要:题目链接:http://poj.org/problem?id=3322源自Bloxorz游戏:点此试玩挺有意思的一题,搜索本身不难,主要在表示状态上想了很长时间。木块的状态可以压缩为三种:直立,横放,竖放。每种状态记录最上边或者最右边的坐标即可。初始状态不一定是竖直放的,我玩了几关游戏,初始状态都是竖直放的,我就默认为初始状态竖直了于是WA了几次……也可能有这种情况:7 5######...##O..##...##.XX##...######还有最好把全部的图都读入进来之后再判断起始坐标,读一个点判一次容易出错。单向广搜:11520958gbr3322Accepted10280K579MSG+
阅读全文
摘要:二分 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <algorithm> 5 6 #define LL long long int 7 8 using namespace std; 9 10 const int MAXN = 100010;11 12 LL a[MAXN];13 LL M, K;14 int N;15 16 bool check( LL mid )17 {18 LL TotUse = mid * M;19 LL use = 0;2
阅读全文
摘要:题目链接:http://poj.org/problem?id=2374DP+线段树View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <algorithm> 5 6 #define lson l, m, rt << 1 7 #define rson m + 1, r, rt << 1 | 1 8 9 using namespace std; 10 11 const int MAXN = 100000; 12 c
阅读全文
摘要:题目链接:http://poj.org/problem?id=1077经典八数码问题,作为A*与IDA*的入门题来说是很不错的。第一次学习A*与IDA*,代码参考了:http://www.cnblogs.com/liyongmou/archive/2010/07/19/1780861.html推荐一篇介绍A*算法的文章:http://hi.baidu.com/catro/item/4782da1769edbd721109b5e9英文原文:http://www.policyalmanac.org/games/aStarTutorial.htmA*算法的动画演示:http://www.java3z
阅读全文
摘要:题目链接:http://poj.org/problem?id=1195二维树状数组的应用 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 const int MAXN = 1200; 6 int S; 7 int C[MAXN][MAXN]; 8 9 int lowbit( int x )10 {11 return x & -x;12 }13 14 void Add( int x, int y, int add )15 {16 int tpy;17 while ( x
阅读全文
摘要:题目链接:http://poj.org/problem?id=3321刷POJ分类的时候遇到的题,只知道是树状数组,但是分支编号不连续,不晓得怎么用树状数组求和。后来看了解题报告才知道需要把分支通过DFS映射成编号连续的,记录每个子树的起始位置和终止位置,然后再用树状数组求和。即使明白了思路,代码实现上也还是有很多地方不理解。唉,数据结构学得实在有够糟糕……树的邻接表表示法每次往表头插入节点也让我费解了好半天Orz…… 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 cons
阅读全文
摘要:题意:在不改变表达式的含义的情况下去除多余的括号,输入保证表达式是正确的。WA了整整一天,挺有意思的一题。给两组数据,我是主要就错在这两个地方了:2A-((A+A))A-(A+(A))结果都是A-(A+A)思路(优先级从上往下,一开始没考虑优先级的问题):1.开头的括号可去除2.括号内没有运算符的括号可去除3.括号前不是减号的括号可去除 1 #include <cstdio> 2 #include <cstring> 3 4 const int MAXN = 350; 5 6 struct node 7 { 8 char oper; 9 int addr;10 bo..
阅读全文
摘要:题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=443这题刚开始看的时候小郁闷了一下,入门经典把它放在难回溯的分类里,可我怎么也没觉得它跟回溯有啥关系,于是搁置了很久。题意:-是需要删除的文件,+是需要保留的文件,构造一个字符串,使它能一步删除所有需要删除的文件,同时不会误删需要保留的文件。思路:遍历所有需要删除的文件,相同位置字母相同的话,就填充那个字母,否则填充'?',
阅读全文