题目描述

  小y最近迷上了fibonacci数列,他定义了一种数列叫类fibonacci数列:

   1.这个数列包含至少\(2\)个元素

   2.\(f_0\)和\(f_1\)是任意选取的

   3.\(f_{n+2}=f_{n+1}+f_n (n\geq 0)\)

  现在,给出一个数列\(a_1\ldots a_n\),你可以改变数列元素的顺序,使得\(a_1\ldots a_m\)满足类fibonacci数列的条件,请求出最大的\(m\)。

  \(n\leq 1000\)

题解

  如果有\(0\),就先统计\(0\)的个数,然后把这些\(0\)删掉。

  首先这个东西的长度是\(O(\log a_i)\)的。

  暴力枚举前两个,查找是否存在第三个。

  可以预处理出来。

  时间复杂度:\(O(n^2\log n)\)

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<utility>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
ll a[510];
int b[510];
int n;
int c[510][510];
int d1[510];
int d2[510];
int e[510];
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
int i,j,k;
scanf("%d",&n);
if(n==1)
{
printf("%d\n",0);
return 0;
}
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+n+1);
int m=0;
for(i=1;i<=n;i++)
if(i==1||a[i]!=a[i-1])
{
d1[++m]=a[i];
d2[m]=1;
}
else
d2[m]++;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
k=lower_bound(d1+1,d1+m+1,d1[i]+d1[j])-d1;
if(k>m||d1[k]!=d1[i]+d1[j])
c[i][j]=0;
else
c[i][j]=k;
}
int ans=0;
for(i=1;i<=n;i++)
{
d2[i]--;
for(j=1;j<=n;j++)
if(d2[j])
{
d2[j]--;
for(k=1;k<=m;k++)
e[k]=d2[k];
ll s1=i;
ll s2=j;
int num=2;
while(c[s1][s2]&&e[c[s1][s2]])
{
e[c[s1][s2]]--;
swap(s1,s2);
s2=c[s1][s2];
num++;
}
ans=max(ans,num);
d2[j]++;
}
d2[i]++;
}
printf("%d\n",ans);
return 0;
}

【CF633D】Fibonacci-ish的更多相关文章

  1. 【HDU1848】Fibonacci again and again(博弈论)

    [HDU1848]Fibonacci again and again(博弈论) 题面 Hdu 你有三堆石子,每堆石子的个数是\(n,m,p\),你每次可以从一堆石子中取走斐波那契数列中一个元素等数量的 ...

  2. 【HDU3117】Fibonacci Numbers

    [HDU3117]Fibonacci Numbers 题面 求斐波那契数列的第\(n\)项的前四位及后四位. 其中\(0\leq n<2^{32}\) 题解 前置知识:线性常系数齐次递推 其实后 ...

  3. 【poj3070】 Fibonacci

    http://poj.org/problem?id=3070 (题目链接) 题意 用矩阵乘法求fibonacci数列的第n项. Solution 矩乘入门题啊,题目把题解已经说的很清楚里= =. 矩乘 ...

  4. 【类似N^N做法的斐波那契数列】【HDU1568】 Fibonacci

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【算法】Fibonacci(斐波那契数列)相关问题

    一.列出Fibonacci数列的前N个数 using System; using System.Collections.Generic; using System.Linq; using System ...

  6. 【HDU 2855】 Fibonacci Check-up (矩阵乘法)

    Fibonacci Check-up Problem Description Every ALPC has his own alpc-number just like alpc12, alpc55, ...

  7. 1643【例 3】Fibonacci 前 n 项和

    1643:[例 3]Fibonacci 前 n 项和 时间限制: 1000 ms         内存限制: 524288 KB sol:这题应该挺水的吧,就像个板子一样 1 0 01 1 0   * ...

  8. 一本通1642【例 2】Fibonacci 第 n 项

    1642: [例 2]Fibonacci 第 n 项 sol:挺模板的吧,经典题吧qaq (1) 1 0    *     1 1     =   1 1 1 0 (2) 1 1    *     1 ...

  9. 【CF914G】Sum the Fibonacci 快速??变换模板

    [CF914G]Sum the Fibonacci 题解:给你一个长度为n的数组s.定义五元组(a,b,c,d,e)是合法的当且仅当: 1. $1\le a,b,c,d,e\le n$2. $(s_a ...

随机推荐

  1. Filebeat简介

    原文地址:http://blog.51cto.com/seekerwolf/2110174 收集日志的目的是有效的利用日志,有效利用日志的前提是日志经过格式化符合我们的要求,这样才能真正的高效利用收集 ...

  2. p67交换幺环为整环的充要条件

    如何理解并且证明这个定理?谢谢 (0)是素理想,也是就是说,只要ab∈(0)就有a∈(0)或者b∈(0) 这等价于说 ab=0就有a=0或b=0. 它这里给的证明是什么意思呢?它是利用了素理想的等价刻 ...

  3. 快速为git添加一个用户

    环境:用gitosis-admin管理git的权限. 前期git环境的搭建略去,主要给出快速添加一个用户的步骤: 在git bash中用“ssh-keygen -t rsa”生成公钥私钥,默认放到 “ ...

  4. linux和sqlserver 2017的安装

    这两天一直在弄linux的安装过程.中间也遇到了不少的坑,主要是网络上的坑人的文章太多.都是坑,最后从redhat官网下载了iso文件,顺便看到官网推荐了一个fedora media writer的烤 ...

  5. C#设计模式之2:单例模式

    在程序的设计过程中很多时候系统会要求对于某个类型在一个应用程序域中只出现一次,或者是因为性能的考虑,或者是由于逻辑的要求,总之是有这样的需求的存在,那在设计模式中正好有这么一种模式可以来满足这样的要求 ...

  6. Azure系列1.1.2 —— 用于 IntelliJ 的 Azure 工具包的登录说明

    (文中大部分内容(95%)Azure官网上有,我只是把我自己实际操作中遇到的问题在这里阐述一下.) 先决条件 若要完成文章中的步骤,需要安装用于 IntelliJ 的 Azure 工具包,该工具包需要 ...

  7. K8S集群 NOT READY的解决办法 1.13 错误信息:cni config uninitialized

    今天给同事 一个k8s 集群 出现not ready了 花了 40min 才搞定 这里记录一下 避免下载 再遇到了 不清楚. 错误现象:untime network not ready: Networ ...

  8. [转帖]csdn windows 下载整理.

    特别说明:本帖不提供任何密钥或激活方法,请大家也不要在帖内回复或讨论涉及版权的相关内容,仅提供原版ISO下载链接 https://bbs.csdn.net/topics/391111024?list= ...

  9. easyUI 数据表格datagrid的使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. vue图表

    https://www.cnblogs.com/powertoolsteam/p/top-9-javascript-charting-libraries.html