2019.7.25 牛客多校第三场

index > 牛客多校第三场


概览

题目 做法 状态
Graph Games
Crazy Binary String 签到 √+
Guessing ETT
Big Integer
Trees in the Pocket II
Planting Trees 矩阵模型+单调队列
Removing Stones
Magic Line 平面几何 √-○
Median
LRU management
  • 代表赛后补题
  • √+ 代表赛内我通过的
  • √- 代表赛内不是我做的
  • √-○代表赛内不是我做的,补了

Logs

其实我感觉这场能三题的,但是H题花了太多时间去二分了,没有想到最简单的办法,然后感谢tc2000731耐心地教我单调队列。

B - Crazy Binary String

输出一个01串最长的01数相等的,子串长度,和子序列长度。

水题wa了一发有点可惜。输出一个尽量长的01子串这个让我们考虑了一下,其实也是要点想法的。可以令 0 = − 1 0=-1 0=1对串做一个前缀和,两个位置的前缀和相等,说明某个区间的01相等,记录第一个左边界,向右更新最大长度就可以了。另外就是前缀和是0说明整个前缀01相等。

H - Magic Line

题意是求一个直线划分平面上n个点,使得直线两边点数相等,且不能穿过点。输出两个直线上的整数点,并且范围在1e9之内。

只要按照x第一关键字,y第二关键字排序,第 n / 2 n/2 n/2的点就是划分的关键。只要取一个接近垂直,但是把前 n / 2 n/2 n/2点包含进去的就可以了。

亏我们三个人轮流二分了那么久ORZ

我的答案就是下面这样的, t m p = 1 e 8 tmp=1e8 tmp=1e8.

cout << p[half].x - 1 << " "
     << p[half].y + Tmp << " "
		 << p[half].x + 1 << " "
	   << p[half].y - Tmp + 1 << "\n";

F - Planting Trees

首先是一个子矩阵问题,然后是需要一点想法来处理一维数组的区间最大差值。用的是单调队列。

我的题解:牛客883F - Planting Trees 单调队列双指针

猜你喜欢

转载自blog.csdn.net/Tighway/article/details/97290356