补题日记
文章平均质量分 77
cls1277
这个作者很懒,什么都没留下…
展开
-
【补题日记】[2022牛客暑期多校4]A-Task Computing
但其实不化出这个式子来也没问题,因为为了避免精度问题写重载的时候还要乘回来哈哈哈。然后就是一个证明(或者说瞎猜)这个结论可以推广到。贪心按照这个方法排序之后,就可以考虑dp的问题了。通过对题目中给的式子提取公因式可以得到。因此通过逆序可以得到状态转移方程为。...原创 2022-08-05 01:50:48 · 170 阅读 · 0 评论 -
【补题日记】[2022杭电暑期多校3]K-Taxi
而本题加入w的限制后,有以下两种二分思路来做:(经过测试,第一种虽做法虽然只比第二种多了个log,但是因为此处的n比较大,因此不能通过;1、直接二分答案,比如想要判断答案是不是大于等于x,那么找到第一个权值大于等于x的点,根据上面的式子求出原始模型的距离,然后与x比较即可。考虑判断第x个城镇,它的点权为a[x].w,求出编号大于等于x的城镇中到询问点的最大曼哈顿距离d。因为外面有一层二分,里面可以使用lower_bound二分得到点的下标,因此总的时间复杂度为。的时间求出距离该点的曼哈顿距离最大值。....原创 2022-08-05 01:34:37 · 172 阅读 · 0 评论 -
【补题日记】[2022杭电暑期多校3]B-Boss Rush
这个题的题意我感觉不太好理解,我也是边写边调才慢慢理解了出题人的想法 ,但是单调性还是很容易看出来,因此本题就是二分答案。因为当时看了思路之后自己写了一下自己以为的正解,还调了好几个小时才发现自己的写法和std的区别在哪,因此没有再对照着std写一遍,而是将那部分时间用来研究思路以及为什么错。而状压dp的写法可以避免这种问题,通过状态的积累,来到当前状态的即为最优状态,只需要考虑当前这个技能是否全都打完即可。因此通过状态的累计计算就可以得到T帧下能否打出H的伤害,也就可以判断T帧是否满足条件。...原创 2022-08-04 23:09:17 · 191 阅读 · 0 评论 -
【补题日记】[2022杭电暑期多校2]K-DOS Card
虽然此处在求答案时是左右相加,但是并不是平常意义上的相加或者取最大值,而是与pushup过程类似,相当于由两个查找的端点更新答案变量。因为可能存在使用两个线段树结点更新答案时会使答案更优的情况,这些情况都需要考虑到,而这种过程类似于pushup的过程,因此只需要用pushup的代码重载加号运算符即可(看代码)。10种情况,左右线段树端点的组合刚好可以等于上面一个线段树的端点,即这么划分满足线段树的用法,因此使用线段树维护出这10个值与答案的两种情况,在pushup的时候进行从下往上更新。...原创 2022-07-27 17:28:38 · 181 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校2]I-let fat tension
其实是个简单的计算题,不过比赛的时候榜被带歪了所以没人看这个题。可以输入完后直接预处理出。原创 2022-07-27 01:03:35 · 207 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校2]H-Take the Elevator
当处理出每个端点人的重量变化后,从上到下枚举每一个人,如果重量超过m,则不得不开一个新的电梯运行,同时记录新开的电梯最高的层数,最后上下电梯取max为电梯运行次数,同样的趟数的上升和下降的最高层数(维护的值)取max,再-1乘2就是答案。很容易想到先考虑高度最高的人最优,因此按照高度降序来做,那么在上升的时候我们从上到下枚举的时候,优先看到的是y,而如果此时想表示接下来的区间内有一个人,则应该在y处+1,同理,在x处该人已经下去,则-1.因为上升和下降就是逆过程,所以只讲上升的思路,下降同理。...原创 2022-07-26 11:27:55 · 254 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校2]L-Link with Level Editor I
假设以前面的某个世界的1号节点作为关卡的开始,如果前面的每个世界都选择1号节点,直到选择到第i个世界的1号节点,此时不如直接选择第i个世界的号节点更优;而事实上通过测试样例并仔细调试可以发现,此处不仅仅与赋值有关,且与下方的更新也有关,因此此处的理解可以为第i个世界可以作为整个关卡的开始,此时在该世界中到达1号点的最晚的世界为i。因为很容易理解的是,第i个世界的第1号点可以由i-1个世界的第1号点得来,就误认为此处。表示在第i个世界到底第j个点,最晚可以从哪个世界出发。赋初值,所以才会写出后者的代码。...原创 2022-07-26 01:04:48 · 232 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校2]D-Link with Game Glitch
答案存在单调性,即w越大时边权之积越大,反之成立。那么考虑二分w,此处边权之积可能很大,所以对其取log,则转化为与0之间的比较,即判断正负环的问题,可以直接套用spfa求负环的模板。的边,所以问题可以转化为,当图中每条边的权值都乘w后,图中都会存在一个环,其边权之积大于1,求不满足此条件的w最大值。建图就是从b到d连一条。...原创 2022-07-26 00:50:54 · 361 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校2]K-Link with Bracket Sequence I
第三维有k更新k和k更新k+1两种情况,上文已说,两种情况分别对应a序列已经遍历完毕和a序列尚未遍历完毕两种情况。我们通过k的取值范围可以看出来,if判断是否为左右括号,其判断的整个str序列以及之后的空的部分,所以如果此处不为左(右)括号时,可能是已经将“a的序列是b的子序列”条件考虑完毕,即a序列遍历完毕,则之后不为左(右)括号。基于这种情况的状态转移方程,此时LCS的长度不再发生变化仍然为k,因此更新时第三维为k,又可以根据括号的左右可以得到第二维(左括号-右括号)的更新关系(加一或减一)。...原创 2022-07-24 00:42:15 · 330 阅读 · 0 评论 -
【补题日记】[2022杭电暑期多校1]C-Backpack
使用滚动数组将第一维滚掉,用bitset优化掉最后一维。表示前i个物品,异或和为j,体积为k的方案是否存在。位为1,就说明可以恰好装满整个背包。说明此处使用左移可以理解为,当第。,也就是bitset的第。.........原创 2022-07-23 00:27:23 · 290 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校1]I-Chiitoitsu
最优策略摸到的牌如果可以组成对,则丢一张单牌;原创 2022-07-22 23:22:52 · 96 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校1]D-Mocha and Railgun
要求的答案为一段劣弧对应的圆心角的大小,而劣弧的长度可以对应为弦的长度,设弦的两个端点的纵坐标为。最大,即AB线与OQ线重合时即为所求。然后答案其实就是一个公式了。原创 2022-07-22 23:16:10 · 206 阅读 · 0 评论 -
【补题日记】[2022杭电暑期多校1]B-Dragon slayer
关于坐标加0.5的处理方法对每个点维护该点的上下左右四条边的情况,从而在搜索的时候按照上一个点来的方向判断那条边点的情况,即。思路就是直接状压,用1表示该墙存在,0表示不存在,求保证能从起点走到终点的前提下,求0的个数的最小值。这里犯了个错误,就是将表示状态的数从小到大枚举的时候,如果发现可以了直接就break了,其实不然。,因此一旦满足条件不能直接break,而是循环完所有的状态后,对0的个数取最小值才为答案。思路还是比较简单的,犯了几个细节错误。......原创 2022-07-22 01:35:10 · 239 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校1]C-Grab the Seat
以点与屏幕下方边界的连线为例,我们从小到大枚举纵坐标,对于每个纵坐标如果可以求出折线最右侧的点的横坐标,就可以相减得到未被挡住的点的个数,求和即为答案。这样对于枚举的每一个纵坐标可以维护出交点的横坐标的值,对于维护的另一种斜率同理,因为取并集,所以两种情况取最小值。点与屏幕下方边界的连线。我们知道,当纵坐标从小往大的时候,斜率小的线可能被斜率大的线覆盖,因此我们在枚举的时候保存斜率的最大值,作为最可能挡到该点的线的斜率。因为我们维护的是斜率,又因为枚举的是纵坐标,所以可以直接求出交点坐标,.........原创 2022-07-22 01:24:40 · 182 阅读 · 0 评论 -
【补题日记】[2022牛客暑期多校1]J-Serval and Essay
如果一个点可以被染色,当且仅当只有一条入边连向该点。因此如果将入度为1的点预先加入队列,使用类似拓扑的方式对所连节点进行更新,同时更新队列,并用并查集维护所有可以同时被染黑的点。为根的树组成的森林,同一棵树内满足可以同时染色,答案即为森林中树的大小的最大值。可以发现最终并查集的形成了以。...原创 2022-07-22 01:10:31 · 129 阅读 · 0 评论 -
【补题日记】[LG1784]数独
ProLG1784Sol读题很重要!读题很重要!读题很重要!我一个玩过数独的人都忘记了九宫格!init是预处理九宫格的序号 a[i][j]是指第i行是否已经用过j这个数 b是列 c是九宫格序号然后就是一个正常的深搜(写完这个题 以后的数独都不再怕了哈哈哈)Code#include<iostream>#include<cstdio>#include<cstring>using namespace std;int num[15][15] , a[1原创 2020-09-20 10:54:10 · 199 阅读 · 0 评论 -
【补题日记】训练日记1
前题目链接感觉涉及到的知识点比较好吧,但是呢……有些题有点……但还是个人知识有点遗忘了,码力不够了,读题还不太仔细吧中Let the Balloon Riseemmm,用其他做法存储可能会有点麻烦吧,典型的可以用map来做啊不过有点忘记了,留着补坑#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<string>#include&原创 2020-11-04 19:37:37 · 152 阅读 · 0 评论 -
【补题日记】训练日记2:搜索专题
前题目链接(除去E题)训练的时候没有E题 以下题解按照本链接题号为什么不放训练链接?因为有密码啊。有些题基本一个套路,但是有的题还是好废脑子和码力的细节处理的并不是多么好…中Adfs搜索每一行每一列,用一维vis数组判断是否访问过这一列因为我们是一行一行的搜索的,所以一行肯定会有一个,不用二维数组#include<iostream>#include<cstdio>#include<cstring>using namespace std;int原创 2020-11-13 20:02:30 · 137 阅读 · 0 评论 -
【补题日记】训练日记3
前中A比较坑的一道题,肯定要用string去存数(貌似数字的位数都很大)然后考虑几个特殊的地方:0.00和0 0005和5等等就算是对string类型的数字化简之后再对比吧#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<algorithm>#include<cmath&g原创 2020-11-18 12:32:46 · 187 阅读 · 0 评论 -
【补题日记】[FZU2150]Fire Game
ProFZU2150Sol之前做搜索的训练的时候这个题就A了 后来提交kuangbin的题单的时候又T了发现 原来真的可以随缘AC(逃然后不得不对这个程序进行优化优化的地方在于:枚举每一个两个火的时候只需要搜索一个直角三角形就行(而不是n×m)这样时间就少了一大半我还试过是不是输入cin太慢 改为scanf和getchar之后时间是一样的思路不用多说 裸的bfs 但就是细节处理不好容易TCode#include<iostream>#include<cstdio>原创 2020-11-23 14:10:42 · 131 阅读 · 0 评论 -
【补题日记】训练日记4:武汉工程大学(WIT)acm新生赛
前牛客新生赛包括热身赛和正式赛 正式赛 正式赛rank7热身赛比较简单但是有一个题是比较好的 会单独写一篇题解的正式赛 8/10个 还有两个题待补坑以下题解只是其中八个题的我比赛时候的代码和思路B题和J题比较好 会单独写题解的(但愿不鸽)中A签到题 直接if判断#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>原创 2020-11-23 14:26:39 · 535 阅读 · 0 评论 -
【补题日记】训练日记4:山东大学(SDU)acm新生赛
前牛客题目还是偏简单的 我是零零碎碎用上课时间写的所以当时可能处理细节不太到位吧 才提交了很多遍但其实思路都比较简单 就是部分题有坑点吧中A签到题(出题人说的)#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<algorithm>#include<cmath>#in原创 2020-11-24 22:42:38 · 676 阅读 · 0 评论 -
【补题日记】[SDU新生赛E题]WHQ的时间管理
ProSDU新生赛E题Sol上方为官方题解(但是说的有大问题)因为我还不会LaTeX所以先用他的题解加以修改1.第四个点开始所有的“概率”均为“期望”2.倒数第三行两个式子交换位置3.倒数第三行前面的式子最后的分子为(a5-1)4.“所以”那句怎么得到的?因为第一位还可以选a3、a4、a5,将这些都加起来才是期望,再带入前面的式子就可以发现分母为(N-5)时并不存在(即正好可抵消)所以独立。Code#include<iostream>#include<cstdio&原创 2020-11-25 00:58:12 · 728 阅读 · 0 评论 -
【补题日记】[WIT新生赛B题]跳棋
Pro牛客Sol知道一个事:预处理所有的点再面对每一个询问花的时间可能更短一个四维数组:ini[x][y][z][k]表示当1位置放x克,9位置放y克时总共有z种方法,每种方法第k个数是ini[x][y][z][k]剪枝:易得每一条线值的和必为26(平均数乘棋子数)所以就可以对已经搜出来的点剪一下枝剩下的就是常规dfsCode#include<iostream>#include<cstdio>#include<queue>#include<c原创 2020-11-25 17:44:12 · 122 阅读 · 0 评论 -
【补题日记】训练日记5
前几个比较**(ex)的数学题中HDU3903这个题比较好,就是判断这个式子是否是有理数我本来以为cos都是有理数,只判断分母即可,但是给一个大佬的题解吧(的确不会做的数学题#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include&l原创 2020-12-04 23:04:24 · 137 阅读 · 0 评论 -
【补题日记】[LG1241] 括号序列
ProLG1241Sol一个朋友问的这个题,让我帮忙debug一下,没想到被语文劝退了这个题目麻烦就麻烦在理解题意上,在这里重新复述一下题中所谓的“这种方式”的意思说的不是很明白,具体是:对于每一个右括号都要向左去找最近的一个没有被标记的对应的左括号,看看二者之间是否有未被标记的左括号隔开,如果没有则匹配成功,并将左右括号打上标记,最后对于没有标记的输出相应的匹配,有标记的直接输出貌似翻译一遍就是题解了,所以说这就是一道语文题嘛下面贴这个朋友的代码,我自己懒得写了Code#include原创 2021-01-18 23:59:09 · 158 阅读 · 0 评论 -
【补题日记】2020年第十一届C/C++ A组第二场蓝桥杯省赛
Pro自行百度搜索就有资源哦以下只用文字来描述题解,可能不给代码了主要是因为准备时间有限,没时间一一写代码了Sol门牌制作直接枚举拆分记录2的个数就行既约分数枚举1-2020 O(n^2)时间内记录互质的组数蛇形填数别的博主可能有旋转的操作什么的,然而我就纯写的模拟,用flag表示填数的方向大概张下面这样#include<iostream>#include<cstdio>#include<queue>#include<cstring&g原创 2021-03-18 20:01:15 · 294 阅读 · 1 评论 -
【补题日记】2020年第十一届C/C++ A组第一场蓝桥杯省赛
Pro这套题为嘛这么多dp!!!把我杀了吧虽然有的dp比较简单吧 虽然有某个题可以用其他做法躲避dp吧但是我dp巨菜的事实又暴露了呀!Sol跑步训练简单的模拟题,跟着题目来就好还是带上代码吧#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<algorithm>#include&l原创 2021-03-25 17:53:39 · 759 阅读 · 1 评论 -
【补题日记】[CF#712Div2]A题Déjà Vu
ProCF#712Div2.ASol这个题不是很难 思路啥的也很好想 就说几个需要注意的地方吧字符串切割分开输出的时候一定要注意substr的用法分析什么时候可以输出NO是解题关键其余都是一点调试就能找出来的小细节官方题解Code#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<al原创 2021-04-05 14:56:13 · 216 阅读 · 0 评论 -
【补题日记】[2020-2021 ICPC, NERC, Northern Eurasia Onsite]K题King‘s Task
Pro[2020-2021 ICPC, NERC, Northern Eurasia Onsite]K题Sol这个题一看爆搜就可以做(但是我还是纳闷自己为什么A它花了这么久需要注意的一点就是:如何判断这个状态出现过(即如果实现vis数组的功能)很自然而然的想到,1000位数字肯定不能直接用数字,就考虑map但是我前几遍的代码map的first的类型都是string 所以导致了错误后面改成了vector很好的实现了我想要的效果然后其实把vector作为dfs的参数也可以节省好多时空关于本题的原创 2021-04-05 15:02:59 · 817 阅读 · 0 评论 -
【补题日记】[经典题]24点游戏
Pro题目大概长这样不过我没完全按照题目的答案输出 而是直接输出组成24的表达式Sol代码写完之后就长这样 注释不想删了留作纪念(逃其实就是搜索+栈求中缀表达式思路比较简单 可能实现起来稍微有点麻烦吧#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<algorithm>#incl原创 2021-04-08 18:30:40 · 400 阅读 · 2 评论 -
【补题日记】[WITACM选拔赛]B题和C题【最短路】【前缀和+二分】
Pro比赛是在牛客上训练的时候打的重现赛链接在这:B题 C题Sol训练时:为什么就是做不对呢?我感觉思路没问题啊!结束后:为什么一直错呢?明明思路都一模一样!找到错后:woc!!!B题:写了个bfs发现思路有大问题,因为bfs如果求最短路的话一定是第一个访问到的,但是本题第一个访问到的不一定最优。(写到这,突然想到一些东西,应该说朴素的bfs不可以,但是加上优先队列不知道可不可呢?)B题正解:直接对每个点和周围的点连边,在传送门的两端连边(注意判断是否为陷阱),跑一遍最短路(dij堆优化模板原创 2021-05-12 20:52:38 · 353 阅读 · 2 评论 -
【补题日记】2018 CCPC桂林站
Pro2018 China Collegiate Programming Contest - Guilin SiteSolA. Array Merge贪心,如果没有顺序的限制,数字大的越靠前越优,而现在有顺序,所以把前i个元素综合考虑。设前i个元素的平均值为a,则当新的值A[i+1]放进来的时候,判断A[i+1]最远能合并到哪,就把A[i+1]与放到该集合。为什么扯到合并和集合了呢?因为这个题目本质上与不考虑位置时差不多,就是先分组然后A,B两个分完之后的集合分别看先放哪个最优。写的时候遇到了原创 2021-11-05 21:45:55 · 442 阅读 · 0 评论 -
【补题日记】2020-2021 Russia Team Open, High School Programming Contest (VKOSHP 20)
Pro2020-2021 Russia Team Open, High School Programming Contest (VKOSHP 20)SolB. Bacteria其实只要保证对于第i轮分裂后的细菌,前i轮产生的细菌互不相同即可。怎么保证呢?第i轮细菌的数量为2i2^i2i,长度则为2n−i2^{n-i}2n−i,所以第i轮的01串共有22n−i2^{2^{n-i}}22n−i种。所以只需要找到一个最大的k,满足2k≤22n−i2^k\leq 2^{2^{n-i}}2k≤22n−i,原创 2021-10-26 21:16:55 · 1451 阅读 · 0 评论 -
【补题日记】CF#749 Div.1+ Div.2
ProCodeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)SolA. Windblume Ode分析可得,满足条件的子集大小为n个或n-1个。所以具体做法为:枚举集合中的每一个数,判断删除后是否可以组成合数,如果可以即为答案。简单证明:若集合总和为偶数,则必为合数;若总和为奇数,因为奇数=偶数+奇数,则减去一个奇数后必为偶数,即合数。或者还可以直接判断差值是否为合数。B. Om原创 2021-10-22 22:13:23 · 262 阅读 · 0 评论 -
【补题日记】CF#748 Div.3
ProCodeforces Round #748 (Div. 3)SolD2. Half of Same比赛的时候想到正解了,但是比正解花费的空间要大,所以没写出来。和D1差不多,不过这里不一定是最小的最好了,所以要枚举每一个位置的数为最小值。然后用其他位置的数字减去最小值放到b数组中,答案就是求所有b>0的数的共同的因子的最大值。比赛的时候想到的是把每个数的因子存下来,然后从大到小枚举看看是不是每一个都有。但是这样会花费很大的空间,所以考虑对一个数字求他的所有因子,然后枚举每个因子。原创 2021-10-15 22:05:53 · 184 阅读 · 0 评论 -
【补题日记】CF#744 Div.3 & 2020 ICPC沈阳站
ProCodeforces Round #744 (Div. 3)The 2020 ICPC Asia Shenyang Regional Programming Contest补题,不会写所有题目题解,请看清problem nameSolC. Ticks比赛的时候忘记看这个题了 枚举题,枚举每一个∗*∗,去看这个∗*∗是否能组成“边长”大于等于k的两条边。如果可以就给路过的所有∗*∗打上标记,最后是否所有的∗*∗均有标记就可以判断是否可以了。D. Productive Meeting开始原创 2021-10-14 23:47:39 · 453 阅读 · 1 评论