• 题意:给你一个长度为\(n\)的序列,求一个最长的\({x,x+1,x+2,.....,x+k-1}\)的序列,输出它的长度以及每个数在原序列的位置.

  • 题解:因为这题有个限定条件,最长序列是公差为\(1\)的单增序列,所以其实非常简单.

    ​ 我们用\(map\)来记录每个元素最后出现的位置,\(dp\)表示当前位置的最长序列,\(last\)表示\(x-1\)的位置.

    ​ \(dp\)状态有两种更新方式: 1.如果上个元素\((x-1)\)存在,则\(dp[i]=dp[x-1]+1\).

    ​ 2.\((x-1)\)不存在,则它自己就是首位置,\(dp[i]=1\).

    ​ 之后找个最大值,然后输出每个位置就行了.

  • 代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #include <unordered_set>
    #include <unordered_map>
    #define ll long long
    #define fi first
    #define se second
    #define pb push_back
    #define me memset
    const int N = 1e6 + 10;
    const int mod = 1e9 + 7;
    using namespace std;
    typedef pair<int,int> PII;
    typedef pair<long,long> PLL; int n;
    int a[N];
    int dp[N];
    map<int,int> mp; int main() {
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>n;
    for(int i=1;i<=n;++i){
    cin>>a[i];
    int last=mp[a[i]-1];
    if(last){
    dp[i]=dp[last]+1;
    }
    else dp[i]=1;
    mp[a[i]]=i;
    } int len=0;
    int last=0;
    for(int i=1;i<=n;++i){
    if(dp[i]>len){
    len=dp[i];
    last=a[i];
    }
    }
    printf("%d\n",len);
    int st=last-len+1;
    for(int i=1;i<=n;++i){
    if(a[i]==st){
    printf("%d ",i);
    st++;
    }
    } return 0;
    }

最新文章

  1. 新手学跨域之iframe
  2. C++入门知识总结(1)
  3. ZOJ2604-DP
  4. PHP error_log() 函数
  5. process vs thread
  6. POJ1850 Code(组合+康托展开)
  7. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
  8. OD: Heap Exploit : DWORD Shooting &amp; Opcode Injecting
  9. 韦根(Wiegand)数据传输格式
  10. python3.5 修改 IIS WEB.CONFIG的相关方法
  11. 关于OOCSS的一点思考
  12. eclipse: eclipse导入工程出现大红叹号
  13. centos6.5配置uwsgi与nginx支持django
  14. JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON
  15. C++ vector 使用笔记
  16. JMS学习(二)之ActiveMQ
  17. java mail qq邮箱配置 实例
  18. .net mvc Razor 三元运算判断赋值 ?:
  19. ExpressRoute 线路和路由域
  20. GUC-2 原子性

热门文章

  1. 2021升级版微服务教程7-OpenFeign实战开发和参数调优
  2. 【Jboss】A RESOURCE POOL IS PERMANENTLY BROKEN!
  3. SAP 中session和外部断点设置的区别
  4. STGAN: A Unified Selective Transfer Network for Arbitrary Image Attribute Editing 阅读笔记和pytorch代码解读
  5. 阅读lodash源码之旅数组方法篇-compact和concat
  6. vue-cli3x4x修改本地端口port
  7. guava eventbus 原理+源码分析
  8. kvm实战
  9. Vue基础之插值表达式的另一种用法!附加变量的监听!
  10. moco框架加入cookies