Codeforces Round #743 (Div. 2) B
目的:
找到满足ai<bj的最小的i+j-2 (index from 1 to n)
思路:
枚举会tle,考虑优化
对于每个ai,一定存在对应的bj满足ai<bj且i+j-2最小。这时bj只能取比ai大的偶数值。
因此,我们可以存每个值对应的id,先预处理出value<=x的最前的位置,可以在O(n)内更新答案。
code:
for(int i=1;i<=n;i++)cin>>a[i],p[a[i]]=i; for(int i=1;i<=n;i++)cin>>b[i],p[b[i]]=i; int ans=2*n; int j=2*n; for(int i=2*n;i>=1;i--){ if(i%2==1) ans=min(ans,j+p[i]-2); //j: <=i(出现过的)的最小位置 else{ j=min(j,p[i]); } } cout<<ans<<endl;

浙公网安备 33010602011771号