ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

总结

2022-07-12 20:36:44  阅读:163  来源: 互联网

标签:总结 sum 考场 即可 考虑 DP


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\)优化


2022.7.3总结

中考结束了,回归训练了······

7593. 【2022.07.02GDOI模拟】梦幻岛(neverland)

一道简单的贪心,考场想到了,只需考虑最远能扩展到的地方,我用了线段树维护。
但码力有所下降,出了许多的锅。

7594. 【2022.07.02GDOI模拟】网上购物(shopping)

考场时没太多的思路,打了一个\(DP\),本以为可以\(30pts\),结果又挂了。
其实是一道贪心。
对于\(k=1\),可以用线段树来验证\(d_i\)是否合法,那么直接以\(w_i\)排序,一个一个加判断即可。
对于\(k=2\),只需考虑要换哪一个即可,枚举一下,那么对于能换的\(d_i\)的范围就出来了,在中选最小的\(w_i\)即可。
对于其它部分,我bu寄了。
考虑\(DP\),\(f_{i,j}\)表示选到第\(i\)个,已经下单\(j\)件,发现对\(w_i\)的限制不好处理,考虑把他转化成一张图。
点\((i,j)\)对转移到的点连边,最后为了以个数为优先,要使每一个都买了\(n\)件物品,也就是到点\((n,n)\),加一些价格为正无穷的物品即可。
这样我们只要求前\(k\)短路即可,直接上\(A^*\)。

7595. 【2022.07.02GDOI模拟】外星文明(civilization)

考场时想出了\(k=2\)的部分分,显然对于两个矩阵,要么是左右的,要么是上下的。
每一次移动一个中间的点,计算即可。考场认为\(k=3\),不应该还是分类讨论,就没加深思考了。
其实\(k=3\)分六种可能讨论即可。

总结:这次考试不是很理想,要注意细节。

2022.7.4总结

7596. 【2022.07.04 GDOI模拟】公路网

考场只会\(30pts\)的部分,但只拿了\(15pts\),没有想到一种好的连边方式
其实可以用一条扫描线,从左到右扫,当遇到一个左(右)端点,就把他所在的直线与之最近的那条线打上标记(可以被后面加的点覆盖),注意要加一条无穷小的水平线,那后面的点只需查询线上的标记即可连线。
显然这样可以使得连线的点间是没有别的点的。

7597. 【2022.07.04 GDOI模拟】星际迷航

考场荣获\(7pts\),对\(45pts\)即\(d = 1\),是有思路的,但换根部分有些复杂,没码出来。
首先,我们可以使用树形换根\(DP\)来求出一些\(d\)个树的共性;
\(f_i\)表示以\(i\)为根,\(i\)的胜负状态;
\(g_i\)表示以\(i\)为根,有几个点使用宇宙通道,可以改变\(i\)的胜负状态。
设\(c\)为,树中有\(c\)个必胜点。
那么显然对于根\(rt\),当\(f_{rt} = 1\)时,答案为\(n * c + (n - c) * (n - g_{rt})\)
考虑逆推,\(ans_{i,0/1}\)表示到第\(i\)棵树,负\((0)\)的方案数,胜\((1)\)的方案数。

\[ans_{i,0} = \sum_{rt}[rt = 0](n*ans_{i + 1,1} + (n - g_{rt}) * ans_{i + 1,0}) + [rt = 1] * n * ans_{i + 1,0} \]

\(ans_{i,1}\)的逆推与这相反。
发现逆推中,系数是不变的,于是可以用矩阵快速幂来优化。

7598. 【2022.07.04 GDOI模拟】抢购糖果

好贪心,有点不会

总结:思维还是得加强,对于代码实现能力也有待进步。

2022.7.6总结

1782. Travel

考场想了一下就做出来了,\(n\)的值很小,直接\(floyd\)传递闭包就解决了两点是否可以互达。
看到\(k \le 10\)直接可以化用\(spfa\)即可。

3337. 【NOI2013模拟】wyl8899的TLE

考场一下就想到了二分加\(hash\),我先用\(kmp\)求出了两字符串的\(LCP\),隔一个用\(hash\)判断即可。
可是我的\(kmp\)挂了,\(hash\)还被卡了!!!
也可以用后缀数组做(但显然我不会)

3338. 【NOI2013模拟】法法塔的奖励

一眼,Wow!!这不是树上启发式合并版题吗!!,用树状数组维护即可,直接\(100pts\)

3339. 【NOI2013模拟】wyl8899和法法塔的游戏

