QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#492142#9156. 百万富翁Augenstern#Compile Error//C++143.2kb2024-07-26 09:50:192024-07-26 09:50:21

Judging History

你现在查看的是最新测评结果

  • [2024-07-26 09:50:21]
  • 评测
  • [2024-07-26 09:50:19]
  • 提交

answer

#pragma GCC optimize(3)
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
#define int long long
//#define ull unsigned int
//#define lll __int128
//#define double long double
using namespace std;
const long long INF=1e9+5;
//const long long mod=998244353,orm=3;
const long long mod=1000000007;
const int MAXN=600005;
const double eps=1e-6;
//bool ST;
vector<int> v[10];
map<int,int> mp;
int n,m,Q,B=6;
int msk[8],c[MAXN];
int a[MAXN][3],b[MAXN][3],d[MAXN][7],e[MAXN][7],sum1[10][10],sum2[10][10],f[10][10],g[10][10],C[10][10];
mt19937_64 rnd(unsigned(time(0)));
bool check(int x) {
	for(int i=0;i<=7;i++) {
		for(int j=0;j<=7;j++) sum1[i][j]=sum2[i][j]=f[i][j]=g[i][j]=0;
	}
	for(int i=0;i<8;i++) {
		for(int j=0;j<=2;j++) {
			if(i&(1<<j)) for(int t=0;t<=B;t++) sum1[i][t]+=d[a[x][j]][t];
		}
	}
	for(int i=0;i<8;i++) {
		for(int j=0;j<=2;j++) {
			if(i&(1<<j)) for(int t=0;t<=B;t++) sum2[i][t]+=e[b[x][j]][t];
		}
	}
	for(int i=7;i>=0;i--) {
		for(int j=7,sm=0,now=0;j>=0;j--) {
			sm=0;
			for(int k=0;k<=B;k++) sm+=sum1[i][k]+sum2[j][k];
			now=f[i][j]=mp[sm];
			for(int p:v[i]) {
				for(int q:v[j]) {
					if(p==i&&q==j) ;
					else now-=f[p][q];
				}
			}
			f[i][j]=now;
//			if(now) cout<<"		"<<i<<" "<<j<<" "<<now<<"\n";
			g[msk[i]][msk[j]]+=now;
		}
	}
	for(int i=0;i<=3;i++) {
		for(int j=0;j<=3;j++) {
//			cout<<i<<" "<<j<<" "<<g[i][j]<<"\n";
			if(i!=j&&g[i][j]>0) return 0;
		}
	}
	return 1;
}
void calc(int op,int x) {
	for(int i=0;i<=7;i++) {
		for(int j=0;j<=7;j++) sum1[i][j]=sum2[i][j]=0;
	}
	for(int i=0;i<8;i++) {
		for(int j=0;j<=2;j++) {
			if(i&(1<<j)) for(int t=0;t<=B;t++) sum1[i][t]+=d[a[x][j]][t];
		}
	}
	for(int i=0;i<8;i++) {
		for(int j=0;j<=2;j++) {
			if(i&(1<<j)) for(int t=0;t<=B;t++) sum2[i][t]+=e[b[x][j]][t];
		}
	}
	for(int i=0;i<8;i++) {
		for(int j=0,sm=0;j<8;j++) {
			sm=0;
			for(int k=0;k<=B;k++) sm+=sum1[i][k]+sum2[j][k];
			mp[sm]+=op;
		}
	}
}
void solve() {
	cin>>n>>m>>Q;msk[0]=0,msk[1]=1,msk[2]=1,msk[3]=2,msk[4]=1,msk[5]=2,msk[6]=2,msk[7]=3;
//	C[0][0]=1;
//	for(int i=1;i<=3;i++) {
//		C[i][0]=1;
//		for(int j=1;j<=i;j++) C[i][j]=C[i-1][j-1]+C[i-1][j];
//	}
	for(int i=1;i<=7;i++) {
		v[0].push_back(i);v[i].push_back(i);
		for(int j=(i-1)&i;j;j=(j-1)&i) v[j].push_back(i);
	}
	for(int i=1;i<=n;i++) cin>>a[i][0]>>a[i][1]>>a[i][2],sort(a[i],a[i]+3);
	for(int i=1;i<=n;i++) cin>>b[i][0]>>b[i][1]>>b[i][2],sort(b[i],b[i]+3);
	for(int i=1;i<=m;i++) for(int j=0;j<=B;j++) d[i][j]=rnd()%10000000000000+1,e[i][j]=rnd()%10000000000000+1;
	int l=0;
//	calc(1,2);
//	cout<<check(3);exit(0);
	for(int i=1;i<=n;i++) {
		if(l<i) l++,calc(1,l);
		if(l<i) assert(0);
		while(l+1<=n&&check(l+1)) l++,calc(1,l);
		calc(-1,i);
		c[i]=l;
	}
//	mp.clear();
	while(Q--) {
		int x,y;cin>>x>>y;
//		int fg=1;
//		for(int i=x;i<=y;i++) {
//			calc(1,i),fg&=check(i);
//			if(fg==0) break;
//		}
//		if(fg) cout<<"Yes\n";
//		else cout<<"No\n";
//		mp.clear();
		if(c[x]>=y) cout<<"Yes\n";
		else cout<<"No\n";
	}
}
signed main() {
//	cout<<(&ST-&ED)/1024.0/1024.0;
//	freopen("ex_4.in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	solve();
	return 0;
}

詳細信息

/usr/bin/ld: /tmp/cco7cKm0.o: in function `main':
answer.code:(.text.startup+0x0): multiple definition of `main'; /tmp/ccFi80A2.o:implementer.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccFi80A2.o: in function `main':
implementer.cpp:(.text.startup+0x1df): undefined reference to `richest(int, int, int)'
collect2: error: ld returned 1 exit status