【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

枚举序列的头两个数字是什么
O(N^2)
然后头两个数字确定之后。
f[3],f[4]..就确定了
只需查看f[3],f[4]..是不是存在就好了。
但是这样复杂度看起来是O(N^3)的了。

其实不然,a[n] = a[n-1]+a[n-2]这个递推的增长速度是接近2^n的增长速度的。

(所以到达10^9之后直接break就好了

所以实际上不会真的达到递推1000的规模

差不多只有O(N^2*100)的样子。

这是可以接受的了。

->但是有一种情况要特判,就是f[1] = f[2]=0的情况。这种情况直接统计1的个数即可。

程序中还加了一个优化。

因为前两项f1,f2确定之后f[i] = xf1+yf2

则我们提前算出来系数。

就能直接得到前两项是f1,f2的前提下fi的值了

根据这个可以做一下剪枝。

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 1000; int a[N+10],n,b[N+10];
map<int,int> dic;
int x[N+10],y[N+10]; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
x[1] = 1;y[1] = 0;
x[2] = 0;y[2] = 1;
x[3] = y[3]= 1;
for (int i = 4;i <=N;i++){
x[i] = x[i-2]+x[i-1];
y[i] = y[i-2]+y[i-1];
} cin >> n;
for (int i = 1;i <= n;i++) {
cin >> a[i];
dic[a[i]]++;
}
int ans = 2;
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
if (i!=j){
if (a[i]==0 && a[j]==0){
int num = dic[0];
ans = max(ans,num);
continue;
}
dic[a[i]]--,dic[a[j]]--;
int num = 2;
b[1] = a[i],b[2] = a[j];
if (ans>2 && ans<=40){
long long temp = 1LL*x[ans]*a[i]+1LL*y[ans]*a[j];
if (abs(temp)>1e9|| dic[temp]==0){
dic[a[i]]++,dic[a[j]]++;
continue;
}
}
for (int k = 3;k<=n;k++){
b[k] = b[k-2]+b[k-1];
if (abs(b[k])>1e9) break;
if (dic[b[k]]>0){
dic[b[k]]--;
num++;
}else break;
}
ans =max(ans,num);
for (int k = 1;k <= num;k++) dic[b[k]]++;
}
cout << ans << endl;
return 0;
}

【Henu ACM Round #13 F】Fibonacci-ish的更多相关文章

  1. 【Henu ACM Round#16 F】Om Nom and Necklace

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...

  2. 【Henu ACM Round#17 F】Upgrading Array

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果我们对某一个位置i操作两次的话. 显然结果就和操作一次一样. 因为第一次操作过后1..i这些数字就变成是互质的了. gcd为1. ...

  3. 【Henu ACM Round#15 F】Arthur and Questions

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] a1+a2+...+ak<a2+a3+...ak+1 ->a1<ak+1 a2+a3+...+ak+1<a3 ...

  4. 【Henu ACM Round#18 F】Arthur and Walls

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑,为什么一个连通块里面的空格没有变成一个矩形? 如果不是形成矩形的话. 肯定是因为某个2x2的单张方形里面. 只有一个角是墙.其 ...

  5. 【Henu ACM Round#20 F】 Arthur and Brackets

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 所给的li,ri是左括号从左到右的顺序给的. (且注意长度是2*n 现在我们先把第一个左括号放在第1个位置. 然后考虑第二个位置. ...

  6. 【Henu ACM Round#19 F】Dispute

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 这一题和这一题很像 (链接 ) 会发现如果a[i]!=b[i]那么就按下i就好了. 然后改变和他相邻的点. 此后a[i]再也不可能和 ...

  7. 【Henu ACM Round#14 F】 President and Roads

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理出起点到任意点的最短路以及最短路条数=>dis[0][i],cnt[0][i] 然后 把所有的边反向 处理出在反图上终点到 ...

  8. 【Henu ACM Round #13 E】Spy Syndrome 2

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 对m个串建立一棵字典树. 然后对主串. 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 ...

  9. 【Henu ACM Round #13 D】A Trivial Problem

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 123...n中末尾0的个数 只会由素因子2和5的个数决定且等于 Min{cnt[2],cnt[5]} 且素因子2的个数一定会比5多 ...

随机推荐

  1. 主程的晋升攻略(4):TCP、消息分包和协议设计

    在<主程的晋升攻略(3):IP.DNS和CDN>中,一次网络请求经过DNS解析知道了目的IP,如今就要发出网络包,这里我们说一说TCP的相关话题. TCP是一种流式协议 讲网络编程的教科书 ...

  2. Effective C++ 条款12

    复制对象时,勿忘其每个成分 作者在本节条款提醒我们,在多重继承的情况下进行copy或者copy assignment 的operator=的编写时,一定要考虑base 类部分数据的初始化后者复制. 对 ...

  3. ubuntu SDK 安装

    纯净sdk安装1.地址-http://gmirror.org/#android-sdk-tools-only(国内镜像)2.下载到本地目录 ~/下载3.进入下载,解压 tar -zxvf androi ...

  4. ORM中基于对象查询与基于queryset查询

    感谢老男孩~  一步一步走下去 前面是视图函数 后面是表结构models.py from django.shortcuts import render, HttpResponse from djang ...

  5. AngularJs轻松入门(八)Cookies读写

    虽然使用JavaScript创建和获取Cookie很简单,AngularJs还是把它作为一个单独的模块进行了封装,模块名为ngCookies,和前面的教程中做法一样,先引入angular-cookie ...

  6. rails 开发随手记 8

    rails上传文件 无需gem 首先是model class DataFile < ActiveRecord::Base def initialize end def name @name en ...

  7. 上传golang 版本SDK

    在上传的时候,文件都上传成功了,但是返回的信息里面errcode 404 token 是"".是不是因为我的callbackUrl(随便写的) 写错导致的. 上传golang 版本 ...

  8. CentOS6.8下完全干净卸载mysql

    来源整理于 https://www.cnblogs.com/wanghuaijun/p/6398240.html 虚拟机CentOS6.8下 先执行命令查看目录是否存在mysql 文件夹:  cd  ...

  9. 安装Debugging Tools时出现错误Setup could not find the file WinSDK_amd64的处理

    安装Debugging Tools时出现错误Setup could not find the file WinSDK_amd64的处理 1.软件来源:  微软官网下载SDK ISO安装包(含有debu ...

  10. mybatis-generator-core快速生成实体类和Mapper

    日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...