[codeforces 1285D] Dr. Evil Underscores 不定长数组+分治算法+位运算

[codeforces 1285D] Dr. Evil Underscores  不定长数组+分治算法+位运算

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址https://codeforces.com/contest/1285/problem/D

Problem Lang Verdict Time Memory
D - Dr. Evil Underscores GNU C++11 Accepted 296 ms 17100 KB

 容易理解的算法,大都效率要低些。

//不定长数组+分治算法+位运算
//思路同该文https://www.cnblogs.com/CADCADCAD/p/12179509.html

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v;
int n;
int dfs(int bit,vector<int> &v){
	vector<int> v0,v1;
	int i;
	if(bit<0)return 0;
	for(i=0;i<v.size();i++)
		if((v[i]>>bit)&1)v1.push_back(v[i]);//此处错写成if((v[i]>>bit)&&1)v1.push_back(v[i]);
		else v0.push_back(v[i]);//此处错写成else v0.push_back(v[0]);
	if(v1.size()==0)return dfs(bit-1,v0);
	else if(v0.size()==0)return dfs(bit-1,v1);
	else return min(dfs(bit-1,v1),dfs(bit-1,v0))+(1<<bit);
}
int main(){
	int i,a;
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%d",&a),v.push_back(a);
	printf("%d\n",dfs(30,v));
	return 0;
}
发布了475 篇原创文章 · 获赞 509 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/mrcrack/article/details/103946108