Codeforces 633D
题意:
给定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的更多相关文章
- Codeforces 633D Fibonacci-ish 暴力
题意:1000个元素,每个元素的大小-1e9<=a[i]<=1e9,然后让你重新安排这些元素的位置 获得最长的前缀斐波那契数列 分析:枚举第一个元素和第二个元素,因为在题目元素的范围内,最 ...
- codeforces 633D - Fibonacci-ish 离散化 + 二分查询
Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...
- 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 ...
- CodeForces - 633D Fibonacci-ish 大数标记map+pair的使用
Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
随机推荐
- event.srcElement兼容处理
在IE下,event对象有srcElement属性,但是没有target属性:Firefox下,even对象有target属性,但是没有srcElement属性.. 解决方法:使用obj(obj = ...
- ubuntu设置环境变量
sudo gedit /etc/environment path结尾处追加 路径,如::/opt/EmbedSky/4.3.3/bin source /etc/environment,或者重启电脑?? ...
- php 添加redis扩展(一)
phpredis 下载地址 http://pan.baidu.com/s/1dFFK0gh 提取码:见评论,(~..)亲身试验,可行 1.下载到目录 cd /usr/local/src 2.解压 t ...
- 使用laravel的Eloquent模型获取数据库的指定列
使用laravel的Eloquent模型获取数据库的指定列 使用Laravel的ORM——Eloquent时,时常遇到的一个操作是取模型中的其中一些属性,对应的就是在数据库中取表的特定列. 如果使 ...
- Java 提示 JRE unbound 或者 Tomcat unbound 解决方法
解决步骤 1.右键你的项目>>build path>>config build path 2. 选中显示 unbound的 Libraries >>Edit 如下图 ...
- PHP析构函数与垃圾回收
析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行. GC (Garbage Collector) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾.PHP会将其在内存中销毁.这是PHP ...
- 百度地图和js操作iframe
document.getElementById("ifarme-63").contentWindow.document.getElementById("qksv" ...
- Redis在Windows环境下搭建
1. 下载Redis-Windows版本 Redis官网下载页面: http://redis.io/download Windows下Redis项目: https://github.com/MSOp ...
- IntelliJ IDEA手动配置连接MySQL数据库
先从菜单View→Tool Windows→Database打开数据库工具窗口,如下图所示: 点击Database工具窗口左上角添加按钮"+",选择数据库类型,这里以MySQL为例 ...
- Python 创建函数和代码重用
1. cat func.py #!/usr/bin/python def func(): print "hello,this is a function" def func2(): ...