QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#798003#8363. interactiveL_Wave10 103ms9152kbC++203.8kb2024-12-03 22:58:092024-12-03 22:58:15

Judging History

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

  • [2024-12-03 22:58:15]
  • 评测
  • 测评结果:10
  • 用时:103ms
  • 内存:9152kb
  • [2024-12-03 22:58:09]
  • 提交

answer

// Problem: #P13098. 交互题
// Author: XZC(L_Wave)
// Language: Cpp/G++20
// Contest: Hydro
// URL: http://www.nfls.com.cn:10611/p/5472
// Memory Limit: 512 MB
// Time Limit: 2000 ms
// Create Time: not 2024-12-03 20:49:39, but 1926-08-17 11:45:14
// 
// Powered by CP Editor (https://cpeditor.org)

#ifndef LOCAL
#include"interactive.h"
#else
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <numeric>

std::vector<int> solve(int n);
int query(std::vector<int> vec);

#define rep0(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
using namespace std;

namespace
{
	const int MAXN = 500, MAXQ = 300000;
	int n, ty, p[505], mat[505][505], cnt;
	bool vis[505];
	bool legal(const vector<int>& arr)
	{
		if((int)arr.size() != n) return false;
		rep1(i, n) vis[i] = false;
		rep0(i, arr.size()) {
			if(arr[i] < 1 || arr[i] > n || vis[arr[i]]) return false;
			vis[arr[i]] = true;
		}
		return true;
	}
}

int query(vector<int> arr)
{
	if(cnt == MAXQ || !legal(arr)) {
		printf("WA: 0\n"); exit(0);
	}
	
	int ret = 0;
	rep0(i, (int)arr.size() - 1) ret += mat[arr[i]][arr[i + 1]];
	cnt ++;
	return ret;
}

int main()
{
	scanf("%d%d", &ty, &n);
	iota(p+1,p+n+1,1);
	if (ty==1)
	rep1(i, n) scanf("%d", &p[i]);
	rep1(i, n - 1) mat[p[i]][p[i + 1]] = mat[p[i + 1]][p[i]] = 1;
	
	vector<int> ans = solve(n);
	if(!legal(ans)) printf("WA: 1\n");
	else {
		int sum = 0;
		rep0(i, n - 1) sum += mat[ans[i]][ans[i + 1]];
		if(sum == n - 1) printf("AC: %d\n", cnt);
		else printf("WA: 1\n");
	}
	exit(0);
}
#endif

#include <bits/stdc++.h>
#undef rep
#define rep(i, a, b) for (int i = (a), i##ABRACADABRA = (b); i <= i##ABRACADABRA; i++)
#define drep(i, a, b) for (int i = (a), i##ABRACADABRA = (b); i >= i##ABRACADABRA; i--)
using namespace std;
using ll = long long;

