codeforces-977F-Consecutive Subsequence动态规划
Posted yangkun-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces-977F-Consecutive Subsequence动态规划相关的知识,希望对你有一定的参考价值。
codeforces-977F-Consecutive Subsequence
传送门:codeforces-977F-Consecutive Subsequence
求最长连续上升子序列,输出序列各元素的位置
刚开始没看懂是要连续,果断打了个LIS,wa了,然后又在上面做了改动,还是不对,老老实实重写dp吧
定义dp[x]是以x为结尾的最长串的长度
状态转移方程dp[a[i]]=dp[a[i]-1]+1;
a[i]最大是1e9,数组存不下,可以用map
上代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int N=1e6+9; 5 const int inf=0x3f3f3f3f; 6 int a[N]; 7 map<int,int>dp; 8 int main() 9 { 10 int n,k=0,ans; 11 scanf("%d",&n); 12 for(int i=1;i<=n;i++) 13 { 14 scanf("%d",&a[i]); 15 } 16 for(int i=1;i<=n;i++) 17 { 18 dp[a[i]]=dp[a[i]-1]+1; 19 if(dp[a[i]]>k) 20 { 21 k=dp[a[i]]; 22 ans=a[i]; 23 } 24 } 25 printf("%d ",k); 26 int cnt=ans-k+1; 27 for(int i=1;i<=n;i++) 28 { 29 if(a[i]==cnt) 30 { 31 printf("%d ",i); 32 cnt++; 33 } 34 } 35 printf(" "); 36 return 0; 37 }
以上是关于codeforces-977F-Consecutive Subsequence动态规划的主要内容,如果未能解决你的问题,请参考以下文章
Divide by three, multiply by two CodeForces - 977D (思维排序)
Codeforces977D ---Divide by three, multiply by two 深搜+map存出现的数