您的位置:首页 > 其它

Codeforces #345 Div.1

2016-03-16 20:13 190 查看

Codeforces #345 Div.1

打CF有助于提高做题的正确率。

Watchmen

题目描述:求欧拉距离等于曼哈顿距离的点对个数。

solution

签到题,其实就是求有多少对点在同一行或同一列。

时间复杂度:\(O(nlogn)\)

Image Preview

题目描述:给定看一张照片的时间,翻页的时间,把图片翻转的时间。一开始屏幕显示第一张照片,可以向左或向右翻,不能跳过还没有看过的图片,方向不对的图片要先翻转再看,看过的不消耗翻转时间与看照片时间,问在一定时间内,最多能看多少张照片。

solution

易得只会转向一次,即开始时向左翻,然后向右翻,或者一开始向右翻,然后向左翻。部分和处理一下就可以了。

时间复杂度:\(O(nlogn)\)

Table Compression

题目描述:给出一个矩阵,求另一个矩阵,使得这个矩阵的同一行和同一列的数的大小关系一致,并使这个矩阵的最大值最小,输出这个矩阵。

solution

如果没有相同的数字,那么将每一行每一列分别排序,然后连边,求每个点的最长路径即可。如果有相同数字,就要用并查集来维护这些在同一行同一列相同的数字,再做最长路径。

时间复杂度:\(O(nlogn)\)

Zip-line

题目描述:给出一个序列,每次修改其中的一个数,求序列最长严格上升子序列,每次修改是单独的,即修改后会还原。

solution

用线段树维护原序列的最长上升子序列(正反)。

答案有两种情况:

1、修改后的数在最优子序列中,这时答案为(正向最大+反向最大)线段树求。

2、修改后的数不在最优子序列中,所以答案应该是原序列的最长上升子序列或次长序列。问题转化为该位置是否在原序列的所有最优解中,是则答案为原序列最优解减一,否则为最优解。

这个问题可以通过先求原序列最优解,然后看最优解序列的某一位是否是唯一的位置,如果是,该位置则是一定出现在所有最优解中,否则反之。

时间复杂度:\(O(nlogn)\)

Clock Bomb

题目描述:给出一棵树,现在要把它变成另一种形态,操作为删掉一条边,再加一条边,此过程中不能出现有环(包括自环),输出操作方案。

solution

这题还没想出怎么做,但删去一条边后就会把树分成两部分,而后来加上去的边一定要在这两部分之间相连。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: