摘要:
题意:斐波那契素数的概念:任取斐波那契数列中的某一项Fi,对于所有小于Fi的斐波那契数,如果Fi都和它互为质数,那么Fi是斐波那契素数。输入n,输出第n个斐波那契素数。分析:黑书上有这题的详细分析,大意是说从第5项开始下标为素数的斐波那契数一定是斐波那契素数。代码:View Code 1 #include <stdio.h> 2 #include <string.h> 3 const int MAXN = 250010;; 4 int prime[25010]; 5 bool isprime[MAXN]; 6 long double fib[MAXN]; 7 int m 阅读全文
摘要:
题意:给出一个a*b的网格,在网格上取不共线的三点构成三角形,求三角形总数。分析:就是一一道简单的组合数计算题目,设总结点数为n,则取三个节点的个数为C(n,3),然后减去横向、竖向、斜向的三点共线的个数即可,斜线三点共线等价于所枚举的矩形的长宽成倍数关系,即gcd不为1代码:View Code 1 #include <stdio.h> 2 #include <iostream> 3 using namespace std; 4 long long gcd(long long a, long long b){ 5 if(a%b==0) return b; 6 retur 阅读全文
摘要:
题意:给定一个m*n的矩阵,其中一些个字是空地(F),其他是障碍(R)。找出一个全部由F组成的面积最大的矩阵,输出其面积的3倍。分析:简单暴力枚举,O(m3*n3),肯定不行。对于某一块F,设up[i][j]表示其上方的空地个数(就像一条悬线),zl[i][j]表示悬线能往左边走到的边界线的坐标,zr[i][j]表示悬线能往右边走到的边界的坐标,那么面积s=(zr[i][j]-zl[i][j]+1)*up[i][j], zl从左到右枚举可以算出,zr则是从右到左枚举,状态转移是:zl[i][j]=max(zl[i-1][j], lo+1), lo表示第i行中第j列左边的最近障碍物的列编号, z 阅读全文