随笔分类 - HDU
摘要:题目链接:hdu_5354_Bipartite Graph 题意: 给你一个由无向边连接的图,问对于每一个点来说,如果删除这个点,剩下的点能不能构成一个二分图。 题解: 如果每次排除一个点然后去DFS判是否为二分图,那肯定会超时。 我们可以知道,删除其中一个点,对其他好多的边都不会有影响,所以我们可
阅读全文
摘要:题目链接:hdu_5314_Happy King 题意: 给出一颗n个结点的树,点上有权值; 求点对(x,y)满足x!=y且x到y的路径上最大值与最小值的差<=D; 题解: 还是树的点分治,在统计答案的时候先按到根的最小值排序,然后用最大值减D去找有多少个满足答案。 1 #include<bits/
阅读全文
摘要:题目链接:hdu_5324_Boring Class 题意: 给出n个二维点对,求LIS长度和编号字典序最小的LIS(x非增,y非减) 题解: dp[i]=max(dp[j]) (i>j,l[i]>=l[j],r[i]<=r[i]) 一看就是三维偏序问题。 如果树套树写的好,空间开的大的话,一样可以
阅读全文
摘要:题目链接:hdu_5618_Jam's problem again 题意: 给你n个点,每个点有一个坐标(x,y,z),找出有ans个点,3个坐标都比该点小,这个点的level就为ans,然后让你输出所有点的ans. 题解: 对于第一维,直接排序,后面两维的处理可以用线段树套lowbit,但空间用的
阅读全文
摘要:题目链接:hdu_5193_Go to movies Ⅱ 题意: 有n个人站成一排,每个人的身高为Hi。每次有人加入或者有人离开,就要判断有多少人站反了(i < j&&Hi>Hj) 第一行n,m,接下来n个整数(n,m<=2e4) 接下来m行, 0 x y 表示有一个身高为y的人插在x后面,x=0表
阅读全文
摘要:题目链接:hdu_5961_传递 题意: 中文,不解释 题解: 上bitset卡常,很优美的就过去了 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 typedef
阅读全文
摘要:题目链接:hdu_5963_朋友 题意: 中文,不解释 题解: 把样例拿出来看看,你会发现以x为节点是否能赢,就是与x相连的边权值的和或者异或是否为奇数。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 usi
阅读全文
摘要:题目链接:hdu_5968_异或密码 题意: 中午,不解释 题解: 前缀处理一下异或值,然后上个二分查找就行了,注意是unsigned long long 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 usi
阅读全文
摘要:题目链接:hdu_5969_最大的位或 题意: 中文,还是自己看 题解: xjb贪心一下就行了 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 typedef un
阅读全文
摘要:题目链接:hdu_5965_扫雷 题意: 中文,还是自己看吧。 题解: 现场赛这题用的状压DP过的,不过现在想想当时还确实想复杂了,冷静下来仔细思靠一下,其实第i-1个确定了,那么第i个也是确定的,可以递推出来。 设dp[i]表示第i列的雷数,然后枚举一下第一列的雷数,就可以推出所有的雷,然后算一下
阅读全文
摘要:题目链接:hdu_5950_Recursive sequence 题意:递推求解:F(n) = 2*F(n-2) + F(n-1) + n4 和F(1) = a,F(2) = b; 题解: 一看数据范围,肯定矩阵加速递推,不过公式不是线性的,需要把公式转换为线性的公式 1 #include<bits
阅读全文
摘要:题目链接:hdu_5286_wyh2000 and sequence 题意: 给一段长度为N的序列,每次询问l-r(l和r和上一次询问的答案有关)内 不同的数的 出现次数的次方 的和。强制在线 题解: 这里贴个达哥的题解: 大体思路就是,把n个数分成sqrt(n)块,每块sqrt(n)个数,然后求出
阅读全文
摘要:题目链接:hdu_5919_Sequence II 题意: 给你n个数,m个询问,每次问你一个区间中每一种数在区间中第一次出现的位置的中位数,强制在线。 题解: 一看就是主席树搞,不过这里要询问第一次出现的位置,有个技巧就是倒着将数插进去,如果有相同的数,就把位置靠后的数的贡献取消掉,这样查询的时候
阅读全文
摘要:题目链接:hdu_5036_Explosion 题意: 一个人要打开或者用炸弹砸开所有的门,每个门里面有一些钥匙,一个钥匙对应一个门,有了一个门的钥匙就能打开相应的门,告诉每个门里面有哪些门的钥匙,问需要用的炸弹为多少。 思路: 考虑每个点需要用炸弹打开的概率,那么所有点的概率之和就是解。首先用bi
阅读全文
摘要:题目链接:hdu_5790_Prefix 题意: 给你n个字符串,字符串总长度不超过10W,然后给你一个区间,问你这个区间的字符串不相同的前缀有多少个。 题解: 由于z与上一个答案有关,所以强制在线,区间询问可以用主席树搞搞。 不同前缀的话,我们可以用一个trie来记录每一个节点的最晚出现时间,也就
阅读全文
摘要:题目链接:hdu_5925_Coconuts 题意: 给你一张很大的图,和小于200个的障碍点,问这张图中的联通块有多少个 题解: 由于障碍点只有200个,所以肯定有很多的空白部分,我们将这些空白部分 分成k个矩形来压缩,最终形成的压缩图就最大为400*400,然后dfs一下联通块就行了 1 #in
阅读全文
摘要:题目链接:hdu_5927_Auxiliary Set 题意: 给一棵n个节点的树,最开始全部都是重点,现在有q个询问,每次给你一些轻点,并叫你输出整棵树的重点数量, 轻点可能会变为重点,如果这个轻点是两个重点的lca。 题解: 这里 我把有重点的子树叫重子树,一个重点都没有的子树叫轻子树。 一个轻
阅读全文
摘要:题目链接:hdu_5788_Level Up 题意: 有一棵树,n个节点,每个节点有个能力值A[i],mid[i],mid的值为第i节点的子树的中位数(包括本身),现在让你将其中的一个节点的A值改为1e5,问所有的mid的和最大问多少。 题解: 我们可以知道,如果改变其中一个的A[i],如果A[i]
阅读全文
摘要:题目链接:hdu_4417_Super Mario 题意: 给你n个树,有m个询问,每个询问有一个区间和一个k,问你这个区间内不大于k的数有多少个。 题解: 考虑用主席树的话就比较裸,当然也可以用其他的写 1 #include<bits/stdc++.h> 2 #define F(i,a,b) fo
阅读全文
摘要:题目链接:hdu_2476_String painter 题意: 有a,b两字符串,现在你有一个刷子,每次可以任选一个区间,使这个区间变成你想要的字符,现在让你将a变成b,问最少刷多少次 题解: 考虑区间dp[i][j],表示从第i到第j最少需要刷的次数。这里要先算从空串到b的dp,然后根据这个来推
阅读全文

浙公网安备 33010602011771号