上一页 1 ··· 3 4 5 6 7 8 下一页

2011年9月7日

poj3624Charm Bracelet 01背包

摘要: 经典动态规划题目,这个题目最开始用的书本的思想,用m[i][j]表示前i件物品重量不超过j的最大价值,则dp方程为:m[i+1][j]=max(m[i][j-w[i+1]]+p[i+1],m[i][j]),也就是从i+1件物品中得到重量不超过j的最大价值的时候,第i+1件要么选要么不选,但是这个题目由于w和n比较大,这么会MLE,所以必须缩小空间,由于m[i][j]只和当前i的重量和价值有关系,对于当前的物品我们要么选要么不选,我们直接用一维数组表示 dp[j]=max(dp[j-w[i]]+p[i],dp[j])。计算的时候要从后往前计算。代码:#include <iostream&g 阅读全文

posted @ 2011-09-07 21:40 buptLizer 阅读(160) 评论(0) 推荐(0) 编辑

枚举

摘要: 1.生理周期题目链接:http://poj.org/problem?id=1006水题,直接枚举满足条件的日期。2.称硬币题目链接:http://poj.org/problem?id=1013一共12个硬币,每个硬币两种状态,我们枚举可能的假币,一共24种。3.完美立方Perfect Cubes题目链接:http://poj.org/problem?id=1543求满足等式a^3=b^3+c^3+d^3的所有可能的组合。水题。for(a=5;a<=n;a++) { for(b=2;b<n;b++) {if(m[a]<3*m[b])break; for(c=b;c<n;c 阅读全文

posted @ 2011-09-07 10:57 buptLizer 阅读(227) 评论(0) 推荐(0) 编辑

2011年9月5日

poj1102 7段数码管

摘要: 就是一个模拟题,显示出0-9这些数字的形状。我写的代码比较繁琐,牛人们忽略吧。#include <iostream>#include <stdio.h>using namespace std;char digit[9][11];int s,n,d[10];void init(){ memset(digit,'\0',sizeof(digit)); strcpy(digit[0],"1011011111"); strcpy(digit[1],"1000111011"); strcpy(digit[2],"0 阅读全文

posted @ 2011-09-05 22:20 buptLizer 阅读(363) 评论(0) 推荐(0) 编辑

poj1852 Ants

摘要: 说一个长度为m的杆,上面有n个蚂蚁,告诉每个蚂蚁的初始位置,每个蚂蚁速度都是一样的,问所有的蚂蚁离开杆的最短和最长时间是多少。模拟题,所有的蚂蚁看成一样的,可以这样理解,即使相撞按反方向走,但是两只蚂蚁从开始爬到相撞到继续相背爬,这个时间都是一样的。所以直接对每只蚂蚁分别处理,得出他的最短离开时间和最长离开时间,我们分别从最短离开时间和最长离开时间里面求出最大的。源码:#include <iostream>#include <stdio.h>using namespace std;int main(){ int m,n,l,pos,left,right,curMin,c 阅读全文

posted @ 2011-09-05 22:17 buptLizer 阅读(863) 评论(0) 推荐(0) 编辑

poj2244 约瑟夫环

摘要: 这个题目说给出n个数,第一个数必须出列,然后计算编号从2-n开始,使得2最后一个出列的最小的m值,其实也就是n-1约瑟夫环,从1-n-1s=1;for(i=2;i<=n-1;i++) s=(s+m)%i;if(s==1) m为所求,我们让m从1开始。。源码如下:#include <iostream>#include <stdio.h>using namespace std;const int MAX=150;int main(){int i,s,n,m,rs[MAX];for(n=3;n<MAX;n++){m=1;while(1){s=1;for(i=2;i 阅读全文

posted @ 2011-09-05 15:05 buptLizer 阅读(494) 评论(0) 推荐(0) 编辑

2011年9月4日

poj 2635 高精度取模

摘要: 给出一个大整数10^100 KEY,这个数是两个素数的积,然后给出一个数L,如果KEY存在小于L的素数,则返回false,并输出这个最小的素数,如果大于等于L,则输出true。由于L并不是很大,我们先将素数表打出来,利用大整数取模运算来计算是否存在小于L的素数,由于KEY比较大,我们先转化成大进制数加快运算#include <iostream>#include <stdio.h>using namespace std;const int N=101;const int MAXN=1000010;char str[N];bool isPrim[MAXN];int key[ 阅读全文

posted @ 2011-09-04 15:42 buptLizer 阅读(1167) 评论(0) 推荐(0) 编辑

poj百练2737大整数除法

摘要: 题目链接:http://poj.grids.cn/practice/2737#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int N=102;char s1[N],s2[N];int p1[N],p2[N],result[N];int subStract(int *a1,int *a2,int len1,int len2){ int i; if(len1<len2) return -1; if(len1 == len2) { i=len 阅读全文

posted @ 2011-09-04 15:36 buptLizer 阅读(1085) 评论(0) 推荐(0) 编辑

poj2389 大整数乘法

摘要: #include <iostream>using namespace std;const int N=42;char str1[N],str2[N];int s1[N],s2[N],result[2*N];int main(){ int i,j,len1,len2,len; memset(str1,'\0',sizeof(str1)); memset(str2,'\0',sizeof(str2)); for(i=0;i<2*N;i++) result[i]=0; cin>>str1; cin>>str2; len1=st 阅读全文

posted @ 2011-09-04 15:34 buptLizer 阅读(607) 评论(0) 推荐(0) 编辑

2011年9月3日

一些面试题(3)

摘要: 转载:http://gushuizerotoone.iteye.com/blog/7457311.stl vector list deque的区别 http://www.iteye.com/wiki/topic/732365 使用区别: 1 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector ,支持[] 2 如果你需要大量的插入和删除,而不关心随即存取,则应使用list ,不支持[] 3 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque,deque是vector和list的结合 2.vector的内存管理机制: http://blog.sina.co... 阅读全文

posted @ 2011-09-03 11:40 buptLizer 阅读(243) 评论(0) 推荐(0) 编辑

一些面试题(2)

摘要: 转载:http://gushuizerotoone.iteye.com/blog/737780注意时间复杂度 1.给出一个数列,找出连续相加最大的和 方法:(1)O(n) 一次扫描,如果sum<0, sum = 0. 英文数据结构书p23 (2)O(nlogn) devide and conqure 左右两边分别找最大,合并后的值,看看最后左、右、合并三个哪个最大 英文数据结构书p21 ================================================================= 2.二分查找 O(logN)整个数列已经之前排过序才能二分查找。每次比较 阅读全文

posted @ 2011-09-03 11:34 buptLizer 阅读(650) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 下一页

导航