雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 50 下一页

2011年3月18日

摘要: nlog(n)算法View Code #include<stdio.h>#define MAXN 30009int n,a[MAXN],s[MAXN],t[MAXN];//序列存在s里int lis()//单调不降子序列nlogn算法 { int l,r,mid,len=1; a[1]=s[1]; for(int i=2;i<=n;i++) { l=1,r=len; while(l<=r) { mid=(l+r)>>1;//除2 if(a[mid]<=s[i]) l=mid+1;//不降 else r=mid-1;//二分查找 } a[l]=s[i]; 阅读全文

posted @ 2011-03-18 11:22 huhuuu 阅读(440) 评论(0) 推荐(0) 编辑

2011年3月17日

摘要: n*n的做法dp[j]=max(1,dp[i]+1) if(a[i]<a[j])View Code #include<stdio.h>int a[1009];int dp[1009];int main(){ int n; while(scanf("%d",&n)!=EOF) { int i,j; for(i=1;i<=n;i++) { scanf("%d",&a[i]); dp[i]=1; } for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { if(a[i]<a[j 阅读全文

posted @ 2011-03-17 22:29 huhuuu 阅读(231) 评论(0) 推荐(0) 编辑

摘要: sqrt(1000000*1000000)数据发生超int处理办法,sqrt(1.0*1000000*1000000)即可prim不超时View Code #include<cmath>#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define MAX 0x3fffffffint n,m;struct data{ int x,y;}a[1009];double map[1009][1009];bool use[1009];double dis[ 阅读全文

posted @ 2011-03-17 21:02 huhuuu 阅读(724) 评论(0) 推荐(0) 编辑

摘要: 看到 5000*50000有点不敢做了……其实bool数组很快View Code #include<stdio.h>bool f[50009];int a[5009];int main(){ int c,n; while(scanf("%d%d",&c,&n)!=EOF) { int i,j; for(i=1;i<=c;i++) f[i]=0; for(i=1;i<=n;i++) scanf("%d",&a[i]); f[0]=1; for(i=1;i<=n;i++) { for(j=c;j>= 阅读全文

posted @ 2011-03-17 15:21 huhuuu 阅读(312) 评论(0) 推荐(0) 编辑

2011年3月16日

摘要: set统计太方便了View Code #include<iostream>#include<set>using namespace std;struct data{ int x,y;}a[209];int main(){ int n; set<double>set1; while(scanf("%d",&n)!=EOF) { set1.clear(); int i,j; for(i=1;i<=n;i++) { scanf("%d%d",&a[i].x,&a[i].y); } double 阅读全文

posted @ 2011-03-16 20:42 huhuuu 阅读(227) 评论(0) 推荐(0) 编辑

摘要: 用贪心做初始i=j=1当i/j>=n/m时:j++反之i++随时记录最接近的值即可View Code #include<stdio.h>double jue(double a){ if(a>0)return a; return -a;}int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF) { int ri,rj,i,j; double e=n*1.0/m,t,cha=99999999; i=1; j=1; while(i<=32767&&j<=32767 阅读全文

posted @ 2011-03-16 20:11 huhuuu 阅读(160) 评论(0) 推荐(0) 编辑

摘要: bfs搜索,两次分别从两个出口搜,开数组ste[i][j]时刻记录(更新)点i,j到出口的最短距离最后在ste[i][j]查找最大值……View Code #include<stdio.h>#include<iostream>#include<queue>using namespace std;int map[209][80];int hash[209][80];int ste[209][80];int Max;int p[4][2]={0,-1,-1,0,0,1,1,0};int w,h;struct data{ int tei; int tej; int 阅读全文

posted @ 2011-03-16 15:53 huhuuu 阅读(215) 评论(0) 推荐(0) 编辑

2011年3月15日

摘要: 从这里可以发现 只要知道递推方程,就可以把dp的过程用记忆化递归表示出来其实记忆化bfs 记忆化递归 ……只要是计算某种状态后,将其保存下来的过程,都是dp!!!View Code #include<stdio.h>double dp[200][200];double di(int n,int m){ if(dp[n][m]!=-1) return dp[n][m]; if(m==0) return dp[n][m]=0; if(m==1) return dp[n][m]=(n+1)*1.0/2; if(n==0) return dp[n][m]=1.0*di(2,m-2)+1; 阅读全文

posted @ 2011-03-15 22:36 huhuuu 阅读(238) 评论(0) 推荐(0) 编辑

摘要: View Code SELECT snum,sname,ssex,sbirth,dnumFROM s--where snum='S006'WHERE dnum='d02'SELECT score,snumfrom scwhere score>=60 and score<=85SELECT snum,snamefrom swhere sname like '王_'SELECT cnum,score*1.5from scwhere cnum='c01'and score is not nullselect distinct 阅读全文

posted @ 2011-03-15 15:05 huhuuu 阅读(128) 评论(0) 推荐(0) 编辑

2011年3月14日

摘要: http://192.168.7.42/problemDetail.aspx?pid=1477前打表找规律后来对数字是一的进行统计如103对最高位开始统计若为0 ,则不处理若该位为1则总数加上后面的数:加上以1*a[i](相应表中数),03+1若为大于1的数 则乘以该数的最高位(如203 则 加上以2*a[i](相应表中数),再加上03+1,再加上100)再到低位执行直到个位数View Code #include<stdio.h>#include<math.h>int main(){ int a[10]={0,1,20,300,4000,50000,600000,700 阅读全文

posted @ 2011-03-14 21:33 huhuuu 阅读(1020) 评论(0) 推荐(0) 编辑

上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 50 下一页