自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 POJ 3295 Tautology

这道题是让判断一个MMF是否为永真式,所以要枚举每个变量的值,然后用求前缀表达式的方式,用递归求值,但是这道题有两个特别诡异的错误调试了很久,看了讨论区才突然明白是怎么回事。在递归的过程中我使用的是work()函数进行求值,然后使用了语句return work()&&work()然而这个语句是有问题的,在C++当中,如果第一个work()的返回值是0,那么后边的work()函数就不会被执行,所以应该

2016-01-20 15:34:03 304

原创 POJ 1014 Dividing

突然忘记怎么写背包,数据量比较小干脆直接深搜了一下,感觉速度还可以,相当于从大到小开始选然后暴力搜索,搜索到结果以后跳出,没有任何剪枝优化= =#include <iostream> #include <memory.h> #include <cstdio> using namespace std;int marble[7]={0}; int sum = 0; int half = 0; int c

2016-01-17 16:53:18 251

原创 POJ 2027 No Brainer

卖萌题目不解释= =#include <cstdio> using namespace std;int main(){ int n; scanf("%d",&n); while(n--){ int a,b; scanf("%d%d",&a,&b); if(a<b) printf("NO BRAINS\n"

2016-01-16 10:57:50 442

原创 POJ 1258 Agri-Net

经典的求最小生成树的题目,只不过题目中的路线是由关联矩阵所给出的,还是套用最经典的算法,把所有的边按照长度从小到大进行排序,然后利用并查集顺次判断每条路的出发点和目的地是不是已经在一个等价类内部了,如果不是的话把这条边的长度加到总长度上然后把两个地点放在同一个等价类里面。另外注意本题一个case里面有很多组测试数据,注意初始化。#include <iostream> #include <algori

2016-01-16 10:53:28 224

原创 POJ 1159 Palindrome

写这个看似简单的题目才发现自己原来毛都不会(╯‵□′)╯︵┻━┻,加上网上有很多的解析其实讲的都不准确,导致了很多理解上的错误这道题就是求字符串s和字符串的逆序串s’的最长公共“子序列”,而并非所谓的最长“子串”,一般来说两个子串一定是连续的一段字符,而子序列可以是不连续的……然后问题来了,怎么求两个子串的最长公共子序列呢,这里用的是动态规划的方法,用数组dp[i][j]来记录两个字符串长度为i和j

2016-01-15 20:38:44 226

原创 POJ 2388 Who's in the Middle

水题…sort过了…但是如果题目的数据够强的话可以考虑用Ultra Quick Sort的方法来找中位数,时间复杂度更低#include <iostream> #include <cstdio> #include <algorithm> using namespace std;#define MAXN 10050int main(){ int n; int a[MAXN]={0};

2016-01-15 16:00:33 278

原创 POJ 1050 To the Max

动态规划的思想,用到的一个最基本的方法就是求一维数组连续数字串的和的最大值,状态转移方程为sum[i] = max(sum[i-1]+a[i],a[i])在二维的情形中就是先枚举任意两行,然后对每一列在这两行之间的数字先求和,然后对求出来的数组求其一维连续数字串的最大值,得到的就是以两行为上下界的矩阵的最大值。#include <iostream> #include <cstdio> #includ

2016-01-15 15:52:08 217

原创 POJ 1163 The Triangle

经典的DP题目,自下而上进行,状态转移方程为 dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+data[i][j];#include <iostream> #include <cstdio> using namespace std;#define MAXN 110int main(){ int n; int data[MAXN][MAXN]={0};

2016-01-14 22:17:43 216

原创 POJ 1011 Sticks

寒假决定开始刷题了,写这道题主要是为了克服内心的恐惧感…大一的时候学DFS的时候听这道题给吓傻了,各种剪枝的方法不知道从哪里入手,比较关键的剪枝应该是当组成一个新的木棒的第一个片段失败的时候,这个片段就永远都会失败,不会再次使用另外再审题的时候出了一点问题,它说每个碎片的长度不超过50,我按照,木棍的长度不超过50写的,这道题因为保证一定有解所以设置长度搜索的上限的时候不需要有一个上限。#inclu

2016-01-14 18:26:49 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除