离奇事件
  • 板块题目总版
  • 楼主OIer_Hhy
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/28 17:08
  • 上次更新2024/8/28 19:47:17
查看原帖
离奇事件
681941
OIer_Hhy楼主2024/8/28 17:08

为什么两份都能 AC?我第一份没改下标从0开始啊(CF1720D1)

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int n,a[N],f[N];
void solve(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++){
		f[i]=1;
		for(int j=max(0,i-256);j<i;j++){
			if((a[j]^i)<(a[i]^j)) f[i]=max(f[i],f[j]+1);
		}
	}
	int ans=0;
	for(int i=0;i<n;i++) ans=max(ans,f[i]);
	cout<<ans<<'\n';
}
int main(){
	int t;
	cin>>t;
	while(t--) solve();
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int n,a[N],f[N];
void solve(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++){
		f[i]=1;
		for(int j=max(0,i-256);j<i;j++){
			if((a[j]^i)<(a[i]^j)) f[i]=max(f[i],f[j]+1);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++) ans=max(ans,f[i]);
	cout<<ans<<'\n';
}
int main(){
	int t;
	cin>>t;
	while(t--) solve();
	return 0;
}

2024/8/28 17:08
加载中...