随笔分类 -  题解

摘要:题目传送门 题目描述 农夫约翰的牧场可以看作是一个二维平面。 约翰为了方便看管他养的牛,构建了一个三角形的通电围栏。 他希望他的奶牛都在围栏围起的区域内活动。 三角形围栏的三个顶点位置坐标分别为 (0,0),(n,m),(p,0),该围栏由三个顶点两两相连而成。 平面上,所有位于三角形围栏内部(不包 阅读全文
posted @ 2021-08-11 12:13 Livinfly 阅读(70) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 农夫约翰在一片边长为 N 英里的正方形土地中放牛。 它的牛只能在这片土地里吃草。 这片土地可以看作是一个 N×N 的方格矩阵。 其中一部分方格区域的土地已经被破坏了。 现在约翰想要统计目前还有多少个可以用来放牧的正方形区域土地。 边长大于 2 且内部完好无损的正方形土地被视为可 阅读全文
posted @ 2021-08-11 10:48 Livinfly 阅读(40) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 年轻的探险家来到了一个印第安部落里。 在那里他和酋长的女儿相爱了,于是便向酋长去求亲。 酋长要他用 10000 个金币作为聘礼才答应把女儿嫁给他。 探险家拿不出这么多金币,便请求酋长降低要求。 酋长说:”嗯,如果你能够替我弄到大祭司的皮袄,我可以只要 8000 金币。如果你能够 阅读全文
posted @ 2021-04-30 23:19 Livinfly 阅读(137) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。 北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。 每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避 阅读全文
posted @ 2021-03-29 17:55 Livinfly 阅读(496) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案。 例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行,包含两个整数N和M。 当输入用例N=0,M=0时,表示输入终止,且该用例无 阅读全文
posted @ 2021-02-20 20:42 Livinfly 阅读(345) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 给定两个长度分别为N和M的字符串A和B, 求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数N和M。 第二行包含一个长度为N的字符串,表示字符串A。 第三行包含一个长度为M的字符串,表示字符串B。 字符串均由小写字母构成。 输出格式 输出一个整 阅读全文
posted @ 2021-02-20 20:41 Livinfly 阅读(241) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 有N头牛在畜栏中吃草。 每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。 给定N头牛和每头牛开始吃草的时间A以及结束吃草的时间B,每头牛在[A,B]这一时间段内都会一直吃草。 当两头牛的吃草区间存在交集时(包括端点),这两头牛不能被安排在同一个畜栏吃草。 求需 阅读全文
posted @ 2021-02-20 20:39 Livinfly 阅读(107) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后, 剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数n 阅读全文
posted @ 2021-02-20 20:33 Livinfly 阅读(113) 评论(0) 推荐(0)
摘要:我就把它当作线段树的练习题了。 就是求区间最大值,所以我们开个结构体存下它的区间、区间的最大值就好了。 阅读全文
posted @ 2020-12-13 08:59 Livinfly 阅读(84) 评论(0) 推荐(0)
摘要:题目是让我们选择$[0,m]$之间的整数$x_0$,经过给定的n次位运算,使结果ans最大 位运算的主要特点之一是`在二进制表示下不进位`。 所以ans的第k位至与$x_0$的第k位是几有关。 $x_0$的第k位填1的条件: 1. 加上 1< 阅读全文
posted @ 2020-12-12 21:17 Livinfly 阅读(151) 评论(0) 推荐(0)
摘要:这道题很容易想到的朴素算法,枚举n个点的全排列。 时间复杂度为O($n * n!$) 使用下面的状态压缩dp可以优化到O($n^2 * 2 ^ n$) 比如在 0, 1, 2, 3 这几个点中,我们需要从0 -> 3 0 -> 2 -> 1 -> 3 所需10 0 -> 1 -> 2 -> 3 所需20 我们肯定只选第一条路 很容易理解,若还有其他的点,第二条路总是会比第一条花费多, 所以第二条边没有维护的必要,可以给它删除,保留第一条这条更优的。 注意,删除的前提是他们二者访问的点的个数是一样的,现在在的点的位置是一样的。 但朴素的爆搜还是会搜下去,直到搜完全部点。 这就是主要优化的地方。 阅读全文
posted @ 2020-12-12 20:33 Livinfly 阅读(152) 评论(0) 推荐(0)
摘要:1 类快速幂写法。 可以参看[a ^ b](https://www.cnblogs.com/RemnantDreammm/p/14125549.html)的思路说明 2 主要利用 a * b mod p = a * b - $\lfloor$a * b / p$\rfloor$ * p 当M大于a * b时,a * b % p = a * b % M % p 这里的强制转化就是这样一个对一个大数取模的过程。 注意考虑浮点数的精度误差。 书上有些地方使用`ull`,在题目指定范围内,`ll`应当也是能达到同样效果 一些细节将会在代码的注释中说明。 时间复杂度 O(1) 阅读全文
posted @ 2020-12-12 19:48 Livinfly 阅读(109) 评论(0) 推荐(0)
摘要:就没什么好说的。直接套快速幂。 阅读全文
posted @ 2020-12-12 19:10 Livinfly 阅读(136) 评论(0) 推荐(0)
摘要:思路说明: 若采用a个b一个个相乘取模的方式来做,它的算法复杂度为O(n) 而因为 1. 一位一位的二进制组合可以表示所有的数,即所有数都可以表示为$2^0$+$2^1$+...+$2^n$ 2. a * b mod p == (a mod p) * (b mod p) mod p (咕咕咕,可能之后会在后面补上这数学证明) 所以我们可以把b用一位一位二进制来表示即可把时间复杂度降为O($log_2b$) 阅读全文
posted @ 2020-12-12 18:00 Livinfly 阅读(121) 评论(0) 推荐(0)
摘要:首先说明本人用的算法(kruskal+并查集) 根据kruskal算法我们可以确保我们能得到连通树的最小价值。 那么只需要判断K了 首先需要清楚:n个点连通需要最少n-1条边 分成k个组云 1组云(相当于n个点相连) 就需要n-1条边, 2组云 就可以用1组云去掉一条边得到 以此类推 k组云需要n-k条边 那么对于无法连成的k就可以特判了 后面在选边时,只需要选到cnt==k即可退出循环 阅读全文
posted @ 2020-11-14 18:16 Livinfly 阅读(162) 评论(0) 推荐(0)