枚举(前缀和/差分、尺取、状压)、贪心

枚举(前缀和/差分、尺取、状压)、贪心

邓丝雨 \(2021.1.11\)

\(zhanglichen\ 2021.2.19\)

什么是算法?

先来一道题:NC16669

给出一个序列,对它去重并排序。

时间复杂度和空间复杂度

略。

枚举

例1:最大正方形

在一个\(n*n(n<=100)\)的矩阵中求一个最大的正方形使得该正方形的四个顶点都是由字符'#'构成。设计算法求解。

例2:NC16438回文日期

在两个日期之间有多少个日期是回文日期。

每一年的回文日期最多只有1个,以此可以\(O(n)\)枚举。

前缀和

例3:给定长度为\(n\)的整数序列\(a\),找到一组\(a_i\)\(a_j\),(i<j),使得\(|a_i-a_j|\)最大,设计算法求解

开一个数组记录后缀最大最小值,即可\(O(n)\)求解。

例4:数列求和问题

给出一个数列,\(q\)次询问,每次询问区间和。

前缀和求解。时间复杂度\(O(n)\)

差分

例5:数列修改问题

给出一个数列,\(m\)次修改,每次对一段区间加上一个数,最后输出修改后的序列。

差分求解。时间复杂度\(O(n)\)

二维前缀和

例6:[HNOI2003]激光炸弹

尺取

例7:POJ3061 Subsequence

给定长度为\(n\)的正整数序列以及整数\(S\),求解总和不小于\(S\)的连续子串的最小值。

思路:前缀和+二分 or 尺取Two Pointer

例8:NC18386 字符串

DP

例9:NC20241 [SCOI2005]扫雷

状压

例10:NC106350 Flip Game

贪心

例11:排队接水

\(n\)个人在接水,每个人需要花费\(t_i\)时间。

请你找一个排队顺序,使得平均等待时间最少。

例12:NC16783 拼数

例13:NC16561国王的游戏(高精度)

例14:NC25043 Protecting the Flower

posted @ 2021-02-19 21:24  zlc0405  阅读(114)  评论(0编辑  收藏  举报