摘要:题目:传送门 题意:给你两条线段,问你这两条线段能接多少雨水,雨水从 y 轴正半轴往 y 轴负半轴垂直滴。 思路:有多种情况,讨论一下即可。 1、若有一条线段与 x 轴平行,那肯定接不了水。 2、若两条线段不相交, 也接不了水。 3、接口被遮住了,也不接不了水 第三种情况的判断可以通过,判断线段的上
阅读全文
摘要:题目: 传送门 题意:有 n 个正方形,倾斜 45 度按顺序放在 x 坐标轴上,然后那些正方形要尽可能的靠近,问排放好之后,你从上往下看,不会被遮住的正方形有哪些。 思路:我们可以算出每个正方形斜放的左右端点的 x 坐标。我们可以枚举前面已经放好的正方形,然后让当前这个正方形和它靠在一起算出当前这个
阅读全文
摘要:题目:传送门 题意:有 n 个测试样例,每个样例,输入四个点,前两个点代表一条线段,后两个点代表正方形的两个对角端点。 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <
阅读全文
摘要:题目: 传送门 题意:在一个左小角坐标为(0, 0),右上角坐标为(10, 10)的房间里,有 n 堵墙,每堵墙都有两个门。每堵墙的输入方式为 x, y1, y2, y3, y4,x 是墙的横坐标,第一个门的区间为[ (x, y1) ~ (x, y2) ],问你从 (0, 5) 走到 (10, 5)
阅读全文
摘要:题目:传送门 题意:有 2^n 个人进行比赛,对他们编号 1~2^n,起初1和2打,3和4打,5和6打,7和8打...,然后1和2打完胜利的 和 3和4打完胜利的再打一场,1和2打完失败的和3和4打完失败的也再打一场,然后,失败组最终胜利的和胜利组最终胜利的再打一场。详情可看样例解释,结合着更容易理
阅读全文
摘要:题目: 传送门 题意: 有 n 个区间,一个数最多被 K 个区间 [Li, Ri] 包含让你选一些区间,使得被奇数个区间包含的数最多,输出这个最大值。 1 <= n <= 100000, 1 <= k <= 8, 1 <= Li <= Ri <= m <= 1e9 题解:一个数最多可以被 K 个区间
阅读全文
摘要:题目: 传送门 题意: 有 n 个点在 x 轴上,最初他们在 xi 上,第 1 秒后它就移动到 xi + vi,第 t 秒就移动到 xi + t * vi 上。定义 d(i, j) = 点 i 和点 j 在移动的过程中,最近的距离。要你求 2 <= n <= 2e5; 1 <= xi <= 1e8;
阅读全文
摘要:题目: 传送门 题意: 给你一个凸包,定义 dis(Point a, Point b) 为 a 点和 b 点的曼哈顿距离;定义 f(x) 为选定 x 个点,Point1, Point2 ..... Pointx 的 dis(Point 1, Point 2) + dis(Point 2, Point
阅读全文
摘要:题目: 传送门 题意: 你需要建 n 栋楼,第 i 栋楼最多能建 m[ i ] 层,然后你需要构造一个数组 a 使得对任意 i 满足 1 <= a[ i ] <= m[ i ], 且不能存在 j < i < k and a[ j ] > a[ i ] < a[ k ],也就是说不能同时存在 j 和
阅读全文
摘要:题目: 传送门 题意: 给你 n 个点, 然后, 有一只蚂蚁, 问你蚂蚁只能直走和左转,问蚂蚁要怎么走才能走最多的点。 题解: 其实就是求很多个凸包, 蚂蚁肯定能走完所有点。 或者可以极角排序,先选左下角为基准点排序,然后之后更新基准点不断排序即可。 /// 凸包#include <iostream
阅读全文
摘要:题目: 传送门 题意: 给你 n 个点, 问你这些点中, 最远的两个点的距离的平方是多少。 题解: 挑战 261 有细讲, 求凸包 + 旋转卡(qia)壳。 旋转卡壳详解 码一: #include <iostream> #include <stdio.h> #include <string.h> #
阅读全文
摘要:题目:传送门 题意: 给你 n 条线段的两个端点, 然后有多次询问, 每次询问, 问你线段 x 和 线段 y 是否相交。 若线段 A 和线段 B 相交且线段 A 和线段 C 相交,那么线段 B 和线段 C 相交。 1 < n < 13 题解: 暴力求线段是否相交, 然后再跑个 Floyd 或者并查集
阅读全文
摘要:题目:传送门 题意: 给你 n 个不相交的圆, 问你有多少圆不被其他圆内含。 解: 我们把所有圆的左端点和右端点的 x 单独拿出来按升序排序, 然后从左往右扫。 然后遇到左边点就判断这个圆是否被内含, 不被内含就加入 ans。 具体可看代码。 #include <iostream> #include
阅读全文
摘要:题目:传送门 题意: 给你一个矩阵的左下角坐标和右上角坐标,然后给你 n 条线段,将 矩阵切成了 n + 1个区域。 然后给你 m 个玩具的坐标, 问你每个区域各有多少玩具。 题意: 判断一下点和线的关系就行辽, 然后二分优化一下。 #include <iostream> #include <std
阅读全文
摘要:题目: 传送门 题意: 给你n条线段的两个端点,问所有线段投影到一条直线上,这些投影至少相交于一点,就输出Yes!,否则就是 No! 题解: 戳 #include <iostream> #include <stdio.h> #include <string.h> #include <algorith
阅读全文
摘要:题目: 传送门 题意: 给你两个只由小写字符构成的字符串 s 和 t, 问你是否能从 s 找出两个不重合的子串s1, s2,使得s1 + s2 = t 多测试 T <= 100, 总的字符串长度不超过 400 解:看数据显然是可以 o(n^3) 的,我们知道 t 是由 s 的两个子串连接而成的。那我
阅读全文
摘要:详细加图文讲解 #include <bits/stdc++.h> #define LL long long #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i, j, k) for(int i = j; i <= k; i++) #defi
阅读全文
摘要:题目:传送门 题意: 有n天,m个区域,第 i 天第 j 个区域有 a[ i ][ j ] 个动物, 然后, 你可以在放一个 2 * k 的矩阵, 问你 n 天能够观察到的动物最多是多少。 若两个矩阵都包含了 a[ i ][ j ],那 a[ i ][ j ] 只算一次。 1 ≤ n ≤ 50, 1
阅读全文
摘要:此题是刘汝佳老师书里的例题,P260 欧拉定理: 设平面图的顶点数为V,边数为E,面数为F,则 V + F - E = 2; 注意这里的面数包括了外面那个面。 例如 这个图的面数 为 2, 因为包括了封闭面外面那个面。 #include <bits/stdc++.h> #define LL long
阅读全文
摘要:这题是刘汝佳老师书里的例题。P259 想了解二维几何基础的可以 戳 #include <bits/stdc++.h> #define LL long long #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i, j, k) for(int
阅读全文
摘要:题目:传送门 题意: 有n * m个城市,每个城市都有一个颜色,共有 k 种颜色,也就是每个城市的颜色只能是 1 ~ k 的某个数字。 然后,有q次询问,每次询问给你 x1, y1, x2, y2;问你从(x1, y1)到(x2, y2)的最少操作数。 操作有两种: 1、 你可以移动到你当前位置的上
阅读全文
摘要:题目: 传送门 题意: 定义Nanosoft的 logo 为 四个大小相同的正方形合并成一个大正方形。左上角是红色的,右上角是绿色的,左下角是黄色的,右下角是蓝色的。 例如以下这些都是 以下这些都不是 给你一个n * m的矩阵,这个矩阵由 4 个大写字母 “R” , "G", “Y”, “B” 构成
阅读全文
摘要:题目传送门 题解1 题解2 #include <bits/stdc++.h> #define LL long long #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i, j, k) for(int i = j; i <= k; i++)
阅读全文
摘要:一、直线型 问题描述: 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值(或最大值)。 思路: 设 DP[ i ][ j ] 表示第 i 堆合并到第 j
阅读全文