QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#559878#9237. Messageyyyyxh#85.74 232ms4068kbC++232.3kb2024-09-12 10:10:032024-09-12 10:10:05

Judging History

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

  • [2024-09-12 10:10:05]
  • 评测
  • 测评结果:85.74
  • 用时:232ms
  • 内存:4068kb
  • [2024-09-12 10:10:03]
  • 提交

answer

#include "message.h"
#include <cstdio>
#include <algorithm>
using namespace std;
typedef vector<bool> vb;
namespace GO{
	int c[31][16];
	int encode(int cur){
		int res=0;
		for(int x=29;~x;--x)
			if(cur>>x&1) res+=c[x][16-__builtin_popcount(cur>>x)];
		return res;
	}
	int decode(int cur){
		int res=0;
		for(int x=29;~x;--x){
			int val=c[x][15-__builtin_popcount(res>>x)];
			if(cur>=val) cur-=val,res|=(1<<x);
		}
		return res;
	}
	void init(){
		for(int i=0;i<=30;++i){
			c[i][0]=1;
			for(int j=1;j<=15&&j<=i;++j) c[i][j]=c[i-1][j]+c[i-1][j-1];
		}
	}
}
void send_message(vb M,vb C){
	GO::init();
	int fir=0;
	for(int i=0;i<31;++i) if(!C[i]){fir=i;break;}
	if(fir==15){
		vector<vb> R(65,vb(31));
		int pp=0,p=15;
		auto add=[&](bool x)->void{
			R[pp][p++]=x;
			if(p==31) p=15,++pp;
		};
		for(int i=M.size();i<1024;++i) add(0);
		add(1);for(bool x:M) add(x);
		for(int i=0;i<65;++i) send_packet(R[i]);
	}
	else{
		int k=__lg(15^fir);
		for(int i=0;i<k;++i) send_packet(vb(31,fir>>i&1));
		int p=0;
		vector<vb> R(66,vb(31));
		int cur=0;
		for(int i=1;i<31;++i) if(!C[i]&&i!=fir) cur|=(1<<(i-1));
		cur=GO::encode(cur);
		auto add=[&](bool x)->void{
			R[p++][fir]=x;
			if(p==66){
				p=0;++fir;
				while(fir<31&&C[fir]) ++fir;
			}
		};
		for(int i=0;i<28;++i) add(cur>>i&1);
		for(int i=M.size();i<1024;++i) add(0);
		add(1);for(bool x:M) add(x);
		for(int i=0;i<66;++i) send_packet(R[i]);
	}
}
vb receive_message(vector<vb> R){
	GO::init();
	if(R.size()==65lu){
		int p=15,pp=0;
		auto qry=[&]()->bool{
			bool val=R[pp][p++];
			if(p==31) p=15,++pp;
			return val;
		};
		int len=1024;
		while(!qry()) --len;
		vb res(len);
		for(int i=0;i<len;++i) res[i]=qry();
		return res;
	}
	else{
		int k=R.size()-66;
		vb C(31);
		int fir=0;
		for(int i=k+1;i<4;++i) fir|=(1<<i);
		for(int i=0;i<k;++i){
			int cnt=0;
			for(int x:R[i]) if(x) ++cnt;
			if(cnt>15) fir|=(1<<i);
		}
		C[fir]=1;
		int p=k;
		auto qry=[&]()->bool{
			bool val=R[p++][fir];
			if(p==k+66){
				p=k;++fir;
				while(!C[fir]) ++fir;
			}
			return val;
		};
		int cur=0;
		for(int i=0;i<28;++i) if(qry()) cur|=(1<<i);
		cur=GO::decode(cur);
		for(int i=0;i<30;++i) if(cur>>i&1) C[i+1]=1;
		int len=1024;
		while(!qry()) --len;
		vb res(len);
		for(int i=0;i<len;++i) res[i]=qry();
		return res;
	}
}

详细

Subtask #1:

score: 8.574
Acceptable Answer

Test #1:

score: 8.574
Acceptable Answer
time: 226ms
memory: 3760kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #2:

score: 8.574
Acceptable Answer
time: 171ms
memory: 4004kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #3:

score: 8.574
Acceptable Answer
time: 200ms
memory: 3732kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #4:

score: 8.574
Acceptable Answer
time: 172ms
memory: 3672kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #5:

score: 8.574
Acceptable Answer
time: 120ms
memory: 4068kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #6:

score: 8.574
Acceptable Answer
time: 101ms
memory: 4000kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #7:

score: 8.574
Acceptable Answer
time: 127ms
memory: 3792kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Subtask #2:

score: 77.166
Acceptable Answer

Test #8:

score: 77.166
Acceptable Answer
time: 211ms
memory: 3792kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #9:

score: 77.166
Acceptable Answer
time: 129ms
memory: 3900kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #10:

score: 77.166
Acceptable Answer
time: 191ms
memory: 3792kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #11:

score: 77.166
Acceptable Answer
time: 138ms
memory: 4068kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #12:

score: 77.166
Acceptable Answer
time: 224ms
memory: 3800kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #13:

score: 77.166
Acceptable Answer
time: 150ms
memory: 3728kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #14:

score: 77.166
Acceptable Answer
time: 76ms
memory: 3740kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #15:

score: 77.166
Acceptable Answer
time: 115ms
memory: 3816kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #16:

score: 77.166
Acceptable Answer
time: 184ms
memory: 3668kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #17:

score: 77.166
Acceptable Answer
time: 149ms
memory: 3796kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #18:

score: 77.166
Acceptable Answer
time: 112ms
memory: 3964kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #19:

score: 77.166
Acceptable Answer
time: 165ms
memory: 3796kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #20:

score: 77.166
Acceptable Answer
time: 152ms
memory: 3968kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #21:

score: 77.166
Acceptable Answer
time: 155ms
memory: 4008kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #22:

score: 77.166
Acceptable Answer
time: 170ms
memory: 3964kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #23:

score: 77.166
Acceptable Answer
time: 232ms
memory: 4064kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #24:

score: 77.166
Acceptable Answer
time: 162ms
memory: 3748kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #25:

score: 77.166
Acceptable Answer
time: 146ms
memory: 3820kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #26:

score: 77.166
Acceptable Answer
time: 167ms
memory: 4000kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574

Test #27:

score: 77.166
Acceptable Answer
time: 155ms
memory: 3932kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.8574

result:

points 0.8574