雕刻时光

just do it……nothing impossible
随笔 - 547, 文章 - 0, 评论 - 82, 阅读 - 86万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

11 2011 档案

摘要:http://poj.org/problem?id=3279一般都玩过的游戏翻转快,一块砖块翻开,其他周围四块跟它自己变的颜色相反如果直接搜索的话,2^(15*15)铁定超时了其实只要枚举2^15第一行,然后在此基础上贪心即第一行为map[1][j]==1,下面也为 1View Code #include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<cmath>using namespace std;int n,m,ret=0;bool 阅读全文

posted @ 2011-11-29 21:56 huhuuu 阅读(203) 评论(0) 推荐(0) 编辑

摘要:计算组合数什么的用到母函数(1+x^1+...x^N1)*(1+x^1+...x^N2)...*(1+x^1+...x^Nn)View Code #include<stdio.h>#include<string.h>int n,m,a,b;int c1[10090],c2[10090];int s[1009];int main(){ while(scanf("%d%d%d%d",&m,&n,&a,&b)!=EOF) { int i,j,k,temp; memset(s,0,sizeof(s)); for(i=0;i&l 阅读全文

posted @ 2011-11-28 22:14 huhuuu 阅读(237) 评论(0) 推荐(0) 编辑

摘要:http://www.rqnoj.cn/Problem_607.html完整的结题报告:首先我们需要知道一个知识,对于坐标系第一象限任意的整点(即横纵坐标均为整数的点)p(n,m),其与原点o(0,0)的连线上除过原点整点的个数为gcd(n,m)。其他象限上个数则为gcd(abs(n),abs(m)),这里的gcd(a,b)是指a与b的最大公约数(GreastestCommonDivisor),abs(a)是指数a的绝对值。证明:考虑在op上最小的一个整点(x,y),这里的最小是指横纵坐标绝对值最小,x与y必然满足gcd(x,y)=1,即x与y互质。因为若不互质的话,将x与y均除去他们的公约数 阅读全文

posted @ 2011-11-25 21:11 huhuuu 阅读(908) 评论(0) 推荐(0) 编辑

摘要:貌似只要一次更新就行了我一开始暴力枚举更新,重复1100大循环貌似就会都符合所有的约束其实每次在区间【a,b】,【a+1,b-1】每个数减一就行了同时注意重复区间不要算在内。。。View Code #include<stdio.h>int s[10009];bool hash[10009][10009];int main(){ int n,th,max,m; while(scanf("%d%d%d%d",&n,&th,&max,&m)!=EOF) { int a,b,i,j; for(i=1;i<=n;i++) { ... 阅读全文

posted @ 2011-11-23 16:57 huhuuu 阅读(256) 评论(0) 推荐(0) 编辑

摘要:有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜,伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置出现,他最多可以被多少人膜拜呢,这个简单的问题JZ当然交给你了A_i..B_i (1 <=A_i <= B_i <= 1,000,000,000)N (1 <= N <= 50,000)44 81 25 103 5输出3思路:考虑到a,b的范围很大,N范围小,果断离散化一下,离散化以后,如果直接 add[] 暴力统计区间,会超时,考虑线段树,使用懒惰标记 500msView Co 阅读全文

posted @ 2011-11-21 19:19 huhuuu 阅读(351) 评论(0) 推荐(0) 编辑

摘要:View Code #include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std; int a[10009],b[10009],next[10009];bool used[10009];int cmp(int a,int b){ return a<b;}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i,j; for 阅读全文

posted @ 2011-11-21 15:56 huhuuu 阅读(163) 评论(0) 推荐(0) 编辑

摘要:http://www.zybbs.org/JudgeOnline/problem.php?id=1878树状数组+离线算法因为不需要在线更新结点所以想到离线算法速度更快难点在于相同颜色的算一个,所以要灵活运用树状数组用next记录每个点后面的第一个颜色相同的点按左区间排序i:1->n不断更新updata(next[i])到了其中一个的左区间就更新最后还原排序下View Code #include<iostream>#include<algorithm>#include<cstdio>#include<string.h>using names 阅读全文

posted @ 2011-11-19 23:10 huhuuu 阅读(704) 评论(0) 推荐(0) 编辑

摘要:http://poj.org/problem?id=3045贪心,按Wi+Si排列对于最后一个位置,risk=W总-Wn-Sn,使得risk最小的是最大的(Wi+Si)。View Code #include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct data{ int w,p; long long all;}node[50009];int cmp(data a,data b){ return (a.p+a.w) 阅读全文

posted @ 2011-11-18 21:09 huhuuu 阅读(176) 评论(0) 推荐(0) 编辑

摘要:http://www.zybbs.org/JudgeOnline/problem.php?id=1653STL组合数枚举下算总和的话其实就是杨辉三角View Code #include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[19];int b[19];int s[19][19];void fun(){ int i,j; memset(s,0,sizeof(s)); for(i=1;i<=10;i++) 阅读全文

posted @ 2011-11-17 21:28 huhuuu 阅读(319) 评论(0) 推荐(0) 编辑

摘要:如123321 保留4个数字最小结果为1221线性算法:先在1-3个之间找,记录ri再到ri+1-4之间找。。。View Code #include<stdio.h>#include<string.h>char ss[60009];int main(){ while(scanf("%s",ss)!=EOF) { int i,len,end,ri=0; len=strlen(ss); int add,app=0; //scanf("%d",&add); add=6;... 阅读全文

posted @ 2011-11-09 21:13 huhuuu 阅读(401) 评论(0) 推荐(0) 编辑

摘要:对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数N,你能求出不超过N的最大的反质数么?先百度知道反素数性质性质一:一个反素数的质因子必然是从2开始连续的质数.因为最多只需要10个素数构造:2,3,5,7,11,13,17,19,23,29性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....搜索。。。View Code #include<stdio.h>#i 阅读全文

posted @ 2011-11-09 16:07 huhuuu 阅读(378) 评论(0) 推荐(0) 编辑

摘要:如输入33 5 4 6输出 33 4 53 5 6思路:最长子序列有几个通过n*log(n)算出来再用dfs+路径记录输出所有的值View Code #include<stdio.h>#include<string.h>#include<stack>#include<iostream>using namespace std;#define MAXN 109int ok=0;int n,a[MAXN],s[MAXN];//ÐòÁдæÔÚsÀïint 阅读全文

posted @ 2011-11-06 21:09 huhuuu 阅读(411) 评论(0) 推荐(0) 编辑

摘要:n 为环的大小 ,m 为每隔m,kill一个人View Code #include<stdio.h>#include<string.h>int a[109];int main(){ int i,j,n,count,m; while(scanf("%d %d",&n,&m)!=EOF) { memset(a,0,sizeof(a)); int add=0; i=0,count=1; while(add<n-1) { while(a[i]!=0) ... 阅读全文

posted @ 2011-11-03 21:52 huhuuu 阅读(165) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示