2016 ICPC World Finals -Ceiling Function

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016 ICPC World Finals -Ceiling Function相关的知识,希望对你有一定的参考价值。

直接建树伪哈希,哈希大法好,哈希出奇迹

然而本非好久没刷题了,WA了好多发,orz

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define ul unsigned long long
const ul mod=1000000009;
const ul modx=100000007;
const int maxn=2008;
struct fuck{
	int u,left,right;
}edge[maxn];
int tol;
void init()
{
	tol=0;
}
ul mody;
void fuckbitch(int x)
{
	edge[tol].u=x;
	edge[tol].left=-1;
	edge[tol].right=-1;
	tol++;
}
bool dfs(int u,int x)
{
	if(u==-1)
	{
		fuckbitch(x);
		return true;
	}
	if(edge[u].u>x)
	{
		if(dfs(edge[u].left,x))
			edge[u].left=tol-1;
	}
	else
	{
		if(dfs(edge[u].right,x))
			edge[u].right=tol-1;
	}
	return false;
}
map<ul,int> mp;
void fuckdfs(int u,ul md)
{
	mody=mody*modx+md;
	if(edge[u].left!=-1)
		fuckdfs(edge[u].left,(md<<1));
	if(edge[u].right!=-1)
		fuckdfs(edge[u].right,(md<<1|1));
}
int main()
{
	int t,i,j,x;
	int n,m;
	scanf("%d%d",&n,&m);		
		int sum=n;
		mp.clear();
		for(i=1;i<=n;i++) 
		{
			mody=0;
			init();
			for(j=1;j<=m;j++)
			{
				scanf("%d",&x);
				if(j==1)
					fuckbitch(x);
				else
					dfs(0,x);
			}
			fuckdfs(0,1);
			ul ans=mody;
			if(mp[ans]==0)
				mp[ans]++;
			else
				sum--;
		}
		printf("%d\n",sum);
	return 0;
 } 

 

以上是关于2016 ICPC World Finals -Ceiling Function的主要内容,如果未能解决你的问题,请参考以下文章

信息解码,ACM/ICPC World Finals 1991

2018 ACM-ICPC World Finals - Beijing

[算法竞赛入门经典] Crossword Answers ACM/ICPC World Finals 1994,UVa232

[算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213

[算法竞赛入门经典]Repeating Decimals, ACM/ICPC World Finals 1990,UVa202

LA 7155. ACM-ICPC World Finals 2015 F. Keyboarding