2017 广西邀请赛
HDU 6182
题目要求
问有多少k满足 k的k次方小于等于n n小于等于1e18
参考AC代码
|
|
思路
只有最多15种情况 暴力就行
HDU 6183
题目要求
一个空的坐标系,有4种操作:
1 x y c表示在(x, y)点染上颜色c;
2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色:
0表示清屏;
3表示程序退出(0<=x, y<=1000000, 0<=c<=50)
参考AC代码
|
|
思路
颜色只有50种,可以建50棵线段树然后暴力
对于每一种颜色,因为查询的横坐标是1到X,所以对于每个y,你只需要知道离y轴最近的那个点在哪里
这样的话就可以按y坐标建树,查询的时候判断下范围内有没有点即可
注意防止炸内存 可以用每个现有的结点的编号是++cnt的动态开点方式 并rt带&可以有效的返回改颜色root的编号
最后暴力50种颜色 判断维护的x最小值在不在要求的之内 若没有这种颜色直接跳过
HDU 6184
题目要求
n个点m条边的无向图,问有多少个A-structure
其中A-structure满足V=(A,B,C,D) && E=(AB,BC,CD,DA,AC)
参考AC代码
|
|
思路
可以看出A-structure是由两个有公共边的三元环构成的
msqrt(m)暴力三元环就好了
1.统计每个点的度数
2.入度<=sqrt(m)的分为第一类,入度>sqrt(m)的分为第二类
3.对于第一类,连续暴力依次连接的三个点 判断第三个点和第一个点是否相连
因为m条边最多每条边遍历一次,然后暴力的点的入度<=sqrt(m),所以复杂度约为O(msqrt(m))
4.对于第二类,直接暴力任意第一个点和连接第一个点的另两个点,判断这三个点是否构成环,因为这一类点的个数不会超过sqrt(m)个,
所以复杂度约为O(sqrt(m)^3)=O(msqrt(m))
5.判断两个点是否连接可以用set,map和Hash都行
考虑每一个边时,如果有K个点跟这个边的两个端点都相连,那么有CK2种方案
HDU 6185
题目要求
4×n的方格用1×2和2×1的矩形去填 有多少种方法
n的范围为1e18
参考AC代码
|
|
思路
用普通的求k×n的矩阵快速幂方法打表
接着带入杜教的找线性规律的模版就好了
HDU 6186
题目要求
有n个数字 求删除某个数字后剩余的总体与 或 异或值
多次询问
参考AC代码
|
|
思路
on求前后缀
o1询问
HDU 6187
题目要求
总权值-最大生成树权值和
参考AC代码
|
|
思路
注意删除的边数是m-cnt而不是m-n+1
HDU 6188
题目要求
输入一个n,接下来有n个数,让你求出能组成最多的对子或者顺子的和。
对子: (2,2),顺子: (1,2,3)。
参考AC代码
|
|
思路
贪心
当前数能作为某个顺子的最大值,则取顺子;
否则能取对子,则取对子。
HDU 6191
题目要求
给你一棵有根树,树上每个节点有一个值,每次询问以u为根节点的子树异或上x的最大值
参考AC代码
|
|
思路
按照dfs序建关于数字的二进制可持久化字典树就好了