随笔分类 - ACM / SYUACM训练
摘要:题目链接:CodeForces 1619D【New Year's Problem】 思路 可以因为最多只能逛n - 1个商店,当n - 1大于等于m的时候,所有朋友都能取最大值,否则至少有两个人要选择相同的商店,所以依次枚举两个人选择同一个商店,其他人选择喜悦值最大的商店。 代码 #include
阅读全文
摘要:题目链接:HDU 4334【Trouble】 思路 哈希+贪心,直接将五个数组分成两个或者三个数组,此时数组相加的时间复杂度为O(n2)或者O(n3),然后双重循环数组e和s1并遍历找出s2中是否有满足题意的元素,这个步骤可以使用二分代替还能降低时间复杂度。 代码 #include <iostrea
阅读全文
摘要:题目链接:CodeForces 1132B【Discounts】 思路 因为使用coupons购买q[i]块巧克力,不需要付最便宜的那块巧克力的钱,所以为了使得优惠最大化,所以可以在使用优惠券的时候购买最贵的p[i]块巧克力,所以计算所有巧克力价格高之和和排序后很快能得到答案。 代码 #includ
阅读全文
摘要:题目链接:CodeForces 1873A【Short Sort】 思路 签到题,因为能交换两个元素的位置,所以只需要判断是否有一个元素在他原来该在的位置上就行。 代码 #include <iostream> #include <cstring> using namespace std; #defi
阅读全文
摘要:题目链接:CodeForces 908B【New Year and Buggy Bot】 思路 简单模拟,用pair数组存下四个方向然后,依次枚举全排列,将每个方向依次映射给0,1,2,3,然后就是跟着String走,遇到障碍或者走出地图就返回false,表示当前方案是错误的,走完String的所有
阅读全文
摘要:题目链接:CodeForces 908C【New Year and Curling】 思路 模拟,考虑到两个圆盘可能出现y值相同且相接的情况,所以在判断当前圆盘的y值时循环的范围从在前圆盘的x值左右浮动2r,依次遍历这个范围内的数组y(存储的是当前已经移动了圆盘中的横坐标为i的圆盘的最大的y值),然
阅读全文
摘要:题目链接:最大子树和 思路 由于可以无限剪枝,所以假设以节点1为根,并删去所有美丽质数小于0的子树,又考虑到可能会出现根节点为负数,导致可能会只留下子树而把节点1为根节点的其他部分扔掉,所以需要dp数组记录,dp[i]为以节点i为根节点能得到的最大的美丽指数,贪心将节点i的子树中所有美丽指数之和小于
阅读全文
摘要:题目链接:填涂颜色 思路 因为需要找出被所有1围住的0,但是发现直接查找会比较麻烦,会需要搜索判断四个方向都被1包围,然后还要再次搜素给这些0赋值。但是如果反向思维把不被1包围的0全部找出来剩下的就是被1包围的0了,可以使用搜索从在正方形边界上的0开始搜索,将所有能搜到的0全部标记,剩下的就是被1包
阅读全文
摘要:题目链接:Entertainment in MAC 思路 当当前操作次数n为偶数时,若原字符串大于反转字符串则可以将原字符串反转n - 2次,则得到的还是原字符串,此时反转一次,并将其再次反转的字符串加到反转字符串的末尾,此时得到词典最小的字符串,源字符串小于反转字符串时,直接将原字符串反转n次得到
阅读全文
摘要:题目链接:数字三角形 思路 dp:金字塔顶的元素为起点,金字塔每行的最左侧数字只能从上一层的最左侧数字到达,如7 -> 3 -> 8 -> 2 -> 4,这些数字中的每一个(除起点7外)都只能从上一层的最左侧数字到达,递推公式为dp[i][1] = max(dp[i][1], num[i][1] +
阅读全文
摘要:题目链接:自动刷题机 思路 二分典题,两个二分判断出可能的最大值和最小值。需要注意当删掉y行代码后,当前代码行数小于0时需要将代码行数重新赋值为0,然后需要注意二分的n最大值的边界,因为x[i]的最大值为1e9,日志最多有1e5行,所以考虑极限情况,日志每一行都是写了1e9行代码,所以最大n可能为1
阅读全文
摘要:题目链接:快速幂 思路 简单快速幂模板。a ^ 17 = (a ^ 2) ^ 8 * a,此时pow()中的y就可以视为17 -> 8(y >>= 1),pow()中的x就是底数a -> a ^ 2(x *= x),结果res可以视为在循环时多出来的后边乘的a,1 -> a(res *= x),简单
阅读全文
摘要:题目链接:歌唱比赛 思路 根据题目分析可得,假如小x的点赞数是123111,小y的点赞数是234111,则字符串的第4为到第6位结果都为Z,分别为对比(111,111),(11,11),(1,1),字符串的第三位为Y,为对比(3111,4111),则结果字符串为YYYZZZ。 此时可以轻易判断出字符
阅读全文
摘要:题目链接:激光炸弹 思路 看到消灭一个正方形内的所有目标就会想到二维前缀和。输入的x, y可能相同,所以同一个位置可能会有多个目标所以在初始化的时候需要使用dp[x + 1][y + 1] += v;,而不是dp[x + 1][y + 1] = v。为了使得二维前缀和计算的时候不会数组越界,所以将地
阅读全文
摘要:题目链接:二叉树深度 思路 存储二叉树的各个节点并递归搜索二叉树深度。 题解 #include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 10; struct binary { int
阅读全文
摘要:题目链接:二叉苹果树 思路 本题使用链式向前星存储树上的边,然后DFS搜索+简单dp。 dp数组,dp[i][j]表示节点i及其子树保留k根树枝得到的最大苹果数。son数组存储当前节点的孩子节点的编号和当前节点与孩子节点之间的树枝上的苹果个数。 对于dp递推公式,我们可以对每一个节点逐个分析,对于每
阅读全文
摘要:题目链接:没有上司的舞会 思路 这是一道树形dp的入门题,也可以用DFS+记忆化搜索来理解,要注意的地方是,输入关系时先输入的l为后输入的k的下属,所以存储边时需要注意。 在面对图论或者树的存储时通常可以使用链式向前星(如下代码中的add函数)或者STL中的vector存储边。 链式向前星和vect
阅读全文
摘要:题目链接:八皇后 思路 这是一个典型的搜索题目,从前往后依次枚举行数,从第一行开始依次枚举皇后的纵坐标,并判断当前坐标是否满足题目要求,满足题目要求则标记将答案存储,并继续向下枚举下一行。 由分析可得每条对角线上的任意一点的横纵坐标满足公式i - j + n的值与对角线上其他点的公式值相等,n为棋盘
阅读全文

浙公网安备 33010602011771号