社区讨论

关于NOIP-T4暴力分

学术版参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mj5twj8f
此快照首次捕获于
2025/12/14 22:37
3 个月前
此快照最后确认于
2025/12/18 13:55
3 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
const ll N=1e6+6;
ll n,m,c,a[N],w[N],dp[N];
ll sum[N],maxx[N];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		sum[i]=sum[i-1]+a[i];
	}
	ll q;
	cin >> q;
	while(q--){
		ll L,R;
		cin >> L >> R;
		for(int i=1;i<=n;i++) maxx[i]=LONG_LONG_MIN;
		for(int len=L;len<=R;len++){
			for(int l=1;l<=n-len+1;l++){
				ll r=l+len-1;
				for(int j=l;j<=r;j++){
					maxx[j]=max(maxx[j],(sum[r]-sum[l-1]));
				}
			}
		}
		ull ans=0;
		for(int i=1;i<=n;i++){
			ans^=(i*(unsigned long long)maxx[i]);
		} 
		cout << ans << "\n";
	}
	return ;
} 
int main(){
//	freopen("query.in","r",stdin);
//	freopen("query.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	ll T=1;
	while(T--) solve();
	return 0;
}
CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
const ll N=1e6+6;
ll n,m,c,a[N],w[N],dp[N];
ll sum[N],maxx[N];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		sum[i]=sum[i-1]+a[i];
	}
	ll q;
	cin >> q;
	while(q--){
		ll L,R;
		cin >> L >> R;
		for(int i=1;i<=n;i++) maxx[i]=LONG_LONG_MIN;
		for(int l=1;l<=n;l++){
			for(int r=l+L-1;r<=min(n,l+R-1);r++)
				for(int j=l;j<=r;j++){
					maxx[j]=max(maxx[j],(sum[r]-sum[l-1]));
				}
		}
		ull ans=0;
		for(int i=1;i<=n;i++){
			ans^=(i*(unsigned long long)maxx[i]);
		} 
		cout << ans << "\n";
	}
	return ;
} 
int main(){
//	freopen("query.in","r",stdin);
//	freopen("query.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	ll T=1;
	while(T--) solve();
	return 0;
}
为什么上面两个提交记录代码时间复杂度应该一样,但是8-103个测试点,提交记录1需要1.9s,但是提交记录2只需要1.3s啊。

回复

2 条回复,欢迎继续交流。

正在加载回复...