poj
文章平均质量分 75
kaikai7654321
每个大师都有一颗学徒的心
展开
-
Poj1416: Shredding Company
1.只能说很遗憾,自己也不知道哪里错了。但就是WA。所有测试数据包括别人给的都是对的。包括自己随便写也是。但是就是WA 2.逻辑很重要。原来自己用的step而不是start和end,就错的离谱。3. 另外,要单独有个path记录,每次得到最短路径之后都要new一个新的list记下来。因为还有回溯。4. 还有关于重复最优解就拒绝。有个计数器就可以了。5. 大体思路其实很简单,就原创 2016-10-28 14:47:20 · 1200 阅读 · 0 评论 -
每日一题(5):poj2485, Highways
1. 题目很简单。一开始自己就写出来了,然后一直WA,不知道为啥,后来经过两个小时,发现了,就是越界。不知道就是memset不可用,然后自己用for复制。但是再边界用了等号。导致一直错。不知道为什么ide不报错。感觉这算是对C++不熟导致的问题了。2. 还有memset,一定在看看。感觉教训惨痛。3. 题目就不说了。很简单,很直接。直接最小生成树就可以了。原创 2016-11-15 12:22:22 · 355 阅读 · 0 评论 -
每日一题(14): poj1260
1. 一次ac248K 0MS2. 其实就是公式。如前面所说。只要有公式就好办。一看感觉可以用动态规划。dp[i] = max{d[i-1]+(num[i]+10)*price[i], dp[j]+c[j+1,i]};关键是后面的动态那部分怎么写,也就是c[j+1,i]是怎么算。这里就是吧从j+1...i全部当成i层。可以想到,如果你觉得j+1...i之间还可以细分层,这么想是对原创 2016-12-01 11:52:43 · 316 阅读 · 0 评论 -
每日一题(15): poj2533
1. 直接用之前的lis代码了。而且那段代码求了序列出来。删掉一部分。但是交了两次都wa。后来发现,忘了注释掉重定向了。2. 没啥可说,主要是公式,而且很简单,就是dp[i] = max{dp[i],dp[j]+1}. 另外,不一定最后的最大。所以最后一个循环找到最大的。代码:#include#include#includeusing namespace std;co原创 2016-12-01 14:57:04 · 259 阅读 · 0 评论 -
每日一题(7),poj1094,
1. 关于拓扑排序l 在我们所有可以选择的课程中,任意两门课程之间的关系要么是确定的(即拥有先后关系),要么是不确定的(即没有先后关系),绝对不存在互相矛盾的关系(即环路)。以上就是偏序的意义,抽象而言,有向图中两个顶点之间不存在环路,至于连通与否,是无所谓的。所以,有向无环图必然是满足偏序关系的。l 所谓全序,就是在偏序的基础之上,有向无环图中的任意一对顶点还需要有明确的关原创 2016-11-19 10:56:10 · 335 阅读 · 0 评论 -
每日一题(17): poj1080
1. 原来没有思路。因为LCS有点不熟。但是参考了网上的解法,有了思路,就自己写出来了。主要参考:点击打开链接2. 其实就是把之前的动态规划公式延伸了一维。因为之前虽然背包问题也可以是二维,但是毕竟可以化为一维。因为后一种状态只和其中一个index(j)有关。这也是可以化为一维的原因。但是此题不同,就是二维。当然,如果熟悉LCS,就可能会容易一点。公式:dp[i][j] = max原创 2016-12-01 20:05:03 · 314 阅读 · 0 评论 -
每日一题(18): poj1159
1. 自己思考思路的时候开始觉得用动态规划,但是想不出公式。后来觉得如果把输入的字符串反过来,然后和原来的字符串相比求最大序列,然后答案就是原来的序列减去最大序列了。因为无法匹配的肯定需要添加。可以匹配的话就一定会出现在最大序列里面。这可以用反证法证明。解决了方法的问题。下面就是代码。其实就是一个最大序列匹配的问题。也是动态规划,公式:dp[i][j] = max{dp[i][j-1],dp[i-原创 2016-12-02 10:02:02 · 384 阅读 · 0 评论 -
编码(1):unicode,utf-8和其他编码
1. 字符集:ASCII字符集,最初的字符集,对应了ANSI文件编码,一个字符用一个字节表示,严格来说这个时候字符集和文本文件的编码并没有必要作为单独的概念加以区分;从此也可以看出,原来是没有中间的字符集的抽象的。字符集就是编码方式,编码解码直接对着字符集的映射表即可。二者是一个概念。西欧字符集、日韩、港澳台、国标字符集等,仍然使用了ANSI文件编码,其中部分字符集一个字符要用两个字节;U原创 2016-12-06 19:28:14 · 673 阅读 · 0 评论 -
每日一题(9):poj1459
1. 一定要先看网络流。2. 本题可以转换成网络流里面的最大流。只要把生产者都连到同一个起始原点,消费者都连接到一个终止点。这样就转换成了到终止点的最大流问题。3. 关于网络流,建议到网上看一下,理论上主要有三点,就是f4. 实际操作的时候,需要明白两个概念。增广路,残余网络。首先,要明白求最大流的话,指的是在起始点流量无穷的情况下,同时能到达终点的流量有多大。网上好多给出的图里面就有原创 2016-11-25 17:18:52 · 328 阅读 · 0 评论 -
每日一题(13): poj1836
1. 自己没有思路。因为也没有看过最长上升或者下降序列的知识,而且自己的思路是动态规划,但是觉得两头都可以,就感觉没有思路了。2. 看到网上的做法:主要参考:http://blog.csdn.net/non_cease/article/details/69007513. 所谓的因为最高的两个人不一定相邻,所以第三个循环才需要两层。4. 想明白了其实很简单。思路就是,从1..原创 2016-11-30 16:25:20 · 257 阅读 · 0 评论 -
每日一题(4),poj1789, Truck History
1. 题意:主要是两点,就是type之间的距离指的是相同位置不同的字母数,然后公式是全部的(n-1)个距离相加的最小值。这时候就可以看出来是用最小生成树了。另外,体重求距离相加倒数的最大值,就是距离之和的最小值。2.总体来说就是prim生成树。但是有两点问题,一个是自已一直以为需要用set,但是发现不需要。只需要用一个数组存着目前每个点的最小值(访问过的用一个boolean数组控制),然后找出原创 2016-11-14 19:43:53 · 218 阅读 · 0 评论 -
poj1426: Find the Multiple
1. 题目就是找到一个数的可以用01序列表示的最小倍数。2. 自己用java写,无法ac,超时。到网上查,发现大家说的也是此题可以水过去,就是数字是不需要大数的。按照正常的bfs即可。下面第一段代码就是bfs,但是没有ac.但是大家用的都是c++。自己用java无法。3. 后来参考了高手的,才觉得写得真好。首先用同余模定理简化,当然,其实按理论最后的结果还是很大。但是按照测试,此题不用大数原创 2016-10-28 15:04:25 · 366 阅读 · 0 评论 -
每日一题(1): poj2676: Sudoku
1. 题目的意思很简单。但是原来不知道怎么下手进行深搜。后来看到点击打开链接的思路,使用三个bool二维数组进行标记,才茅塞对开。在此表示感谢。推荐看看。2. 其实就是怎么判断的问题,因为搜索还是从头开始,按照坐标一步一步,就是判断原来觉得难。但是三个二维数组分别是行,列,小方格的判断,第一个下标就是行,列,和根据行列求出的方格序数。第二个下标就是1-9的数字。感觉一下子就解决。3. 还有原创 2016-10-29 12:12:39 · 339 阅读 · 0 评论 -
每日一题(2):poj1129: Channels Allocation
1. 关于复杂度的计算。没有用四色定理。直接暴力加剪枝。2. 148K 0MS, 要求:Time Limit: 1000MS Memory Limit: 10000K3. 主要是原来无从下手。后来看了点击打开链接才有了思路。主要就是map二维函数和color一维,给了自己思路。map的第一个参数用本点,然后二维是相邻点。color则是记录每个点的颜色。4. 输入值得原创 2016-10-31 00:01:19 · 300 阅读 · 0 评论 -
每日一题(5)poj,1258, AgriNet
1. 题目很简单,直接的最小生成树。一次ac。296K 47MS 2. 感觉自己需要练练别的方法。prim算是很熟悉了。3. 还是不要忘了吧minw的赋值放到while循环里面。4. 在这里总结一下关于prim方法的步骤:4.1. 初始化。需要初始化的变量比较多。包括:1. 初始点;2. 返回值。3. 记录添加到生成原创 2016-11-16 11:12:39 · 272 阅读 · 0 评论 -
每日一题(3)poj2513: Colored Sticks
1. 关于欧拉路(Euler’s Path)和欧拉回路(Euler’s Circle), 含有欧拉回路的图又叫欧拉图如果给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,这条路称为欧拉路;如果给定无孤立结点图G,若存在一条回路,经过图中每边一次且仅一次,那么该回路称为欧拉回路。存在欧拉回路的图,称为欧拉图。一、 对于无向图G,具有一条欧拉路,当且仅当G是连通的,且有零个或原创 2016-11-01 19:21:08 · 316 阅读 · 0 评论 -
每日一题(11): poj1276
1. 本来觉得很简单,却耗费了一天半的时间。本来做完1837之后感觉已经明白了怎么做。但是事实仿佛并非如此。当然,这也有自己的一点执念。2. 这几天体会到,写程序就像做数学题一样,很忌讳一算就错。程序也是,不能想起来觉得这样这样,但是写起来没有把握对。就像前两天有个演讲说的那样,印度的程序很厉害,因为所有人写的都一样。程序是工业产品,流水线上的产品,是有标准答案的。3. 总觉得不要原创 2016-11-29 20:59:49 · 282 阅读 · 0 评论 -
每日一题(7):poj3026,BorgMaze
1. 题意比较难理解的地方就是会分成几组,其实不用管。因为最小生成树,无论怎么分,无论谁来走,只要最后计算的是最小生成树的最后权值即可。2. 另一点就是思路。知道肯定要用最小生成树。但是因为每两点间的距离并没有给出来。所以需要先获得距离矩阵。需要用bfs。但是不是传统的bfs,因为这里要求得是全部点间的最短距离。需要使用循环来利用bfs,每次求一个点到其他点间的距离。另外,原创 2016-11-17 15:26:30 · 345 阅读 · 0 评论 -
每日一题(12): poj3276
1. 这道题还是动态规划。原来自己没有思路,没有想到公式。看到网上才明白。然后自己写了一个:参考:点击打开链接 代码:#include#include#includeusing namespace std;char word[605][26];char msg[302];int w,l;int d[302];int main(){//重定向从文件读入f原创 2016-11-30 11:12:50 · 301 阅读 · 0 评论 -
每日一题(10): poj1837
1. ac,1420K 32MS,2. 这题是动态规划,这是网上的poj的提醒分类里面第一道动态规划。所以一般做这道题可能和我一样,之前还没懂动态规划。其实动态规划目前我懂的就是把大问题分解为子问题来解决。3. 这道题是需要用上全部的砝码的。一开始觉得这需要组合,那就太庞大了。但是觉得用动态也不对啊。因为需要上全部的砝码。后来就明白了。网上大多数结题报告里面说原创 2016-11-28 16:31:55 · 287 阅读 · 0 评论