0
点赞
收藏
分享

微信扫一扫

开学第五周总结

Alex富贵 2022-04-03 阅读 140
c++

这周除了打了一场codeforce和星期天的这场比赛外,其他用在程序设计的时间基本上都是在看博客了。粗略的统计了一下:55篇,其中思维的看了10篇左右,剩下的都是搜索了。我感觉以后得多看思维题,有的地方真的想不到。

先说搜索:搜索里看的最多的就是有关迷宫、地图之类的问题了,原来接触到的都是二维,现在扩充到了三维,其实就是加了一个dz的方向坐标,其他的都差不多,所以不多说了。说说几个有意思的题目:

1.POJ3414 Pots

题意:初始有两个空杯,每次可以选择装满一个杯子、倒空一个杯子、从一个杯子倒水到另一个杯子(直到倒水的杯子为空或被倒水的杯子已经被倒满),问能否使最后某个杯子中有C体积的水,能的话求出最少次数,并输出步骤顺序。

有别于传统的bfs,这里是先将六种可能的操作模拟出来,然后将操作后所得结果入队。还有一点,为了记录路径,在结构体里面定义了一个char类型的数组,使其与六种操作对应起来。

2.Problem - 3533

题意:从(0,0)走到(n,m),图中有若干个炮塔,会周期性的对其朝向位置发射一颗子弹,子弹遇到边界或另一个炮塔就会消失。现在需要在给定时间内到达且不能被炮塔打到,每走一步或待在原地时间+1.

在看这个题的时候我想到了洛谷上的P2895 [USACO08FEB]Meteor Shower S

洛谷上这个题是在某一时间点后某些区域永久不可踏入,而本题是在某一特定的时间点时某区域不能进入。为解决这个问题,可以定义一个三维数组,其中第三维代表时间。对于本题来说,模拟是一大难点:对于一个方向,先判断路径上是否有炮塔。再由子弹飞行的速度和周期计算出此炮塔和另一炮塔或道路尽头之间的哪些时间点位是不可通行的。然后再进行bfs.

3.第八届蓝桥杯第四题:方格分割(没找到链接......)

题意:6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。

首先是边界处理,只要当x或y到达边界即可结束(x==0||x==n||y==0||y==n)。其次是对称处理,如果将(x,y)涂色,那么对应的点(n-x,n-y)也要涂色。最后将所得的结果/4,因为旋转对称算一种。还有一点就是搜索的起点是从格子中心开始的。

4.POJ 3279 Fliptile

题意:给出一个M*N的矩阵,元素为1或0,每次能够选择一个点反转,同时将其上下左右的点都反转(如果点存在的话),问能使最终矩阵只剩下0时且反转次数最少时的选择反转的点(用矩阵给出)

如果第一行要反转的点确定,由于只有第二行能影响第一行,所以第二行反转的点就确定了。走到最后一行,如果反转后全为0,则可以确定这是一种方案。

再说思维:

1.HDU 6105

题意:1. Alice和Bob只能选择未被染色的节点染色,Alice染色成白色,Bob为黑色
2. Alice最先开始
3. Bob有k次机会可以把树上的线段剪断
4. 最后树上有白色Alice胜利,否则是Bob胜利

这个题主要是难想:Bob获胜的可能只有一种:如果Bob可以将树剪成若干个两个节点的组合,则Bob获胜。因为若原树不存在两两配对的方案,则Alice必定可以染到一个周围都被染色的孤立点。若原树存在两两配对的方案,但k不足以将其分成若干个两个节点的组合,那么Alice要么染孤点,要么转化成原树不存在两两配对的方案,进而Alice获胜。

2.Problem - 1178B - Codeforces (Unofficial mirror site, accelerated for Chinese users)

题意:两个连续的v可以组合成w,问字符串中有多少个可以组成 wow 的子序列。

先在o之前找到有多少个'w',当找到一个'w'时,l++。当找到一个o时,wo的数量t+=l;当一个w可以作为o的后面时,ans+=t(找它前面有多少个wo)

举报

相关推荐

第五周总结

第五周学习总结

acm第五周总结

程序设计第五周

第五次周测

0 条评论