上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页
摘要: View Code //Raney引理:设整数序列A={Ai,i=1,2,...,N},且部分和为Sk=A1+,...,+Ak,序列中的所有的数字之和为Sn=1; 则在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均大于零。//证明由于Sn=1,则Sk+Sn=Sk+1,存在这样一个数x,当在x和x+1之间的某点过后,其后所有的点都在0以上。 //序列// 一个序列{Ai,i=0,1,2,....,3n},由 3n+1项组成,每一项是1或-2。定义部分和Sk=A0+A1+...+Ak,求所有满足S3n=1,而且对k=0,1,...3n,Sk>0,的序列的个数。// ... 阅读全文
posted @ 2013-05-04 08:24 zhang1107 阅读(302) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1544View Code 阅读全文
posted @ 2013-05-03 22:27 zhang1107 阅读(120) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2663View Code //放骨牌类问题,dfs枚举方法,递推。 const int MM = 1111;#define debug puts("wrong")typedef __int64 int64;int64 N,M,dp[111][11];void dfs(int64 row,int64 col,int64 pre,int64 now,int64 ss) { if(col>=3) { if(pre==7) dp[row][now]+=ss; return; } if((pre&(1<< 阅读全文
posted @ 2013-05-03 21:41 zhang1107 阅读(211) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1095catalan数确定N个节点的二叉树的种数,左右分配节点确定id。View Code const int MM = 11111;const int maxn = 19;typedef __int64 int64;#define debug puts("wrong")int N;int cata[maxn];void get_cata() { int i,j,k; cata[0]=cata[1]=1; for(i=2;i<maxn;i++) { for(cata[i]=0,j=0;j<i;j++) cat 阅读全文
posted @ 2013-05-03 21:35 zhang1107 阅读(166) 评论(0) 推荐(0) 编辑
摘要: http://acm.fzu.edu.cn/problem.php?pid=2113枚举1的个数,ans=ans+i*dfs();View Code const int MM = 11111;typedef __int64 int64;#define debug puts("wrong")int cnt, num[MM];int64 dp[20][20][20],L,R;int64 dfs(int le,int sum,int s,bool less) { if(le==-1) return sum==s; if(!less && dp[le][sum][s 阅读全文
posted @ 2013-05-03 12:05 zhang1107 阅读(278) 评论(0) 推荐(0) 编辑
摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3416注意当0也是满足条件的情况下, 假设数字分解有cnt位,则结果将会多出cnt-1个0,即ans-cnt+1为最后结果。View Code 阅读全文
posted @ 2013-05-03 11:13 zhang1107 阅读(134) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4352类似于O(nlog n)的LIS求法,用1<<10记录10以内数的出现情况,贪心更新。View Code //类似于O(nlog n)的LIS求法,用1<<10记录10以内数的出现情况,贪心更新。const int MM = 11111;typedef __int64 int64;int K,cnt, num[MM];int64 dp[20][1<<10][10],L,R;void get_data() { scanf("%I64d%I64d%d" 阅读全文
posted @ 2013-05-03 09:53 zhang1107 阅读(133) 评论(0) 推荐(0) 编辑
摘要: find a+b+c=d , 3sum problem 枚举dhttp://poj.org/problem?id=2549View Code const int MM = 111111;int N;int num[MM];void get_data() { int i,j,k; for(i=0;i<N;i++) scanf("%d",&num[i]);}//choose three number from a set,then a+b+c=0void threesum(int n,int*val) { int i,j,k,a,b,c,tmp,l; sort(v 阅读全文
posted @ 2013-05-02 20:58 zhang1107 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 参考:http://en.wikipedia.org/wiki/3SUM//choose three number from a set,then a+b+c=0View Code //choose three number from a set,then a+b+c=0//其实就是两头逼近,复杂度O(N^2)void threesum(int n,int*val) { int i,j,k,a,b,c,tmp,l; sort(val,val+n); for(i=0;i<n-2;i++) { a=val[i], j=i+1, k=n-1; while... 阅读全文
posted @ 2013-05-02 20:55 zhang1107 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 资料:http://wenku.baidu.com/view/1845fdc75fbfc77da269b1ae.html http://wenku.baidu.com/view/e7c220c52cc58bd63186bdae.html 阅读全文
posted @ 2013-05-02 20:18 zhang1107 阅读(109) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页