大佬们帮看看,30分,案例123对,案例4我是25比答案少1
查看原帖
大佬们帮看看,30分,案例123对,案例4我是25比答案少1
1080899
fiddlesticks楼主2024/3/11 20:56
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+9,inf=0x3f3f3f3f;
int p1[N],p2[N],f[N],g[N],a[N];

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>p1[i],f[p1[i]]=i;
	for(int i=1;i<=n;i++)cin>>p2[i];
	for(int i=1;i<=n;i++)g[i]=p2[f[i]];	
	int idx=0;
	for(int i=1;i<=n;i++)
	{
		if(a[idx]<=g[i])a[++idx]=g[i];
		else
		{
			int t=upper_bound(a+1,a+idx+1,g[i])-a;
			a[t]=g[i];
		}
	}
	cout<<idx;
			
    return 0;
}

案例4输入 200 172 114 136 17 71 194 165 191 43 2 167 61 150 92 137 128 106 81 164 53 94 11 144 130 174 50 79 75 170 99 86 171 57 89 126 33 55 80 54 24 77 117 160 111 26 7 178 149 87 100 1 159 168 179 18 181 58 19 35 161 105 83 131 123 113 101 9 115 25 200 46 6 145 84 154 116 20 129 140 183 42 66 69 176 138 148 147 186 29 152 132 4 139 31 155 102 169 97 196 195 173 109 185 36 63 45 192 90 107 96 27 15 70 153 56 124 146 88 59 122 95 38 34 162 47 157 3 22 134 177 62 16 76 82 73 175 127 133 67 118 98 48 74 21 184 166 120 85 93 28 104 112 190 143 52 30 121 32 78 187 135 64 91 39 182 37 40 189 68 44 158 51 119 142 193 125 5 141 188 156 197 180 72 199 14 10 13 8 49 151 60 103 12 198 65 163 110 23 41 108 91 3 119 22 79 13 76 19 138 189 182 111 56 131 72 188 169 98 143 177 144 105 7 173 165 28 102 168 31 124 16 141 191 197 21 184 55 51 62 136 48 123 86 164 114 97 129 8 130 50 66 146 148 133 110 180 82 67 33 112 196 181 171 11 53 157 39 83 14 95 192 187 52 26 166 5 32 90 43 109 178 137 149 120 88 118 172 125 193 127 25 175 18 106 142 176 160 153 147 40 68 69 152 63 200 145 92 58 29 30 41 134 151 70 155 36 2 185 80 170 159 190 10 100 27 71 61 1 24 199 17 54 113 161 42 198 104 20 59 64 174 75 139 4 116 99 81 46 45 85 77 121 128 35 154 132 84 167 78 179 12 74 49 60 93 37 115 15 103 158 87 162 47 156 38 126 186 107 163 135 89 6 57 195 73 65 150 23 101 96 34 44 194 183 122 117 94 108 9 140 案例4输出 26

2024/3/11 20:56
加载中...