• 总结


    2022.1.19总结

    1075. 【GDKOI2006】新红黑树

    看到\(n \le 20\)想到了状压,但有些小问题。赛后发现只需要改成记忆化搜索,对最优的决策的选择会方便许多。

    1077. 【GDKOI2006】防御力量

    考场没有什么想法,还看错了\(n\)的范围,没有想过\(n^2\)的做法。
    其实只需对\(A\)城做直线,考虑直线上下的点即可。

    1083. 【GDOI2006】拯救亚特兰蒂斯

    考场想到了网络流,但建图出了\(bug\)
    其实是一到最小点覆盖的版题。

    1043. 【GDOI2006】最大和

    考场只能想到\(n^6\)\(DP\),考虑优化\(DP\),发现我们可以不记录上一个点,改为记录\(val\)
    枚举$ a_{i,j} = val $ 进行转移,即可做到\(O(n^4)\)

    总结:这次比赛不是很理想,对于一些暴力还需练习,对于 \(n \le 10^4\) 的范围是可以使用\(n^2\)算法的。

    2022.1.20总结

    1041. 【GDKOI2007】大航海

    考场想到了\(O(n^2 + m)\)的DP,但空间开不下。考虑去优化我们的空间,发现边数\(P \le 5 *10^5\),而我们有用的状态和边数有关,那就可以去枚举边来转移\(DP\)

    1079. 【GDKOI2007】纳克萨玛斯

    考场想到二分\(ans\),但不会\(check\),对网络流的模型转化不够熟练。
    对于这题,相当于把每一个人和角色匹配,有\(ans\)个队伍,相当于匹配\(ans\)次,那么建图就显然了,再去考虑\(D\)的限制,只需多开两个节点去限制不同阵营的流量即可。

    1080. 【GDKOI2007】轰炸

    考场想到去用堡垒贡献炸弹,打了线段树,用了动态开点导致常数过大\(TLE70\),改为离散化,卡卡常就过了

    5190. 【NOI2017模拟7.1】景中人

    考虑到一个性质,对于一种最优解,矩形只会分离或包含,不会相交。那就设\(f_{i,j,x}\)表示覆盖区间\([i,j]\)\(y > x\)的点的矩形数。
    有两种情况:
    \(1:\) 两个矩形分离 \(f_{i,j,x} = \min{f_{i,k,x} + f_{k+1,j,x}}\)
    \(2:\) 两个矩形包含\(f_{i,j,x} = \min{f_{i,j,h} + 1}\),其中\(h\)表示追多延伸的高。
    时间复杂度是\(O(n^4)\),用递归实现转移,加上记忆化搜索即可

    总结:保险用离散化,对网络流的练习要加强,对DP题的练习也需加强

    2022.1.21总结

    1085. 【GDOI2008】彩球游戏

    考场只用了单向\(BFS\),第一次做双向\(BFS\)的题,通过预处理可以减小复杂度

    1087. 【NOIP动态规划专题】鱼肉炸弹

    把题看错了,以为与\([JXOJ2018]\)守卫相似,一直想不出来。其实考虑一个\(max\),那他能看到的范围一定是连续的且两边的树都小于\(max\),不妨考虑\(DP\)如何转移,发现只有从小的数想大的数转移,相当于从两边向\(max\)转移,那么即可建树,跑树形\(DP\)

    1100. 【GDOI2008】狐狸的谜语

    考场想到了正确的区间\(DP\),因为乘的优先级大所以可以先处理乘,再添加号。

    \(g_{l,r,k}\)表示区间\(l,r\)内只填乘号的积为\(k\)的最少需要添加的符号

    \(f_{l,r,k}\)为区间\(l,r\)使和为\(k\)的答案

    \(g_{l,r,x * y} = \min g_{l,k,x} + g_{k + 1,r,y} + 1\)\(g_{l,r,0} = \min{g_{l,k,0} + 1,g_{k + 1,r,0} + 1}\)

    \(f_{l,r,x + y} = min{f_{l,k,x} + f_{k + 1,r,y} + 1,f_{l,k,x} + g_{k + 1,r,y} + 1,g_{l,k,x} + f_{k + 1,r,y} + 1}\)

    答案显然

    1160. 【GDOI2008】酱油推广计划

    一道非常版的缩点\(DP\),跑完\(targan\)后处理环内信息,再拓扑后\(DP\)即可

    总结:这次比赛时间分配不平衡,题目没有仔细看,以后读题要认真,更要提升一下代码的实现能力

    2022.1.22总结

    1143. 【GDKOI2010】比萨

    考场没有把时间放在这题,其实这题并不难,考虑\(m\)只有\(1000\),那么他的读入就有循环节,而循环节的大小追多为\(2001\),只需求一个循环节的答案,两个循环节的答案,跨所有的循环节的答案即可

    1147. 【GDKOI2010】圆桌

    一眼就是双向搜索,但我挂了\(10pts\),原因是对\(-1\)的判断出锅了,以后要细心点

    1144. 【GDKOI2010】圈地计划(网络流)

    一道比较板的最小割,对于每一个地方,要么是商业区,要么是工业区,对于两个点,放在一个集合可以产生额外的收益,这是经典最小割模型。

    1148. 【GDKOI2010】推箱子

    考场想到去处理一个箱子能别那些箱子挡住,但对复杂度的认识不清和实现的困难,放弃了这种思想。但其实是可以的。

    总结:以后比赛不要死磕一题,导致T1没想过,白给了许多分,对于代码实现还需加强

    2022.1.23晚总结

    2112. 【GDKOI2011】下水道

    比较简单,模拟即可

    2113. 【GDKOI2011】公园里的树

    把矩阵拆成\(4\)条边,考虑每个点最早被那条边覆盖,离线用线段树维护即可。

    2114. 【GDKOI2011】反恐任务

    一眼感觉和割点和割边有关,对于每一个点双,建一个方点,构建圆方树,求\(LCA\),讨论一下\(LCA\),与删的点或边的关系即可。

    2115. 【GDKOI2011】搬家

    爆搜+剪枝可以过

    总结:对于代码实现能力还要加强,T2不应打挂,对于图论还需学习与巩固。

    2022.2.10总结

    2828. 【GDOI2012】堆积木(stack)

    考场眼切,支持插入删除操作,还要询问第\(k\)大,不就是平衡树吗,对于颜色开一个\(26\)的数组即可。

    2831. 【GDOI2012】AB棋(chess)

    考场想到了另外\(30\)的做法,错误的推广了一下,得了\(45\)分。

    考虑一个\(1\)的最终位置,那么每个\(1\)都会有一个需要移动的步数,对于操作\(1\)相当于,把一个数减一,操作\(2\)相当于把两个相同的数减一,那么对于三个相同的数和偶数是对结果不产生影响的,只需考虑一个奇数和两个奇数,设\(a\)为一个奇数的个数,\(b\)为两个奇数的个数,当且仅当\(a,b\)都为偶数是为必败态,因为其他情况都能转化成必败态,而必败态只能转化为必胜态

    2832. 【GDOI2012】弹珠游戏(game)

    考场看到数据很小想到了爆搜,但觉得很复杂所以没敢打。

    正解就是爆搜,可以用迭代加深搜索,压缩一下状态判重即可。

    2830. 【GDOI2012】东方非想天则(daze)

    考场打了\(dfs\)暴力,正解\(DP\),首先考虑我们选择的顺序,不看\(Limit\)的限制,对于\(x,y\),当且仅当\(D_x + D_y * R_x > D_y + D_x * R_y\),先选\(x\)更优。按着排序,就可以做背包了,但发现正着做很麻烦,考虑倒着做,就简单了。最后一个技能的位置不满足我们刚刚排出来的序。因为我们只考虑他的$ D\(值。答案中的最后一个技能的\)D\(值一定要是没选的技能中最大的,假如我们把序列按\)D\(值 从大到小排序,\)s_i\(表示前\)i$个的 \(L\)值和,如果 \(s_i>50\),那么第\(i+1\)个技能不可能是答案中的最 后一个。这是因为\(s_i>50\),那么前\(i\)个技能不可能全部选完,必定存在一个技能没有选,他的\(D\)值就一定比第\(i+1\)个技能的\(D\)值大。于是,最多枚举按\(D\)值排序后的前\(L\)个技能。时间复杂度\(O(n * L^2)\)

    总结:这次比赛没有去实现复杂的暴力,对博弈论的学习要加强,思维还不够开阔。

    2022.2.26总结

    3282. 【GDOI2013】飞行棋

    赛时想了一个错误的 \(DP\),赛后学会了,考虑去设\(f_i\)表示,从位置\(i\)到终点的期望步数,可以列出位置\(51,52,53,54,55\)的方程,用高斯消元来求解。倒推出所有的\(f\)值即可。

    3283. 【GDOI2013】大山王国的科举考试

    考场想到了正解,但数据将我坑到了\(45pts\),考虑到\(a,p\)都只有\(1000\),那么当\(p \ge \sqrt{1000} = 34\)时可以枚举\(p\)的倍数,用主席树维护即可;对于\(p < 34\)时,开\(32\)棵线段树,记录不同的\(p\)对应不同的序列。

    时间复杂度为\(O(T\sqrt{1000}log\) \(n)\)

    3284. 【GDOI2013】重构

    考场没想法,正解时考虑将图先转化成\(DAG\),显然对于一个强连通分量的最小边数就是点数。

    想在问题就转化成了如何重构一个\(DAG\)。考虑一条边\((i,j)\),如果存在点\(k\)\(k\)不等于\(i\)\(j\),使得\(i,k\)联通,\(k,j\)联通,那么\((i,j)\)显然是不连的,可以用\(floyd\)\(bitset\)优化


  • 相关阅读:
    java传递String参数
    C++ string与int的互相转换
    java插入排序
    凸包Graham Scan算法实现
    求平面上N点最远两点和最近两点距离
    求最大公约数
    n个数连接得到最小或最大的多位整数(携程)
    Java快排
    背包问题
    二分查找离左边元素最近的(可以等于)
  • 原文地址:https://www.cnblogs.com/nibabadeboke/p/15997739.html
Copyright © 2020-2023  润新知