随笔- 1046
文章- 115
评论- 19
阅读-
36万
随笔分类 - 高效算法
小 Q 与树 (点分治)
摘要:链接:https://ac.nowcoder.com/acm/contest/11171/D 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述: 小 Q 在纸上画树,画着画着,小
阅读全文
Cow Hopscotch (单调队列 + DP)
摘要:链接:https://ac.nowcoder.com/acm/contest/1113/K来源:牛客网 The cows have reverted to their childhood and are playing a game similar to human hopscotch. Their
阅读全文
HDU 6382 odds (暴力 + 剪枝优化)
摘要:odds Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 250 Accepted Submission(s): 72 Problem Des
阅读全文
HDU 5355 Cake (构造 + 暴力)
摘要:题意:给定 n,m,让你把 1 ~ n 分成 m 部分,而且每部分和是一样大的。 析:首先先判断不能分成的,第一种是 sum (1 ~ n 的和)不能被 m 整除,或者 sum / m < n,其他的情况都有解。 这个题采用的是构造加暴力搜索的思想,首先,先成对的构造解,也就 2 * m 个,每 2
阅读全文
HDU 5360 Hiking (贪心)
摘要:题意:邀请 n 参加聚会,如果在邀请第 i 个人之前,已经成功邀请了 x 个人,并且 li <= x <= ri,那么第 i 人才会去,问你怎么排列使得邀请的人最多。 析:对于所有的人,按照 li 进行排序,对于维护一个优先队列,队列内是 ri 小的优先,然后枚举每个时间点,把 li 等于的当前时间
阅读全文
UVaLive 4064 Magnetic Train Tracks (极角排序)
摘要:题意:给定 n 个不三点共线的点,然后问你能组成多少锐角或者直角三角形。 析:可以反过来求,求有多少个钝角三角形,然后再用总的减去,直接求肯定会超时,但是可以枚举每个点,以该点为钝角的那个顶点,然后再枚举另一条边,维护与该边大于90度并小于等于180度的点的数量,这里要用极角排序,这样就可以减小时间
阅读全文
ZOJ 3156 Taxi (二分 + 二分匹配)
摘要:题意:给定 n 个人坐标, m 辆车的坐标,还有人的速度,要求每个人要进一辆不同的车,问你所有都进车的最短时间是多少。 析:首先二分时间 mid,很明显就是最后那个人进车的时间,然后如果把第 i 个人到时第 j 辆车的时间小于 mid,那么就从 i 向 j + n 连一条边,然后进行十分匹配,如果是
阅读全文
POJ 3110 Jenny's First Exam (贪心)
摘要:题意:告诉你n 个科目的考试日期,在考试当天不能复习,每一个科目的最早复习时间不能早于考试时间的t天,每一天你可以复习完一科,也只能复习一科,求最晚的复习时间!。 析:由于题目给定的时间都在1900 ~ 2100 之间,所以先预处理时间,然后把每个科目按照考试时间最晚的优先策略进行排序,从后向前扫,
阅读全文
HDU 4310 Hero (贪心)
摘要:题意:给定你有 n 个敌人,你的伤害是 1,给出每个敌人的伤害,和敌人的血量,每一回合你可以攻击一个敌人,并且所有敌人都会攻击你,除非它已经死了,问你最少要多少要消耗多少血量。 析:一个很明显的贪心问题,按照 攻击 / 血量进行排序,然后一个一个的消灭就好了。 代码如下:
阅读全文
ZOJ 2132 The Most Frequent Number (贪心)
摘要:题意:给定一个序列,里面有一个数字出现了超过 n / 2,问你是哪个数字,但是内存只有 1 M。 析:首先不能开数组,其实也是可以的了,后台数据没有那么大,每次申请内存就可以过了。正解应该是贪心,模拟一个栈,因为答案肯定出现次数比其他所有数字的出现次数还多,所以每次和栈顶的元素比较,如果相同,就放到
阅读全文
POJ 3388 Japanese Puzzle (二分)
摘要:题意:给你一个n*n 的图,你总共有k 种花砖,告诉你每一种花砖的个数,让你随便安排它们的位置,问你最多有多少行和第一行是一样,并且要输出第一行的一定存在的图案。 析:首先这个题如果读懂了题意,一点也不难,就是一个普通的二分,可是我真的是读不懂啊,尤其是这个输出解的时候,我以为是输出每行存在编号,真
阅读全文
UVaLive 4628 Jack's socks (贪心)
摘要:题意:给定一个无向图,让你把所有点的和它的任意一个相邻点匹配起来,问你是方案是不是唯一,如果是,则输出方案。 析:贪心,很容易知道,如果一个点的度数是 1,那么它只有一个相邻点,这样的话,我们就可以把它和它相邻结点匹配,然后把与它相邻结点也相邻的点的度数都减 1,然后再找度数为 1 的点,直接找不到
阅读全文
POJ 2433 Landscaping (贪心)
摘要:题意:给定一个序列表示一群山,要你保留最多 K 个山峰,最少要削去多少体积和土。一个山峰是指一段连续的相等的区间,并且左边和右边只能比这个区间低,或者是边界。 析:贪心,每次都寻找体积最小的山峰,然后把它削去,每次削的是最小的,所以是满足贪心的,最后剩下的小于 K 个就可以了。 代码如下:
阅读全文
UVa 10163 Storage Keepers (二分 + DP)
摘要:题意:有n个仓库,m个管理员,每个管理员有一个能力值P,每个仓库只能由一个管理员看管,但是每个管理员可以看管k个仓库(但是这个仓库分配到的安全值只有p/k,k=0,1,...),雇用的管理员的工资即为他们的能力值p和,问,使每个仓库的安全值最高的前提下,使的工资总和最小。 析:首先使用二分安全值,然
阅读全文
UVaLive 3704 Cellular Automaton (循环矩阵 + 矩阵快速幂)
摘要:题意:一个细胞自动机包含 n 个格子,每个格子取值是 0 ~ m-1,给定距离,则每次操作后每个格子的值将变成到它距离不超过 d 的所有格子在操作之前的值之和取模 m 后的值,其中 i 和 j 的距离为 min{|i-1|, n-|i-j|}。给定 n,m,d,k 和自动机每个格子的初始值,求 k
阅读全文
UVa 10870 Recurrences (矩阵快速幂)
摘要:题意:给定 d , n , m (1<=d<=15,1<=n<=2^31-1,1<=m<=46340)。a1 , a2 ..... ad。f(1), f(2) ..... f(d),求 f(n) = a1*f(n-1) + a2*f(n-2) +....+ ad*f(n-d),计算f(n) % m。
阅读全文
基础练习 完美的代价 (贪心)
摘要:问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : mad
阅读全文
HDU 5663 Hillan and the girl (莫比乌斯反演 + 分块)
摘要:题意:给定n,m,求,其中F(x)=0,,如果x是完全平方数,否则是1。 析: 由于按照题意的F,不好筛选,所以我们反过来,F(x),x是平方数,就是1,否则是0。 这个是可以预处理出来的,可以用筛选。 这一部分,可以分块来做,所以时间复杂度就降下来了。 代码如下:
阅读全文
CodeForces 916C Jamie and Interesting Graph (构造)
摘要:题意:给定两个数,表示一个图的点数和边数,让你构造出一个图满足 1- n 的最短路是素数,并且最小生成树也是素数。 析:首先 1 - n 的最短路,非常好解决,直接 1 连 n 就好了,但是素数尽量选小的,选2,3,5,这样比较小的,然后再构造MST,可以给每个边都是 1,然后最后 n-2 连 n-
阅读全文
CodeForces 916B Jamie and Binary Sequence (changed after round) (贪心)
摘要:题意:给定两个数字n,m,让你把数字 n 拆成一个长度为 m 的序列a1,a2,a3...am,并且∑2^ai = n,如果有多组,要求序列中最大的数最小,然后再相同就要求除了最大数字典序最大。 析:直接想可能不好想,可以考虑,如果把数字 n 拆成 2 的多次幂,可以用贪心来解决,然后如果长度已经超
阅读全文