QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#492294 | #9156. 百万富翁 | zeq2021# | 15 | 606ms | 77300kb | C++14 | 3.4kb | 2024-07-26 11:15:29 | 2024-07-26 11:15:29 |
Judging History
answer
/*
* /$$ /$$
* |__/ |__/
* /$$$$$$$$ /$$ /$$$$$$$$ /$$ /$$$$$$
* |____ /$$/| $$|____ /$$/| $$ /$$__ $$
* /$$$$/ | $$ /$$$$/ | $$| $$ \ $$
* /$$__/ | $$ /$$__/ | $$| $$ | $$
* /$$$$$$$$| $$ /$$$$$$$$| $$| $$$$$$$
* |________/|__/|________/|__/ \____ $$
* | $$
* | $$
* |__/
*/
//hj23308保佑我
//Missile保佑我
/*
* 醒了在梦里挣扎,不觉黯淡了朝霞
*/
/*
* 我很高兴你没有忘了我,但是我现在更希望你已经忘了我了。
* 希望在你的记忆中,我只是尘土一撮,从你的全世界路过,然后四散飞扬不留下一点痕迹,而你要不回头的往前走。
* 我更希望我只是从你的全世界路过,只是路过
*/
/*
* 只是我在十字路口守了太久,守到黄沙如雨掩埋一切痕迹,才发现自己等的人已经离开了。
*/
/*
* 听我的 别回头 回头就可能会泪流满面,会被黄沙掩埋,所以即使痛苦也要向前走
*/
/*
* 我听到了「天行健」的回响,这是一个伟大斗士的不息自强;
* 我听到了「破万法」的回响,这是一个黑道打手的守护欲望;
* 我看见了「生生不息」的激荡,这是一个骗子的伟大乐章!
*/
/*
* 我用虚假的面具照顾着细腻的感情;
* 我以华丽的衣物下藏着腐烂的血肉;
* 当我摘下面具,褪去衣物,即便是我最亲近的人,也无法直视我
*/
#include "richest.h"
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
bool bj[MAXN];
int num[MAXN],K,L[MAXN],R[MAXN],P[MAXN];
int richest(int N, int T, int S)
{
if(N==1000&&T==1) {
for(int i=0;i<N;i++) num[i]=0;
vector<int>a,b,c;
a.clear(),b.clear(),c.clear();
for(int i=0;i<N;i++) {
for(int j=i+1;j<N;j++) {
a.emplace_back(i),b.emplace_back(j);
}
}
c=ask(a,b);
for(auto v:c) {
num[v]++;
}
for(int i=0;i<N;i++) {
if(num[i]==N-1) return i;
}
}
for(int i=0;i<N;i++) bj[i]=false;
vector<int>q,a,b,c;
for(int i=0;i<N;i++) {
q.emplace_back(i);
}
int t=0,s=0,sum=0;
while(sum<=12) {
sum++;
a.clear(),b.clear();
t++;
for(int i=0;i<q.size();i+=2) {
if(i+1<q.size()) {
a.emplace_back(q[i]);
b.emplace_back(q[i+1]);
}
}
s+=a.size();
c=ask(a,b);
int site=0;
for(int i=0;i<q.size();i+=2) {
if(i+1>=q.size()) break;
if(c[site]==q[i]) {
bj[q[i+1]]=true;
}
else bj[q[i]]=true;
site++;
}
q.clear();
for(int i=0;i<N;i++) {
if(!bj[i]) q.emplace_back(i);
}
}
K=sqrt(q.size());
for(int i=1;i<=K;i++) {
L[i]=(i-1)*K,R[i]=i*K-1;
}
R[K]=q.size()-1;
a.clear(),b.clear();
for(int i=1;i<=K;i++) {
for(int j=L[i];j<=R[i];j++) {
for(int k=j+1;k<=R[i];k++) {
a.emplace_back(q[j]);
b.emplace_back(q[k]);
}
}
}
c=ask(a,b);
for(int i=0;i<N;i++) num[i]=0;
for(auto v:c) {
num[v]++;
}
for(int i=1;i<=K;i++) {
int Len=R[i]-L[i]+1;
for(int j=L[i];j<=R[i];j++) {
if(num[j]==Len-1) {
P[i]=j;
}
}
}
a.clear(),b.clear();
for(int i=1;i<=K;i++) {
for(int j=i+1;j<=K;j++) {
a.emplace_back(q[P[i]]);
b.emplace_back(q[P[j]]);
}
}
c=ask(a,b);
for(int i=0;i<N;i++) num[i]=0;
for(auto v:c) {
num[v]++;
}
for(int i=1;i<=K;i++) {
if(num[q[P[i]]]==K-1) return q[P[i]];
}
}
详细
Pretests
Pretest #1:
score: 15
Accepted
time: 605ms
memory: 27420kb
input:
1000 1 499500 957319859
output:
Correct 7127326332295218295 1.000000 1331569654267968081
result:
points 1.0 Correct
Pretest #2:
score: 0
Wrong Answer
time: 148ms
memory: 77300kb
input:
1000000 20 2000000 29091473
output:
Protocol violation: i and j have different sizes 1404982681567508643 0.000000 6906350380861515327
result:
points 0.0 Protocol violation: i and j have different sizes
Final Tests
Test #1:
score: 15
Accepted
time: 606ms
memory: 27392kb
input:
1000 1 499500 957319857
output:
Correct 7127326332295218295 1.000000 1331569654267968081
result:
points 1.0 Correct
Test #2:
score: 0
Wrong Answer
time: 160ms
memory: 77156kb
input:
1000000 20 2000000 29091471
output:
Protocol violation: i and j have different sizes 1404982681567508643 0.000000 6906350380861515327
result:
points 0.0 Protocol violation: i and j have different sizes