namespace local{

vector<int>res;
mt19937 rng(chrono::steady_clock().now().time_since_epoch().count());
int id[505],p[505],n;
long double w[505][505];
bool vis[505];

void dfs(int u){
  // cout<<u<<'\n';
  sort(id+1,id+n+1,[&](int x,int y){
    return w[u][x]>w[u][y];
  });
  res.push_back(u);
  vis[u]=1;
  rep(v,1,n)if (!vis[id[v]]){
    dfs(id[v]);
    return ;
  }
}

int ask(){
  vector<int>Q;
  rep(i,1,n)Q.push_back(p[i]);
  return query(Q);
}

void adj(vector<pair<int,int>>V,long double val){
  val/=V.size();
  for (auto [x,y]:V)w[x][y]=w[y][x]=(w[x][y]*10+val)/11;
}

std::vector<int> solve(int _n){
  n=_n;
  iota(p+1,p+n+1,1);
  iota(id+1,id+n+1,1);
  rep(i,1,n)rep(j,1,n){
    if (i^j)w[i][j]=2.l/n;
    else w[i][j]=-1e9;
  }
  rep(i,1,12000){
    shuffle(p+1,p+n+1,rng);
    int x=ask();
    // cout<<"$$ "<<x<<'\n';
    rep(t,1,n-1)if (w[p[t]][p[t+1]]>0.9999)--x;
    if (!x){
      rep(t,1,n-1)if (w[p[t]][p[t+1]]<=0.9999)w[p[t]][p[t+1]]=w[p[t+1]][p[t]]=-1e9;
      // rep(i,1,n)rep(j,1,n)cout<<w[i][j]<<" \n"[j==n];
      continue;
    }
    vector<pair<int,int>>V;
    rep(t,1,n-1)if (w[p[t]][p[t+1]]>0&&w[p[t]][p[t+1]]<=0.9999)V.push_back({p[t],p[t+1]});
    if (x==(int)V.size()){
      for (auto [x,y]:V)w[x][y]=w[y][x]=1;
      V.clear();
    }
    // if (V.size()==1)cout<<w[V[0].first][V[0].second]<<' '<<x<<'\n';
    adj(V,x);
    // if (V.size()==1)cout<<w[V[0].first][V[0].second]<<'\n';
    // if (x==-1){
      // rep(i,1,n)cout<<p[i]<<' ';
      // cout<<'\n';
      // rep(i,1,n-1)if (w[p[i]][p[i+1]]>0.9999)cout<<p[i]<<' '<<p[i+1]<<' '<<w[p[i]][p[i+1]]<<'\n';
    // }
    // rep(i,1,n)rep(j,1,n)cout<<w[i][j]<<" \n"[j==n];
  }
  rep(i,1,n){
    int cnt=0;
    rep(j,1,n)cnt+=w[i][j]>=0.9999;
    if (cnt==1){
      dfs(i);
      return res;
    }
  }
  return vector<int>(n);
}

}

std::vector<int> solve(int n){return local::solve(n);}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 2ms
memory: 3864kb

input:

1 3
3 1 2

output:

12000 612855835 7113

result:

points 1.0

Test #2:

score: 10
Accepted
time: 7ms
memory: 4032kb

input:

1 30
6 28 10 9 13 4 7 1 21 15 20 27 19 5 17 2 22 12 29 23 14 30 18 3 11 24 26 16 8 25

output:

12000 612855835 537621159

result:

points 1.0

Test #3:

score: 10
Accepted
time: 7ms
memory: 6004kb

input:

1 27
24 17 15 3 13 9 6 16 14 22 7 19 25 12 1 26 23 27 10 21 8 5 18 11 20 4 2

output:

12000 612855835 966160455

result:

points 1.0

Test #4:

score: 10
Accepted
time: 3ms
memory: 5936kb

input:

1 29
24 8 7 14 19 20 4 6 1 12 18 2 10 3 23 13 26 11 22 27 9 17 16 5 21 29 25 15 28

output:

12000 612855835 646167394

result:

points 1.0

Test #5:

score: 10
Accepted
time: 3ms
memory: 5916kb

input:

1 30
9 22 10 27 8 5 23 21 2 25 6 13 30 19 17 20 4 14 29 28 24 15 11 7 12 18 26 16 3 1

output:

12000 612855835 904341262

result:

points 1.0

Test #6:

score: 10
Accepted
time: 3ms
memory: 6008kb

input:

1 27
8 6 11 20 24 7 9 25 13 19 2 3 23 15 16 4 22 21 10 18 12 27 14 5 1 17 26

output:

12000 612855835 173992498

result:

points 1.0

Test #7:

score: 10
Accepted
time: 6ms
memory: 6200kb

input:

1 27
2 5 25 13 11 12 23 24 6 18 19 21 15 17 7 10 16 20 22 27 3 4 8 14 26 1 9

output:

12000 612855835 772894146

result:

points 1.0

Test #8:

score: 10
Accepted
time: 6ms
memory: 3988kb

input:

1 27
13 11 10 27 20 23 3 25 12 24 6 2 19 9 7 17 1 5 8 26 14 16 21 15 22 4 18

output:

12000 612855835 181323461

result:

points 1.0

Test #9:

score: 10
Accepted
time: 6ms
memory: 6204kb

input:

1 27
3 15 12 14 18 27 23 6 20 26 21 5 13 19 10 9 11 17 16 4 25 7 24 2 22 1 8

