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;
 }
时间: 2024-12-17 03:52:52

2016 ICPC World Finals -Ceiling Function的相关文章

LA 7578. ACM World Finals 2016 C. Ceiling Function

树的同构 #include <iostream> using std::cin; using std::cout; using std::endl; struct treenode { int val; treenode *lc, *rc; treenode(int val = 0): val(val), lc(NULL), rc(NULL) {} }tree[50][20]; int i, cnt, res; void add_node(treenode *node) { if (node-

HDU 5875 Function -2016 ICPC 大连赛区网络赛

题目链接 网络赛的水实在太深,这场居然没出线zzz,差了一点点,看到这道题的的时候就剩半个小时了.上面是官方的题意题解,打完了才知道暴力就可以过,暴力我们当时是想出来了的,如果稍稍再优化一下估计就过了zzz.去年有一场现场赛也是n=1000,n^3过了,看来关键时刻实在做不出来就得大胆暴力啊. #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e5+5; int a[maxn]

2016 ICPC青岛站---k题 Finding Hotels(K-D树)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5992 Problem Description There are N hotels all over the world. Each hotel has a location and a price. M guests want to find a hotel with an acceptable price and a minimum distance from their locations.

Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function

今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比较的迷糊,这样的命名确实是和之前的那套基于SOAP协议的API完全联系不上.好了,不说闲话了.这里的Function呢,就我来看,更像是一些被封装好的原生函数和老API中的Request差不多的意思,只是API的架构方式变了,所以名称也就跟着变了. 我们之前要查看当前登录用户的信息,需要调用WhoAmIRequest,那现在呢?我们需要调用WhoAmI Function. 这里的F

2016 ICPC北京站现场赛总结(再度流水账)

其他的都先不说,北大的未名湖真的美! 虽然感觉北大其他地方都有些破旧之感,但是未名湖附近真的值得称赞. 在去北京之前就听说北京温度很低,不过是干冷,果不其然.北京不冷,就是嘴唇太干了,不喝水真的受不了,其实单单从温度来看,北京的冬天还是有点舒服的.北京地铁都是暖气,地铁里面还有高逼格的动态广告(第一次见,还在知乎上查了一下). 北大的伙食好便宜,比较我们学校而言,随便一根棒冰基本上就10块了,北大看了下棒冰的价钱都没超过5块的,手抓饼又便宜又好吃.食堂就不怎么好吃了(虽然便宜,但是听说我们是不能

2016 ICPC CAMP Recording

等了好久终于等到今天 马上能和群巨们一起学习了 希望不要暴露我太弱的本质............ 北京不冷,就是风大~~~ 1.24

2016 ICPC大连站---F题 Detachment

题意:输入一个x,将x拆分成一些小的数(这些数不能相同,即x=a1+a2+......   ai!=aj when i!=j),然后这些数相乘得到一个成积(s=a1*a2*......),求最大的乘积s: 思路:考虑最简单的做法便是贪心,很明显将一个数分的越小,这个乘积越大,那么对于给的x 先找2+3+4+....+n<=x 找到最大的n  如果和小于x ,那么将n右移一个数(n->n+1)  如果和还小于x继续将n-1右移......知道和x相等时,输出s   这样做时间复杂度很高,那么得优

HDU 5884 Sort -2016 ICPC 青岛赛区网络赛

题目链接 #include <iostream> #include <math.h> #include <stdio.h> #include<algorithm> #include<cstring> #include<queue> using namespace std; int data[100005]; int main() { int T,n,t; scanf("%d",&T); while(T--)

HDU 5878 I Count Two Three (打表+二分查找) -2016 ICPC 青岛赛区网络赛

题目链接 题意:给定一个数n,求大于n的第一个只包含2357四个因子的数(但是不能不包含其中任意一种),求这个数. 题解:打表+二分即可. #include <iostream> #include <math.h> #include <stdio.h> #include<algorithm> using namespace std; long long data[1000000],tot=0; int main() { long long maxn = 10