답안 #434800

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
434800 2021-06-21T20:34:40 Z rqi Cat in a tree (BOI17_catinatree) C++14
컴파일 오류
0 ms 0 KB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;

typedef vector<int> vi;
typedef long double db;

#define pb push_back
#define bk back()

#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

mt19937 rng(127);

int count_mushrooms(int n) {
	// cout << fixed << setprecision(6);
	// cout << db(226*100)/(db(98.0)) << "\n";
	vi known[2];
	vi untested;

	int ans = 1;
	known[0].pb(0);
	for(int i = 1; i < n; i++){
		untested.pb(i);
	}
	shuffle(all(untested), rng);

	const int BLOCK = sqrt(n)/2;

	vi p = vi{0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0};

	while(sz(untested)){
		int better_ind = 0;
		if(sz(known[1]) > sz(known[0])) better_ind = 1;

		if(sz(known[better_ind]) < 2 || sz(known[better_ind]) > BLOCK){

			// cout << "known: " << sz(known[better_ind]) << "\n";
			// cout << "untested: " << sz(untested) << "\n";

			vi to_test;

			int to_go = sz(untested);
			int special = untested.bk; untested.pop_back();
			to_test.pb(special);
			to_test.pb(known[better_ind][0]);

			vi tested;

			
			for(int i = 1; i < min(to_go, sz(known[better_ind])); i++){
				tested.pb(untested.bk);
				to_test.pb(untested.bk); untested.pop_back();
				to_test.pb(known[better_ind][i]);
			}

			bool do_special = 0;
			if(sz(untested) > 0){
				do_special = 1;
			}

			int res = use_machine(to_test);

			int special_identity = better_ind;
			if(res % 2 == 0){

			}
			else{
				special_identity^=1;
				
			}
			known[special_identity].pb(special);

			if(special_identity == 0){
				ans++;
			}



			// cout << res/2 << " " << sz(tested) << "\n";
			if(res/2 == sz(tested)){
				for(auto u: tested){
					known[better_ind^1].pb(u);
				}
			}
			else if(res/2 == 0){
				for(auto u: tested){
					known[better_ind].pb(u);
				}
			}

			if(better_ind == 0){
				ans+=sz(tested)-res/2;
			}
			else{
				ans+=res/2;
			}
		}
		else{
			vi tested;
			for(int i = 0; i < 2; i++){
				tested.pb(untested.bk); untested.pop_back();
			}
			vi to_test = vi{tested[0], known[better_ind][0], tested[1], known[better_ind][1]};
			int res = use_machine(to_test);
			for(int i = 0; i < 2; i++){
				int special_ind = better_ind;
				if((res>>i)&1){
					special_ind = better_ind^1;
					
				}
				else{

				}
				known[special_ind].pb(tested[i]);
			}
		}
		// else{
		// 	cout << "DOING SPECIAL" << "\n";

		// 	vi to_test;
		// 	vi tested;

		// 	cout << "sz(known[better_ind]):" << " " << sz(known[better_ind]) << "\n";
		// 	cout << "sz(untested): " << sz(untested) << "\n";

		// 	int to_go = sz(untested);
		// 	for(int i = 0; i < min(to_go, 2*sz(known[better_ind])); i++){
		// 		tested.pb(untested.bk); untested.pop_back();
		// 	}


			
		// 	cout << "tested: ";
		// 	for(auto u: tested){
		// 		cout << u << " ";
		// 	}

		// 	cout << "\n";
		// 	for(auto u: tested){
		// 		cout << p[u] << " ";
		// 	}

		// 	cout << "\n";

		// 	to_test.pb(tested[0]);
		// 	to_test.pb(known[better_ind][0]);

		// 	for(int i = 1; i+1 < sz(tested); i+=2){
		// 		to_test.pb(tested[i]);
		// 		to_test.pb(tested[i+1]);
		// 		to_test.pb(known[better_ind][(i+1)/2]);
		// 	}

		// 	if(sz(tested) % 2 == 0){
		// 		to_test.pb(tested.bk);
		// 	}

		// 	cout << "to_test: ";
		// 	for(auto u: to_test){
		// 		cout << u << " ";
		// 	}
		// 	cout << "\n";
		// 	for(auto u: to_test){
		// 		cout << p[u] << " ";
		// 	}
		// 	cout << "\n";

		// 	int res = use_machine(to_test);

		// 	cout << "res: " << res << "\n";

		// 	// cout << sz(known[better_ind]) << "\n";

		// 	// cout << res/2 << " " << sz(tested) << "\n";
		// 	// if(res/2 == sz(tested)){
		// 	// 	for(auto u: tested){
		// 	// 		known[better_ind^1].pb(u);
		// 	// 	}
		// 	// }
		// 	// else if(res/2 == 0){
		// 	// 	for(auto u: tested){
		// 	// 		known[better_ind].pb(u);
		// 	// 	}
		// 	// }

		// 	if(better_ind == 0){
		// 		ans+=sz(tested)-res;
		// 	}
		// 	else{
		// 		ans+=res;
		// 	}
		// }

		


	}

	return ans;
}

Compilation message

catinatree.cpp:1:10: fatal error: mushrooms.h: No such file or directory
    1 | #include "mushrooms.h"
      |          ^~~~~~~~~~~~~
compilation terminated.