|
2011年12月4日
摘要:
最小的整数(HD版)时间限制 : 1000 ms 内存限制 : 100 MB提交次数 : 60 通过次数 : 5题目描述还记得上次新生赛的题目《最小的整数》么,这次题意有少许更改,但是基本题意还是不变的,数据量有所增加,做好心里准备喽。有一个整数(为n位数),你可以在这个数上去掉任意位,剩下的位置不变,比如123458 ,去掉第3位(从右往左第三位)留下12358,问用这种方法修改这个数直到只剩下一个m位整数,问最小的m位数是多少?我给的数据第一位不会是0。输入描述 测试数据有多组(大约100组),每组两行数据 ,第一行为两个整数 n,m(0<m<n<1000000),第一个 阅读全文
2011年12月2日
摘要:
题意:给你一个建筑物群的轮廓,求该建筑物群最少由几栋楼房组成(楼房是矩形)思路:贪心一看数据范围怎么大,搜索神马的就算了从后往前扫,将符合的都标记掉(注意高度为0的没有楼房)View Code #include<stdio.h>#include<string.h>const int N=50009;struct data{ int x,y;}s[N];bool used[N];int main(){ int n,w; while(scanf("%d%d",&n,&w)!=EOF) { int i,j; for(i=1;i<=n; 阅读全文
2011年12月1日
摘要:
http://poj.org/problem?id=3272由于数据顶点5000,边50000所以用静态链表出度为0有多个,入度为0的点有一个用f[i]表示i到出度为0的点 的边 有几条g[j]表示j到入度为0的点 的边 有几条两次dfs一条边的起点qi,终点end结果Max=max(f[qi]*g[end])注意点:重边有效View Code #include<stdio.h>#include<iostream>#include<string.h>using namespace std;const int N=5009;struct data{ int x 阅读全文
2011年11月29日
摘要:
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 阅读全文
2011年11月28日
摘要:
计算组合数什么的用到母函数(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 阅读全文
2011年11月25日
摘要:
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均除去他们的公约数 阅读全文
2011年11月23日
摘要:
貌似只要一次更新就行了我一开始暴力枚举更新,重复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++) { ... 阅读全文
2011年11月21日
摘要:
有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 阅读全文
摘要:
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 阅读全文
2011年11月19日
摘要:
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 阅读全文
|