WA 0 测试样例+自测全对

思路死路

第一问

求最长不上升子序列,我直接就是一个数组反转🤓👆然后求上升子序列,这样就可以直接使用 #A1281. 最长上升子序列 的代码了

第二问

因为求有多少个最长不上升子序列,所以我直接把已经被算的数从a数组里清空(clean函数),然后反复进行算a数组里的最长不上升子序列 从a数组里清空已经被算的数,在这个过程中循环了几次那第二问就是几

🤓👆🖥 → 🤔💭 → 🤡❌ → 💀💩

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;

int lis[N], a[N], n, ans1, ans2 = 1, iii;

bool check()
{
	for (int i = 1; i <= n; i++)
		if (a[i])
			return false;
	return true;
}

void clean()
{
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			if (lis[i] == a[j])
			{
				lis[i] = a[j] = 0;
				break;
			}
}

void ppp()
{
	for (int i = 0; i <= 15; i++)
		cout << lis[i] << " ";
	cout << endl;
}

int a1()
{
	int l = 1;
	for (int i = 1; i <= n; i++)
	{
		int ptr = lower_bound(lis, lis + l, a[i]) - lis;
//		cout << ptr << " " << a[i] << " " << a[ptr] << endl;
		lis[ptr] = a[i];
		if (ptr == l)
			l++;
//		ppp();
//		cout << endl;
	}
	return l;
}

int main()
{
	while (cin >> a[n++]) {/*empty*/}
	for (int i = 0; i < n / 2; i++)
		swap(a[n - i - 1], a[i]);
//	ppp();
	ans1 = a1();
	clean();
	while (!check())
	{
		ans2++;
		a1();
		clean();
	}
	cout << ans1 - 1 << " " << ans2;
	
	return 0;
}

8 comments

  • @ 2025-3-29 23:56:32

    感谢@,已被骂爽,颇有收获

    • @ 2025-3-30 0:21:04

      太感谢了啊啊啊

      重新看了一遍自己的思路代码简直就是一坨

      大谢

    • @ 2025-3-30 0:22:27

      感谢溜开蚊!!!

      太善良了带好人溜开蚊

    • @ 2025-3-30 9:27:43

      🤓

    • @ 2025-3-30 11:47:26

      @ 带好人

    • @ 2025-3-30 17:13:11

      @ 你说的固然很对,但是我没看懂,求中译中

    • @ 2025-3-31 13:12:42

      @ 溜开蚊sama请直接为我调代码

      球球了🙏🙏🙏

    • @ 2025-3-31 13:13:47

      @ f

    • @ 2025-3-31 13:14:31

      @ 🤘faker vs bin

    • @ 2025-3-31 13:15:49

      @ 去你MarkDown

    • @ 2025-3-31 13:17:42

      @ 😭😭😭😭😭😭😭😭😭😭😭😭溜开蚊sama不要这样啊啊啊😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭

    • @ 2025-3-31 13:53:05

      @

      #include<iostream>
      #include<algorithm>
      using namespace std;
      int n;
      int a[114514];//序列 
      int rf[114514];//每一个的最长上升子序列的长度 
      int ma;
      int cnt;
      int sum;
      int idx;
      int main(){
      	while(cin>>n) a[++cnt]=n;
      	n=cnt;
      //	idx=n;
      //	cnt=0;
      	fill(rf,rf+n+1,1);//考虑最差情况,每一个也至少是1 
      	for(int i=2;i<=n;i++){
      		for(int j=1;j<i;j++){
      			if(a[j]>=a[i]){
      				rf[i]=max(rf[j]+1,rf[i]);
      			}
      		}
      		ma=max(rf[i],ma);
      	}
      	cout<<ma<<endl;
      //	sort(rf+1,rf+n+1);
      //	while(sum<n){
      //		sum+=rf[idx];
      //		idx--;
      //		cnt++;
      //	}
      	ma=0;
      	fill(rf,rf+n+1,1);//考虑最差情况,每一个也至少是1 
      	for(int i=2;i<=n;i++){
      		for(int j=1;j<i;j++){
      			if(a[j]<a[i]){
      				rf[i]=max(rf[j]+1,rf[i]);
      			}
      		}
      		ma=max(rf[i],ma);
      	}
      	cout<<ma;
      	return 0;
      }
      //90 103 99 83 102 70 86 70 99 71
      //5 3
      //89 126 85 103 101 86 86 98 96 99 89 81 101 92 79 77 82 97 83 100 78 72 79 97 71 80 98 89 69 74
      //12 6
      
      

      棍爸

    • @ 2025-3-31 13:56:39

      @ 内容已复制到剪贴板!

    • @ 2025-3-31 13:59:56

      @ 💩

  • @ 2025-3-29 0:13:02

    //90 103 99 83 102 70 86 70 99 71

    //5 3

    //89 126 85 103 101 86 86 98 96 99 89 81 101 92 79 77 82 97 83 100 78 72 79 97 71 80 98 89 69 74

    //12 6

    洛谷上的测试用例,好好想想吧

    👍 2
    • @ 2025-3-29 0:10:12

      第二问思路没看懂在讲什么,但这tm只是一个很简单的求最长上升子序列的长度(不懂看这里)这才是可以直接复用#A1281. 最长上升子序列代码的地方

      👍 1
      • @ 2025-3-29 0:05:11

        纯肺雾懒得喷,我只看了一点 第一眼看见第一问的思路就笑出来了,你都能想出复用那个代码为什么为什么不能去想改判断条件

        最长上升是前<后,那最长不上升不就是前>=后吗,你交换个🥚的数组啊 这题要是求最长下降也就算了,但它是最长不上升啊,=的情况被你吃了吗

        👍 2
        • @ 2025-3-29 0:15:58

          你测试样例能对的原因就是因为测试样例里没有重复的元素,你随便弄个有一样数的就直接原型暴露了

      • @ 2025-3-28 15:53:48

        感觉有点抽象,打回去出几个测试样例再问😡

        1不上升是可以有等号的,你反着遍历那也是不下降📉

        2你这个想法也可以,但是之后要想明白最小覆盖链数=最大反链长

        • @ 2025-3-28 14:04:36

          去你MarkDown

          👍 2
          • @ 2025-3-28 14:02:42

            石山代码滞销了

            帮帮我

            • @ 2025-3-28 14:00:30

              不会有人帮你调代码的!

              🤡 3
            • 1

            Information

            ID
            745
            Time
            1000ms
            Memory
            256MiB
            Difficulty
            8
            Tags
            # Submissions
            233
            Accepted
            43
            Uploaded By