题意:

给定n,和一个长度为n的序列。

让你在这n个数中找长度尽可能长的fib数列。

思路:

这题的数字是在1e9范围内的,所以最长的可能存在的fib数列官方的解释是90左右。有一种情况除外,就是0的个数比较多的情况下。

而决定fib数列的是开头的两个数字,以及顺序,介于n是1000的范围我们就可以暴力开头的两个数字啦。这题要注意0的情况,如果整个序列都是0的话,那么复杂度就是1e9了,所以本人先unique了一下,然后每次从unique完的数组里边取材,这样就避免了0的问题同时也某些程度上减少了复杂度。需要注意的是unique完了之后有可能本身和本身作为fib数列的前两个,因为原始序列中可能存在相同的。

坑点:

这题我一开始的思路是记忆话搜索,但是...不能保证记录的那个序列和原来的序列没有在数组中重复取材。记住fib的特性啊啊啊啊

编号和题目中的序列搞混了,WA了两发。

#include<bits/stdc++.h>
using namespace std;
int jilu[],aft[];
bool vis[];
int n;
int ans=;
void dfs(int bf,int sum,int step){
int id=lower_bound(jilu,jilu+n,sum)-jilu;
if(id>=n||(id==&&jilu[]!=sum)){
if(ans<step)
ans=step;
}
else if(!vis[id]){
if(jilu[id]==sum){
vis[id]=;
dfs(sum,bf+sum,step+);
}
else{
if(ans<step)
ans=step;
}
}
else{
while(id<n&&vis[id]&&jilu[id]==sum){
id++;
}
if(id>=n||vis[id]||jilu[id]!=sum){
if(ans<step)
ans=step;
}
else{
vis[id]=;
dfs(sum,sum+bf,step+);
}
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&jilu[i]);
aft[i]=jilu[i];
}
sort(aft,aft+n);
sort(jilu,jilu+n);
int num=unique(aft,aft+n)-aft;
for(int i=;i<num;i++){
for(int j=i;j<num;j++){
memset(vis,,sizeof(vis));
if(i==j){
int id=lower_bound(jilu,jilu+n,aft[i])-jilu;
if(id+<n&&jilu[id]==jilu[id+]){
vis[id]=vis[id+]=;
dfs(jilu[id],jilu[id]+jilu[id],);
}
}
else{
int id1,id2;
id1=lower_bound(jilu,jilu+n,aft[i])-jilu;
id2=lower_bound(jilu,jilu+n,aft[j])-jilu;
vis[id1]=vis[id2]=;
dfs(jilu[id1],jilu[id2]+jilu[id1],);
memset(vis,,sizeof(vis));
vis[id1]=vis[id2]=;
dfs(jilu[id2],jilu[id2]+jilu[id1],);
}
}
}
printf("%d\n",ans);
}

Codeforces 633D的更多相关文章

  1. Codeforces 633D Fibonacci-ish 暴力

    题意:1000个元素,每个元素的大小-1e9<=a[i]<=1e9,然后让你重新安排这些元素的位置 获得最长的前缀斐波那契数列 分析:枚举第一个元素和第二个元素,因为在题目元素的范围内,最 ...

  2. codeforces 633D - Fibonacci-ish 离散化 + 二分查询

    Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...

  3. codeforces 633D D. Fibonacci-ish(dfs+暴力+map)

    D. Fibonacci-ish time limit per test 3 seconds memory limit per test 512 megabytes input standard in ...

  4. CodeForces - 633D Fibonacci-ish 大数标记map+pair的使用

    Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...

  5. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  9. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

随机推荐

  1. oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性

    学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...

  2. [mysql] Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'loser.tank_admin.login_ip' which is not functionally dependent on columns in GROUP BY clause; this is

    执行SQL: SELECT login_name,login_ip,sex FROM tank_admin GROUP BY login_name ; 时抛出异常. Expression #2 of ...

  3. input绑定datapicker控件后input再绑定blur或者mouseout等问题

    input绑定datapicker控件后input再绑定blur或者mouseout等问题 问题描述:今天在修改一个东西的时候需要给一个input输入域绑定blur事件,从而当它失去焦点后动态修改其中 ...

  4. MySQL时间戳和时间格式转换函数

    MySQL时间戳和时间格式转换函数:unix_timestamp and from_unixtime unix_timestamp将时间转化成时间戳格式.from_unixtime将时间戳转化成时间格 ...

  5. Eclipse高效率开发技巧

    工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个"器".本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行 ...

  6. POJ 3709 K-Anonymous Sequence

    题目大意:将一个升序的,有N个元素的序列,分组.要求每组的元素不少于K个,计算出组内各元素与最小元素的之差的和,将每组的这个值加起来,其和要最小. N<500000,K<N 分析: dp[ ...

  7. 获得Unix/Linux系统中的IP、MAC地址等信息

    获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 ...

  8. insmod module_param 模块参数

    模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模 ...

  9. mysql 常用操作(整理)

    原文地址:http://blog.csdn.net/lxh090821/article/details/9410943 1       登录数据库 格式: mysql -h主机地址 -u用户名 -p用 ...

  10. room_speed和image_speed

    room_speed是游戏步数,每秒多少步(步事件)image_speed是动画帧率room_speed变则整个游戏变慢image_speed变只是该object动画变慢 除了游戏全局加速减速,一般不 ...