output:

12000 612855835 480249695

result:

points 1.0

Test #10:

score: 10
Accepted
time: 7ms
memory: 6056kb

input:

1 29
23 7 4 10 9 16 1 14 3 17 13 19 15 8 5 22 24 29 11 12 18 25 21 2 28 26 27 20 6

output:

12000 612855835 31142540

result:

points 1.0

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 90
Accepted
time: 7ms
memory: 6236kb

input:

1 27
17 16 3 20 27 5 2 13 24 21 25 23 19 9 7 4 22 12 26 15 14 11 1 18 6 10 8

output:

12000 612855835 558749364

result:

points 1.0

Test #12:

score: 90
Accepted
time: 7ms
memory: 6232kb

input:

1 29
19 13 20 22 26 1 23 24 3 14 8 25 29 17 10 9 15 11 18 4 2 28 21 7 6 12 16 27 5

output:

12000 612855835 145445666

result:

points 1.0

Test #13:

score: 90
Accepted
time: 7ms
memory: 6004kb

input:

1 28
16 7 19 9 23 12 20 26 4 10 15 8 21 5 1 22 27 2 18 24 28 6 3 14 13 17 25 11

output:

12000 612855835 877668399

result:

points 1.0

Test #14:

score: 90
Accepted
time: 7ms
memory: 6044kb

input:

1 30
13 4 29 25 16 14 6 15 19 28 7 20 3 23 12 17 8 22 1 24 9 30 21 18 2 26 27 10 11 5

output:

12000 612855835 737974315

result:

points 1.0

Test #15:

score: 90
Accepted
time: 6ms
memory: 4144kb

input:

1 27
18 25 15 20 23 14 4 16 27 6 2 12 21 19 17 26 9 8 10 11 3 7 13 22 24 5 1

output:

12000 612855835 590934171

result:

points 1.0

Test #16:

score: 78
Acceptable Answer
time: 88ms
memory: 8876kb

input:

2 494
364 164 445 359 288 412 15 377 91 481 14 3 357 358 269 136 336 106 392 200 50 388 33 338 114 11 266 186 170 239 494 196 395 68 36 423 378 218 342 275 67 240 120 86 134 356 190 323 123 339 187 30 270 430 292 121 372 404 94 143 454 309 461 344 141 480 474 248 199 42 150 260 369 483 493 124 396 4...

output:

12000 612855835 998930322

result:

points 0.86666666670

Test #17:

score: 78
Acceptable Answer
time: 103ms
memory: 9152kb

input:

2 500
468 70 339 65 443 143 75 123 220 163 390 484 489 139 392 147 183 132 202 14 19 380 310 259 179 482 85 36 232 419 285 378 137 274 376 23 321 263 217 485 387 466 94 104 164 57 185 359 42 211 40 206 418 184 458 173 441 291 11 366 428 384 223 190 374 34 275 210 171 226 408 168 88 494 204 66 481 10...

output:

12000 612855835 110390244

result:

points 0.86666666670

Test #18:

score: 78
Acceptable Answer
time: 94ms
memory: 9140kb

input:

2 500
217 120 312 323 22 113 331 295 315 66 434 181 381 421 154 253 226 100 152 490 389 261 244 249 165 500 4 426 23 487 356 466 364 436 2 374 486 494 420 14 344 34 26 475 279 96 457 493 185 147 227 41 180 61 472 102 76 131 141 164 324 204 403 298 283 284 19 132 258 355 499 183 108 483 348 172 134 2...

output:

12000 612855835 177306504

result:

points 0.86666666670

Test #19:

score: 0
Wrong Answer
time: 93ms
memory: 8860kb

input:

2 496
483 115 328 488 147 188 287 16 251 1 30 170 224 187 15 156 61 366 232 472 474 92 10 457 228 28 109 261 229 480 7 84 180 65 313 239 380 359 464 339 471 484 356 485 435 352 220 454 430 113 39 494 311 149 396 81 346 226 145 345 354 402 298 433 99 208 289 424 79 97 300 93 186 425 470 383 183 165 2...

output:

0 0 0

result:

FAIL WA