#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() {          int a,b;     scanf("%d%d", &a, &b);     vector<int> ans(a, 0),tmp(a,1);     for (int i = 0;i<a;i++)     {         scanf("%d", &ans[i]);     }     for (int i = 1;i<a;i++)     {         for (int j = 0;j<i;j++)         {             if (ans[i]>=ans[j])             {                 tmp[i] = max(tmp[i], tmp[j] + 1);             }         }     }     cout << *max_element(tmp.begin(), tmp.end())+b-1; } //第四题答案,刚才转念一想,做复杂了。因为是重复的序列,我本来是在全局序列之中求最长上升子序列 其实只需在第一个序列之中求最长上升序列,并且其中的最大元素在后面的每个序列之中一定存在,顾加上 b-1。
点赞 4

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
牛客网
牛客企业服务