对拍奇慢无比
  • 板块学术版
  • 楼主iamajcer
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/7/29 20:44
  • 上次更新2025/7/30 10:33:33
查看原帖
对拍奇慢无比
629377
iamajcer楼主2025/7/29 20:44

我的对拍不知道为什么很慢很慢。平均 1 秒只有 1 组数据。以下是我的拍子,不知道为什么那么慢,求大佬帮忙看看。

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;

int a, id=0;
int main()
{
	while (1)
	{
		printf("%d:", id);
		
		system("random.exe");
//		Sleep(100);
		system("ac.exe");
//		Sleep(100);
		system("baoli.exe");
//		Sleep(100);
		if (system("fc 1.out 1.ans")) break;
		
		puts(""), id++;
	}
	printf("Wa on:%d", id);
	
	cin>>a;
	
	
	return 0;
}

另外,附上其余程序的代码。

random:

#include <bits/stdc++.h>
using namespace std;

int n, L, R;
int rd(int L, int R)
{
	return rand()%(R-L+1)+L;
}
int main()
{
	freopen("1.in", "w", stdout);
	
	srand(time(NULL));
	
	n=5, L=1, R=10;
	printf("%d\n", n);
	for (int i=1; i<=n; i++) printf("%d ", rd(L, R));
	puts("");
	for (int i=1; i<=n; i++) printf("%d ", rd(L, R));
	return 0;
}

baoli:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1000005;

int n, a[N], b[N], s[N], f[N], f2[N], g[N], g2[N], res[N], ans;
signed main()
{
	freopen("1.in", "r", stdin);
	freopen("1.out", "w", stdout);
	

	scanf("%lld", &n);
	for (int i=1; i<=n; i++) scanf("%lld", &a[i]);
	for (int i=1; i<=n; i++) scanf("%lld", &b[i]), s[i]=s[i-1]+b[i];
	
	for (int i=1; i<=n; i++)
	{
		int val=a[i]-b[i];
		
		f[i]=val, f2[i]=i;
		if (f[i-1]+val>f[i]) f[i]=f[i-1]+val, f2[i]=f2[i-1];
	}
	for (int i=n; i>=1; i--)
	{
		int val=a[i]-b[i];
		g[i]=val, g2[i]=i;
		if (g[i+1]+val>g[i]) g[i]=g[i+1]+val, g2[i]=g2[i+1];
	}
	for (int i=1; i<=n; i++)
	{
		res[i]=max(f[i], g[i]);
		res[i]=max(res[i], f[i]+g[i]-(a[i]-b[i])-min(s[i]-s[f2[i]], s[g2[i]-1]-s[i-1]));
	}
	for (int i=1; i<=n; i++) ans=(ans^res[i]);
	
	printf("%lld", ans);
	return 0;
}
/*
5 
4 4 4 7 9 
3 4 1 3 4 

10 
*/

ac:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
long long n,a[N],b[N],suml[N],sumr[N],sumlr[N],sumrl[N],maxl[N],maxr[N],maxlr[N],maxrl[N],ans;
int main(){
	freopen("1.in", "r", stdin);
	freopen("1.ans", "w", stdout);

//	ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n,maxl[0]=maxlr[0]=maxr[n+1]=maxrl[n+1]=-1e16;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++)cin>>b[i],a[i]-=b[i];
	for(int i=1;i<=n;i++)sumr[i]=sumr[i-1]+a[i],sumrl[i]=sumrl[i-1]+a[i]-b[i-1];
	for(int i=n;i>=1;i--)suml[i]=suml[i+1]+a[i],sumlr[i]=sumlr[i+1]+a[i]-b[i+1];
	for(int i=1;i<=n;i++)maxl[i]=max(maxl[i-1],suml[i]),maxlr[i]=max(maxlr[i-1],sumlr[i]);
	for(int i=n;i>=1;i--)maxr[i]=max(maxr[i+1],sumr[i]),maxrl[i]=max(maxrl[i+1],sumrl[i]);
	for(int i=1;i<=n;i++){
		long long l=max(0ll,maxrl[i]-sumrl[i])+maxl[i]-suml[i]+a[i];
		long long r=max(0ll,maxlr[i]-sumlr[i])+maxr[i]-sumr[i]+a[i];
		ans^=max(l,r);
	}
	cout<<ans;
	return 0;
}
2025/7/29 20:44
加载中...