这题转化一下题意,即使求一个区间内两个数异或的最小值,强制在线且有修改。
考虑可以用分块,对每一块建一个\(Trie\),对于修改整块打标机,散块暴力修改,询问直接用一块的\(Trie\)即可。
但我又挂了 \(53pts\),原因是一些细节没到位。

总结:比赛中的题都会做,但分数都打不满,对于细节的处理不到位,没有进行对拍,代码能力需要继续提升。


2022.7.8总结

3235. 数字八

一道复杂的\(DP\),考场有想法但没能打出来。
题解中给了一种简单的解法,考虑设一个\(f_{i,j,k}\)表示在第\(k\)行以\(i\)为起点,\(j\)为终点向上走一个凸行的最远距离,那么上矩形的面积就为\(s_{i,j,k} = (f_{i,j,k} - 2) * (j - i - 1)\)。
对于下矩形同理可得。
对于两矩形合并,只需处理出\(S_{i,j,k} = max(s_{x,y,k})\)其中\(i \le x \le y \le j\)即可

5738. 锁屏杀

又是一道复杂的\(DP\),考场没想法,但其实并不难。
对于\(A\),发现只有五个部分,所以设\(f_{i,j}\)表示处理完了前\(i\)行,完成了\(k\)个部分,转移显然。再算出\(A_i\)表示时间为\(i\)分钟的答案。对于\(C\),与\(A\)计算过程同理。
对于\(B\),设\(B_i\)为改为时间\(i\)的答案,所以\(B_i = g_{n,i}\)其中\(g_{i,j}\)表示处理完前\(i\)列,当前为\(j\)分钟。
那么最后\(ans = min(A_i + B_j + C_{(i + j) \mod 1440})\)。

5739. 毒奶

考场想到了如何去爆搜,但打挂了。考虑每个块即可。

5740. 幻想世界

一道数学题,考场没有细想,其实不是很难。
发现如果直接计算每一个值是很难实现的,那我们可以考虑以个点对后面点的贡献。
由题知\(f_{i,j} = pf_{i - 1,j} + qf_{i,j - 1}+(p\alpha + q\beta)\)
所以对于每一个点只需考虑\((p\alpha + q\beta)\)的贡献。
易得贡献为

\[(p\alpha + q\beta)\sum_i\sum_j\sum_x\sum_y\binom{x - i + y - j}{x - i}p^{x - i}q^{y - j}h^{x(n + 1) + y} \]

\[=(p\alpha + q\beta)\sum_a\sum_b\binom{a + b}{a}p^aq^b\sum_xh^{x(n + 1)}\sum_yh^y \]

\[=(p\alpha + q\beta)\sum_a\sum_b(a + b)!\frac{p^a}{a!}\sum_xh^{x(n + 1)}\frac{q^b}{b!}\sum_yh^y \]

发现一边只与\(a\),一边只与\(b\)有关,枚举\(a + b\),即可变成卷积的形式,直接\(NTT\)即可
对于\(a_k,b_k\)的贡献同理可得。

总结:对于\(DP\)方面还需加强,对于时间要合理分配,不能死磕一道题。


2022.7.12总结

3057. 【NOIP2012模拟10.26】电影票

一道经典的卡特兰数题,这题的几何意义即是可以向上或向右走,且不能越过直线\(y = x\)。
考虑容斥,那么\(ans = \binom{n + m}{n} - k\),\(k\)是越过\(y = x\)的方案数。
越过\(y = x\)的方案数即是触碰到了\(y = x + 1\)的方案数,作\((n,m)\)关于直线\(y = x + 1\)对称\((n + 1,m - 1)\),所以\(k = \binom{n + m}{n + 1}\),\(ans = \binom{n + m}{n} - \binom{n + m}{n + 1}\),高精度即可。

3373. Line

可以状压\(DP\)来转移,巧设状态即可减少状态,矩阵快速幂即可。

3360. 【NOI2013模拟】苹果树

一道树上莫队的模板题。

3362. 【NOI2013模拟】数数

\(A,B \le 10^9\),直接分段打表。
正解是数位\(DP\),设\(C_i\)为数\(i\)的个数,考虑优化我们的背包\(check\),因为数最大\(36\),所以可以将一个组成的数\(i\)看成\(2^i\),那么对于我们加入的数\(j\),只需\(p |= p << j\),最后看看\(p\)中\(\frac{sum}{2}\)位为不为\(1\)即可。

总结:要扩展自己的知识体系,\(T1,T3\)都想到了正解却未能\(AC\)。

标签:总结,sum,考场,即可,考虑,DP
来源: https://www.cnblogs.com/nibabadeboke/p/15997739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有