![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ
chenxiaoran666
人要有梦想,不然和咸鱼有什么区别!
展开
-
【POJ1080】Human Gene Functions(动态规划)
题面:【POJ1080】Human Gene Functions 这道题目一看就能想到用DP来做。 首先,先把题中的表格放在一个函数中: int s(char x,char y) { if(x=='A') { if(y=='A') return 5; if(y=='C') return -1; if(y=='G') return -2; if(y=='T') retur...原创 2018-04-07 13:52:16 · 408 阅读 · 0 评论 -
【POJ1159】Palindrome(动态规划)
题面:【POJ1159】Palindrome 这道题是一道较水的DP题。 我们可以用f[i][j]来表示把[i..j]这个区间变成一个回文串所需添加的最少字母数,这样我们就可以轻松地得到状态转移方程: 当s[i]==s[j]时,f[i][j]=min{f[i+1][j-1],f[i+1][j]+1,f[i][j-1]+1};当s[i]!=s[j]时,f[i][j]=min{f[i+1][j]...原创 2018-04-07 15:04:27 · 770 阅读 · 0 评论 -
【POJ3122】Pie(二分)
题面:【POJ3122】Pie 按理来说,这题应该是一道很水的二分题,可是精度问题却折磨了我很久很久,经过无数次的修改,我总算A了这一题。 你可以二分最终每个人所能得到的Pie的大小,而验证函数check()其实也非常简单: bool check(double x)//验证函数 { int t=0;//记录当Pie的大小为x时所能得到的Pie的数量 for(int i=1;i<=...原创 2018-04-14 09:46:34 · 644 阅读 · 0 评论 -
【POJ3253】Fence Repair(合并果子的翻版)
题面:【POJ3253】Fence Repair 考虑到每一次切割所花费的代价是所切割的木板的长度,那我们就可以反向思考,合并两块木板所花费的代价是这两块木板的长度和,那么问题就转化为了将输入中给出的N块木板给两两合并在一起。于是,我们会惊奇地发现这道题其实就是合并果子的翻版,一道用小根堆来优化的贪心题! 当然了,手打堆是比较麻烦的,相比之下,C++自带的优先队列就好用多了。代码见下: #...原创 2018-04-14 13:50:56 · 237 阅读 · 0 评论 -
【POJ2251】Dungeon Master(三维BFS)
题面:【POJ2251】Dungeon Master 这是一道很有意思的题目,平时我们所接触的BFS大多是二维的,可这题不一样,这题是一道三维BFS!!! 这题不需要多讲,直接上代码就可以了: #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #...原创 2018-04-14 14:39:53 · 264 阅读 · 0 评论 -
【POJ2531】Network Saboteur(一道无需优化的DFS)
题面:【POJ2531】Network Saboteur 可以说,这道题是一道无需优化的DFS,由于N最大只有20,连O(2^n)的复杂度都能过,因此,只需要DFS枚举每一个节点分配到哪一个子集即可。 因此就能得出代码: #include<cstdio> #include<algorithm> #include<iostream> #include<...原创 2018-04-21 12:57:12 · 1073 阅读 · 0 评论 -
【POJ3126】Prime Path(预处理+BFS)
题面:【POJ3126】Prime Path 这道题目要在解决问题之前先预处理出一个四位数的质数表,由于范围很小,只需要枚举1000~9999并用O(√n)的质数判断函数进行验证即可,当然,用线性筛或除余法也是可以的(此题时间充裕,不建议用MR素数判断)。 然后便是一个BFS,对于当前数字,只要枚举每一个它能变成的质数,判断是否已操作过,若未操作过则将其加入队列即可。 代码如下: #in...原创 2018-04-21 13:15:01 · 320 阅读 · 0 评论 -
【POJ1988】Cube Stacking(并查集水题)
题面:【POJ1988】Cube Stacking 题意: 有n个编号分别为1~n的立方体以及两种操作,一种是move操作,一种是count操作。move操作就是让你把含x的一堆立方体移到含y的一堆立方体的上面,count操作就是让你求出编号为x的立方体底下有几个立方体。 解析: 一看到这道题,很容易就能想到用并查集来做,而这道题也的确是用并查集来做的O(∩_∩)O~ 首先,我们先来考虑...原创 2018-05-06 12:49:36 · 388 阅读 · 0 评论 -
【POJ2676】Sudoku(类似于八皇后问题的DFS)
题面:【POJ2676】Sudoku 题意: 给你若干个不完整的数独(空的地方用0表示),请你把它们补全(对于每个数独只需输出一种方案)。 解析: 看见这题,我自然而然地想到了八皇后问题,而这题似乎比八皇后问题还要更为简单。 我们可以用a[]数组来存储每一列出现过的数字,用b[]数组来存储每一行出现过的数字,用c[]数组来存储每一大格出现过的数字,这样就可以进行搜索了。 代码如下...原创 2018-05-06 14:48:18 · 330 阅读 · 0 评论