蓝桥杯
skyang.
这个作者很懒,什么都没留下…
展开
-
P8756 [蓝桥杯 2021 省 AB2] 国际象棋
从1~m行遍历,首先先遍历第i行的前两行的状态 a b,判断 a b 是否冲突,若冲突,则continue;否则,计算第i行放置的棋子个数t,f[i][b][c][j]+=f[i-1][a][b][j-t];(即i-2行状态为a,i-1行状态为b,可以转移到第i行状态为c的情况)。设置 f[i][a][b][k] 数组 表示 第 i - 1 行状态为 a ,第 i 行状态为b 的方案数 , 最终方案数为所有。f[m][i][j][k]的和。原创 2023-02-20 19:42:04 · 168 阅读 · 0 评论 -
P8685 [蓝桥杯 2019 省 A] 外卖店优先级
每次处理订单消息时,先计算这天的前一天他的优先度,判断他是否出队,再加2得到这天的优先度,判断他是否入队。处理完所有订单后,计算所有店在 t 时刻的优先度,并判断他们是否在队列中。思路同领接表,开一个head数组存储上一次外卖店 i 接到订单的时间。原创 2023-02-20 08:48:09 · 307 阅读 · 0 评论 -
P8683 [蓝桥杯 2019 省 B] 后缀表达式
若减号多于负数个数,消去减号的方法: a - ( b - c - d ) (其中c,d为正数,b为负数)3.有减号时,且所有数都为负数,那么必须有一个数打头,仍是负值,其余数取绝对值。4.有减号时,且所有数中有正有负,那么选一个正数打头,即所有数都可以去绝对值。若a,b,c为负数,将其转化为正值方法:d - ( a + b + c )2.有减号时,且所有数都为正数,那么必须减去一个数,因此减去最小值。因此只要至少有一个减号,就可以把所有负数变为正数(全为负数时除外)1.当没有减号时,所有数都取正值;原创 2023-02-20 08:42:15 · 166 阅读 · 0 评论 -
P8669 [蓝桥杯 2018 省 B] 乘积最大
当k为奇数时,可以先选一个最大值,然后再两两选数。每次选一组(两个)数,两数乘积必为非负数。1.所有数都选,且数组中有奇数个负数。其余情况结果应一律为非负数,分析如下。2.所有数都是负数,且要选奇数个数。当k为偶数时,结果必为非负数;什么情况结果可能为负数。原创 2023-02-20 08:33:24 · 278 阅读 · 0 评论 -
Acwing 4655. 重新排序
思路:先读取区间,计算每个位置被统计的次数,让被统计次数多的位置填上尽可能大的数。重排后的和,即可将数组排序、统计次数排序 相乘求和可得。因此直接计算重排前的和,可以通过前缀和差分快速求得。原创 2023-02-14 22:08:21 · 127 阅读 · 0 评论 -
Acwing 4654. 消除游戏
暴力模拟,判断每一个字符是否可以留下(不是边缘字符),若留下的字符串与原字符串相等,那么break结束。原创 2023-02-14 22:02:33 · 300 阅读 · 0 评论 -
Acwing 4653. 数位排序
思路:写一个自定义排序即可。原创 2023-02-14 22:00:34 · 77 阅读 · 0 评论 -
P8708 [蓝桥杯 2020 省 A1] 整数小拼接
然后,若a与e拼接的数(ae)比k小,那么ab、ac、ad都应该比k小(他们符合单调递增规律),因此只需找到a在前时,与最后一个与a结合小于k的数,这里可以用二分法提高效率。注意点:若找到最后一个与a结合小于k的数e,此时要注意减去aa这种情况,因为要选两个整数拼接,不可以选取同一个数。首先,要对数组a排序,并用len数组记录拼接后,若这个数放在后面,那么另一个数要乘的倍率。原创 2023-02-11 23:53:21 · 480 阅读 · 1 评论 -
P8755 [蓝桥杯 2021 省 AB2] 负载均衡
对每个任务进行处理时,先判断此时刻有没有算力释放,再判断是否有足够算力完成任务,若有,则减去相应算力,并记录该任务何时完成,会释放多少算力;思路:记录每个机器此时的算力,并开一个数组,记录该机器何时会释放多少算力。收获:v.erase() 会有返回值,返回要删除的下一个迭代器。原创 2023-02-11 23:37:48 · 197 阅读 · 0 评论 -
P8754 [蓝桥杯 2021 省 AB2] 完全平方数
思路:从1~n遍历n的因子,如果该质因子的幂为奇数,则因再乘以此质因数,才可以使n变为完全平方数。原创 2023-02-11 23:31:22 · 275 阅读 · 0 评论 -
P8753 [蓝桥杯 2021 省 AB2] 小平方
注意:小于 n/2 这个值可以有小数,因此先将n转化为浮点数再判断。同理,也可以先判断n的奇偶性,再分情况判断。原创 2023-02-11 23:21:51 · 223 阅读 · 0 评论 -
P8752 [蓝桥杯 2021 省 B2] 特殊年份
收获:取一个整数的某一位:先除以 10^ 位数-1 ,再取余10。原创 2023-02-11 23:18:44 · 204 阅读 · 0 评论 -
P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟
思路:每个结点的最大深度 就为父节点的最大深度+父节点的子节点数用 f[N] 数组表示最大深度。原创 2023-02-10 22:14:48 · 91 阅读 · 0 评论 -
Acwing 3424. 最少砝码
n个砝码:1 、 3 、 9 、 ... 、3^n 可以表示1+3+9+...+3^n。3个砝码:1、3、9 可以表示 1 ~ 13。2个砝码:1、3 可以表示 1 2 3。1个砝码:1 可以表示1。原创 2023-02-09 20:49:58 · 62 阅读 · 0 评论 -
P8783 [蓝桥杯 2022 省 B] 统计子矩阵
若 [l , r] 不符合条件,那么[l , r + k ]一定不符合条件,进行l++再判断。若区间[l , r]符合条件,那么他的子区间也符合条件,符合的区间数为 r-l+1 个。先确定上下边界x,y,再确定左右边界l,r,在确定lr时,可以用双指针法。这样只需O(n)时间复杂度就可确定处lr边界。原创 2023-02-09 20:34:47 · 242 阅读 · 0 评论 -
P8613 [蓝桥杯 2014 省 B] 小朋友排队
思路:每个小朋友需要交换的次数=前面比他高的人数+后面比他矮的人数。用树状数组tr【i】记录身高小于i的人的个数。原创 2023-02-09 20:28:31 · 123 阅读 · 0 评论 -
P8748 [蓝桥杯 2021 省 B] 时间显示
注意点:开long long。思路:取余求时间即可。原创 2023-02-07 23:42:12 · 106 阅读 · 0 评论 -
P8686 [蓝桥杯 2019 省 A] 修改数组
如果f[i]==i,表示i还没有出现过,可以使用i,同时更新f[i]=Find(f[i+1])维护f【i】数组,代表读到数字i,i可以变成的第一个合法的数字。原创 2023-02-07 23:39:36 · 209 阅读 · 0 评论 -
P8663 [蓝桥杯 2018 省 A] 倍数问题
注意点:简单的三层循环顺序得到的不一定是和为最大值的情况如:10,9,8,7,110+8+7 是大于 10+9+1 的。原创 2023-02-07 23:33:41 · 311 阅读 · 0 评论 -
P8807 [蓝桥杯 2022 国 C] 取模
反证法:若不存在这样的一组x,y,使n%x==n%y,那么。原创 2023-02-06 22:54:30 · 197 阅读 · 0 评论 -
P8781 [蓝桥杯 2022 省 B] 修建灌木
最大间隔为修剪完这个灌木后向左修剪 或 修剪完这个灌木向右修剪 然后折回来。计算两次修剪同一灌木的最大间隔。原创 2023-02-06 22:39:31 · 226 阅读 · 0 评论 -
P8682 [蓝桥杯 2019 省 B] 等差数列
思路:先找到数列的最小值和最大值,每个元素与最小值的差值就为kd,那么公差就是这些差值的最小公因数,项数为(最大值-最小值)/ 公差 + 1。原创 2023-02-06 22:34:46 · 271 阅读 · 0 评论 -
P8742 [蓝桥杯 2021 省 AB] 砝码称重
注意点:由于每个重量的砝码只有一个,所以在处理一个砝码时只能更新一次,可以用二维数组表示f,记录上一层f的状态。2.若w > m ,那么 w-m 也可以被表示(将m放到物品栏,w放到砝码盘)3.若w < m,那么m-w 也可以被表示 (将m放到砝码盘,w放到物品盘)遍历所有可能的重量,若某重量w可以被表示,则分为一下几种情况。维护f数组,f[i]=true 代表 i 可以称出来。这里用队列记录需要更新的重量,当遍历结束后,统一更新。1.w+m也可以被表示(将w和m都放到砝码盘)当放一个重量为m的砝码。原创 2023-02-06 22:31:38 · 414 阅读 · 0 评论 -
P8635 [蓝桥杯 2016 省 AB] 四平方和
思路:将ab、cd分为两组,先遍历a,b,记录一个三元组(a,b,a*a+b*b);再遍历c,d,设t=n-a*a-b*b,那么现在就要找一个a*a+b*b=t的三元组注意点:如果a*a+b*b的三元组已经被创建,那么就无需再创建了(因为要保证字典序最小)原创 2023-02-06 22:18:47 · 231 阅读 · 0 评论 -
P8772 [蓝桥杯 2022 省 A] 求和
每增加一个数(假设是第n个数),答案增加的值为a[n] * sum(a[0]~a[n-1])原创 2023-02-06 22:09:15 · 283 阅读 · 0 评论 -
P8773 [蓝桥杯 2022 省 A] 选数异或
若b在前面出现过,那么f[b]就为数字b的位置下标,即包含 f[b]~当前位置 的区间都是符合条件的区间。若b未出现过,则f[b]为默认值0,即不存在这样数对,使a^b=x。g[ i ] : 第i个数最近的一个位置,使得在g[i]~i之间,存在一对数异或值为x。f [ i ] : 数字 i 出现的位置(下标 )由于a^b=x -> b = a^x;原创 2023-02-05 22:33:24 · 450 阅读 · 0 评论 -
P8786 [蓝桥杯 2022 省 B] 李白打酒加强版
用 f [ i ] [ j ][ k ] 表示第i天,路过j次店,还有k斗酒的方案数。注意点:需要特判j=0时 , 以及酒提前喝完的情况。如果酒提前喝完或酒翻倍过多了,return。否则,判断是否还有店 / 花 ,递归搜索。那么 如果第i天路过店,那么方案数为。如果第i天路过花,那么方案数为。原创 2023-02-05 22:24:30 · 578 阅读 · 0 评论 -
P8710 [蓝桥杯 2020 省 AB1] 网络分析
若将f[a]直接等于根节点,那么计算a结点上值时,会少加一个w[f[a]],所以先将w[a] 加上一个w[f[a]] 再将f[a] 修改为根节点。优化:每次给连通集加上一个数时,将这个数加到根节点上,那么每个结点值大小即为从该节点到根节点上所有数之和。如果a就是根节点或a的父节点就是根节点,那么无需修改。2.将a和b同时接到一个权值为0的结点上。1.将w[a] 减去 w[b]改变1:Merge需要改变。改变2:状态压缩需要改变。原创 2023-02-03 23:23:27 · 666 阅读 · 0 评论 -
P8612 [蓝桥杯 2014 省 AB] 地宫取宝
注意点:物品的价值c可能为0,为0时只有物品价格为负数时才可以转移计算的f(。0),会有数组越界问题,因此在输入时将所有物品价值+1防止数组越界,且不影响 最终结果。f[i][j][k][c] 表示走到(i,j)点已经拾取k件宝物,此时最大值为c的方案数。(vis数组用于测试,对结果无影响)当不取(i,j)处宝藏时。当取(i,j)处宝物时。原创 2023-02-03 22:36:15 · 209 阅读 · 0 评论 -
P8802 [蓝桥杯 2022 国 B] 出差
我的愚昧之处:priority_queue 是大根堆!通过压入-dis将其转化为小根堆。标签:单源最短路径 【模板】原创 2023-02-03 22:24:26 · 186 阅读 · 0 评论 -
P8602 [蓝桥杯 2013 省 A] 大臣的旅费
这里用dfs返回x结点到叶节点的最远距离,d1,d2分别表示最远距离和第二远距离,d1+d2就为两个叶子结点的距离,递归dfs保证计算了通过每一个结点,两个叶节点的最大距离,所以最终答案为d1+d2的最大值。任选一个结点作为根节点,计算根节点到他各个叶节点的距离,经过这个根节点的最大距离一定为他到叶节点的第一大距离+第二大距离。思路:根据题目易得,城市与公路将形成一颗树,所以本质上即求树上的两个结点的最远距离。原创 2023-02-03 22:20:37 · 158 阅读 · 0 评论 -
P8732 [蓝桥杯 2020 国 ABC] 答疑
【代码】P8732 [蓝桥杯 2020 国 ABC] 答疑。原创 2023-02-03 22:11:11 · 93 阅读 · 0 评论 -
P8775 [蓝桥杯 2022 省 A] 青蛙过河
如果每一段的高度和都大于2x,那么对于0~n的任意一点a,都有大于等于2x种途径跳上a,因为区间 [ a-y , a-1 ] 的高度和大于等于2x , 且这段区间的每个点都能跳上a (如果 a-y < 0 , 则可以直接从岸上跳到a )。假设青蛙跳跃的长度为y,那么对任意一个区间 [ l , l+y-1 ] , 高度和一定大于2x。因为青蛙最多跳y格,所以无法直接跳过这个区间,要通过2x次,所以这段高度和一定大于2x。综上,只要保证任意一段长度为y的区间,高度和大于2x,青蛙跳跃能力为y时就可以上岸。原创 2023-02-03 22:04:00 · 613 阅读 · 1 评论 -
P8599 [蓝桥杯 2013 省 B] 带分数
思路:求1~9的全排列,将这9个数划分为3段,分别表示a、b、c,再判断这组abc是否符合条件。原创 2023-02-02 17:57:05 · 113 阅读 · 0 评论 -
P8598 [蓝桥杯 2013 省 AB] 错误票据
思路:拍一下序,找相邻两项相等的 和 相邻两项差值大于1的数。原创 2023-02-02 17:30:05 · 904 阅读 · 0 评论 -
P8597 [蓝桥杯 2013 省 B] 翻硬币
从第0个到第n-1个硬币依次操作,如果第i个硬币与目标不同,则必须对i进行操作,同时翻转下一个硬币,并进行计数,否则将永远无法达到目标状态(因为以后不再有翻转第i个硬币的机会).思路:规定对i操作为翻转第i个和第i+1个硬币。原创 2023-02-02 09:55:48 · 315 阅读 · 0 评论