[暴力] BZOJ 3917 [Baltic2014]sequence

学习波罗的海小哥的做法,复杂度好虚:http://www.boi2014.lmio.lt/tasks.html

APIO2016 的 practise

据说是KlogK的 

还有O(K)的做法

UPD:复杂度是有依据的 突然就脑补出来了 不过这个log是以10为底的


#include
#include
#include
using namespace std;
typedef long long ll;

const ll NIL=102345678900000LL;
const int MAX_K=100000;

struct Set{
	int bit;
	Set() { bit=0; }
	Set(int x) { bit=1< sets,bool Fini) {
	int from=0,to=9;
	if (sets.size()==1){
		if (sets[0].empty()){
			if (Fini) return 0;
			from=1;
		}
		else
			return sets[0].Num();
	}
	else if (sets.size()==2){
		if (!sets[0].count(9) && !sets[1].count(0))
			to=8;
	}
	ll ans=NIL;
	for (int i=from;i<=to;i++){
		vector New; Set cur,tmp;
		bool fini=!(i==0 && (sets[0].count(0) || !Fini));
		for (int j=0,t=i;j<(int)sets.size();j++,t++){
			if (t==10)
				t=0,New.push_back(cur),cur.clear();
			tmp=sets[j]; tmp.erase(t);
			cur.insert(tmp);
		}
		New.push_back(cur);
		ll ret=find(New,fini);
		if (ret!=NIL && (ans==NIL || ret*10+i sets;
	for (int i=0;i



你可能感兴趣的:(暴力)