![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
-------------基本算法-------------
The___Flash
这个作者很懒,什么都没留下…
展开
-
MAZE(2019牛客暑期多校训练营(第二场)E,线段树 + 矩阵乘法)
一.题目链接:MAZE二.题目大意:给一个 n × m 大小由{0,1}构成的矩形,Q 次询问.0 可以走,1 不可以走.每次走只能向下,左,右方向,且不能走重复的位置.每次询问有三个整数:q,a,b.当 q 为 1 时,将点(a,b)取反.当 q 为 2 时,求出从点(1,a)走到点(n,b)的方案数 % (1e9 +7).三.分析:先考虑一个点的方案数...原创 2019-07-23 11:15:33 · 182 阅读 · 0 评论 -
Transformation( HDU - 4578 ,多重懒惰标记线段树 + 思维)
一.题目链接:HDU-4578二.题目大意:n 个数 a[1 ~ n].现有 m 次 4 种操作.1 l r c:a[l ~ r] 都 + c2 l r c:a[l ~ r] 都 × c3 l r c:a[l ~ r] 都变为 c4 l r p:查询(p = {1, 2, 3})三.分析:由上述公式便可得每次更新后的 [1, 3]次幂的和....原创 2019-05-01 09:20:32 · 222 阅读 · 0 评论 -
The Limit (ZOJ - 3999,表达式读入 + 多项式极限模拟)
一.题目链接:ZOJ-3999二.题目大意:读入有三行一行分子表达式一行分母表达式一行 取值求出三.分析:表达式读入有些麻烦具体见代码.注意:题目中没有保证指数是有序排列的!四.代码实现:#include <set>#include <map>#include <ctime>#include ...原创 2019-04-30 16:33:21 · 177 阅读 · 0 评论 -
Calculate the Function( ZOJ - 3772,线段树 + 递推矩阵乘积)
一.题目链接:ZOJ-3772二.题目大意:给 n 个数 a[1~n]定义如下:对于每次查询,给出区间端点和的值求出.三.分析:由递推式可得所以我们可以建一颗线段树,节点值存为矩阵,父节点就存为矩阵乘积.然后进行区间查询即可.查询得到的矩阵再乘以矩阵取(0,0)元素即可.因为线段树的遍历顺序,所以...原创 2019-04-24 21:12:05 · 121 阅读 · 0 评论 -
Monitor( HDU - 6514 ,子矩阵和 + 前缀和处理)
一.题目链接:HDU-6514二.题目大意:给你 p 个红矩阵一个整数 q,接下来 q 行每行给出一个蓝矩阵如果蓝矩阵被完全包含于红矩阵内,输出 "YES",否则输出 "NO".三.分析:赛后听 ltr 讲才恍然大悟,不就是这两道题的结合吗?(tql orzzzz)最大子矩阵(HDU - 1559,前缀和)Color the ball(HDU - 1556...原创 2019-04-20 11:07:38 · 275 阅读 · 0 评论 -
Mistwald( ZOJ - 3497,这也能用矩阵快速幂?!)
一.题目链接:ZOJ-3497二.题目大意:m × n 的图.起点为 (1, 1),终点为(m,n).给出每个点的四个去处.然后 Q 次询问每次有一个整数 p 代表移动次数.p 次移动后if 不能到达终点,则输出 "False".else if 只能移动到终点,则输出"True"else 输出"Maybe"三.分析:本以为是个暴搜,结果是只披着搜...原创 2019-06-02 17:47:18 · 135 阅读 · 0 评论 -
Vases and Flowers (HDU - 4614,线段树 + 二分 + 思维)
一.题目链接:HDU-4614二.题目大意:有 N个花盆,起初都没有花.1 个花盆只能插 1 朵花.有 m 次 2 种操作.① 1 A F:从第 A 花盆开始插 F 朵花,多余的丢弃.若一朵花都无法插入,则输出 "Can not put any one."否则,输出插花的起点、终点.② 2 A B:将 A ~ B 花盆中的花丢弃,并输出所丢弃的花的个数.三...原创 2019-05-01 20:45:26 · 274 阅读 · 0 评论 -
Count the Colors (ZOJ - 1610,离散化 + 线段树)
一.题目链接:ZOJ-1610二.题目大意:一条线上,端点编号为 [0,8e3].每次给出一段区间 和 一种颜色编号,在线上的这段区间染色.问每种颜色出现的次数.三.分析:这道题(记为 Q1)与这道题(记为 Q2)不太一样画个图理解一下:可以看到对于 Q1 来说,[3, 4] 区间内为红色,但是节点 3 与 节点 4 相邻,此时不好判断而 Q2 不存在...原创 2019-04-22 23:25:00 · 184 阅读 · 0 评论 -
Mayor's posters (POJ - 2528,离散化 + 线段树)
一.题目链接:POJ-2528二.题目大意:墙的长度 ≤ 1e7,海报个数 ≤ 1e4.按时间顺序,给一堵墙贴海报.每次给出海报贴到墙上的区间,求最后能看到几张海报.三.分析:典型的线段树求区间问题可是墙太长,直接求会 TLE.观察到 n 只有 1e4,那么最多会有 2e4 个点所以先进行离散化处理,再用线段树更改区间.四.代码实现:#includ...原创 2019-04-22 19:46:04 · 202 阅读 · 0 评论 -
Tunnel Warfare (HDU - 1540,这也能用线段树 ?!)
一.题目链接:HDU-1540二.题目大意:有 n 个村庄排列在一条线上,编号为 1 ~ n.现有 3 种 m 次操作D x:摧毁第 x 个村庄Q x:查询与第 x 个村庄相邻的村庄数.R:修复上一个被摧毁的村庄.三.分析:当查询与第 x 个村庄相邻的村庄数时只需要查询在 1 ~ x 中被摧毁村庄的最大编号&& 在 x ~ n 中被摧毁村...原创 2019-04-26 22:17:16 · 332 阅读 · 0 评论 -
Eight II (HDU - 3567,BFS 打表 + 思维)
一.题目链接:HDU-3567二.题目大意:Eight的升级版,游戏规则相同.每次给出两个字符串 A, B,问 从 A 到 B 的最少步数 并 打印最小字典序的路径.三.分析:看了大神的分析才懂。。。在这里阐述一下.只考虑 X 的位置,由于 1 ~ 8 数字无特殊性所以可将所给的 A 重新编号.例如 A1:8 7X 6 5 4 3 2 1编号为 A...原创 2019-05-20 20:34:38 · 386 阅读 · 0 评论 -
Escape (HDU - 3533,BFS + 模拟)
一.题目链接:HDU-3533二.题目大意:第一行 4 个整数 m,n,k,d.m × n 是地图大小,有 k 个炮塔.d 是初始生命值,每秒消耗 1 点生命值.之后 k 行.每行有 ch,t,v,x,y.ch = {'N', 'S', 'W', 'E'}t 为该炮塔发射炮弹的间隔时间.v 为该炮台发射子弹的速度.x,y 为该炮台的坐标.A 的初始位...原创 2019-05-21 21:37:08 · 214 阅读 · 0 评论 -
Kth Minimum Clique(2019牛客暑期多校训练营(第二场)D,K 大完全子图)
一.题目链接:Kth Minimum Clique二.题目大意:有 n 个点,有着各自的点权.给出连通的边.求权值 k 大的完全子图.三.分析:由于 n ≤ 1e3,所以直接暴搜即可.这里和状压 DP 有点像,搜索的是状态以及对应的权值.考虑状态的转移,比如在什么情况下,i 点可以加入.因为是求完全子图,所以现状态应真包含于 i 点的连接点,否则就不是完全图...原创 2019-07-22 18:41:23 · 345 阅读 · 0 评论 -
Radar Installation(POJ - 1328,贪心)
一.题目链接:POJ-1328二.题目大意:给 n 个点(均在 y 轴上方),每个点都有一个坐标.现在 x 轴上建立雷达,每个雷达可以扫描半径为 d 的区域.求最少需要建立的雷达数,使得每个点都被覆盖.三.分析:先计算出每个点在 x 轴上对应的范围 [l, r].对区间按照 l 值排序.现考虑何时加雷达以及雷达位置如何更新.对于第 i 个点来说,雷达的位置应...原创 2019-07-30 17:30:46 · 116 阅读 · 0 评论 -
Flyer (HDU - 4768,二分答案 + 思维)
一.题目链接:HDU-4768二.题目大意:有 n 个社团拉人.从编号为 a 的学生开始,到编号为 b 的学生结束,每隔 c 个人拉一个.保证学生被拉选奇数次的个数至多为一.若不存在被拉选奇数次的学生,则输出 "DC Qiang is unhappy."否则,输出被拉选奇数次的学生的编号 与其被拉选的次数.三.分析:因为保证学生被拉选奇数次的个数至多为一所...原创 2019-07-20 20:55:32 · 285 阅读 · 0 评论 -
Plants vs. Zombies (ZOJ - 4062,二分答案 + 细节)
一.题目链接:ZOJ-4062二.题目大意:n 个植物排成一排.水壶只能移动 m 步.水壶一步移动一个单位长度,所到达的位置,该植物的防御值会相应增加.求浇水之后,所有植物防御值中最小值最大可以为多少.三.分析:二分答案即可.不过要加限制条件,在 check(mid) 函数中 cnt 可能会暴 long long.这是因为,假设n == 1e5,mid =...原创 2019-07-20 10:43:47 · 478 阅读 · 0 评论 -
Matrix (POJ - 3685,二分答案 + 二分)
一.题目链接:POJ-3685二.题目大意:给 n 和 m.表示有一个 n × n 的矩阵,求第 m 小的元素的值.矩阵元素的计算公式:三.分析:易得矩阵的元素在同一列上单增.第一层二分答案.因为是求第 m 小的数,所以必有 m 个数 ≤答案(数有重复).check(mid) 函数里先枚举列,对于每一列再二分有多少个数 ≤ mid即可.ps: 控制边界...原创 2019-07-19 19:41:08 · 336 阅读 · 0 评论 -
Read Time (CodeForces - 343C,二分 + 贪心)
一.题目链接:CodeForces-343C二.题目大意:有 n 个磁头,m 个需读取的位置.给出 n 个磁头的初始位置,m 个需读取的位置.每秒磁头可以向左或向右移动一个单位.求最少需要多长时间 m 个位置都被读取过.三.分析:很容易看出要二分答案,不过 check() 不好写.考虑一件事情,对于一个磁头来说,它需读取的位置区域在上一个磁头(左边界) 与 下一...原创 2019-07-19 17:21:00 · 195 阅读 · 0 评论 -
Nightmare Ⅱ (HDU - 3085,双向 BFS + 模拟)
一.题目链接:HDU-3085二.题目大意:给你一个 n × m 的图,图由以下符号组成.'.' :空地'X' :墙'M' :男'G' :女'Z' :鬼规则:男、女、鬼 都可以向上下左右四个方向走每秒男的可以走三步,女的走一步,墙不能走.每秒每个鬼 会分出子鬼占领距离他单位长度 ≤ 2 的方格(包括墙)若男 || 女 被鬼抓住,则 GG....原创 2019-05-27 21:47:36 · 168 阅读 · 0 评论 -
Fire! (UVA - 11624,BFS + 模拟)
一.题目链接:UVA-11624二.题目大意:给你一个 N × M 的图,图由以下符号组成.'#':墙'.':空地'F':火'J':起点每时刻,火会向四周延展(墙可阻隔火的延展)每时刻,人可以向四周任意一个方向移动.当人到达边界时,人再走一步即可逃离.求最少需要多少时间,人能够逃离,如果不能逃离,则输出 "IMPOSSIBLE".三.分析:就是在...原创 2019-05-17 22:16:33 · 152 阅读 · 0 评论 -
Fliptile (POJ - 3279, 思维 + 二进制枚举)
一.题目链接:POJ-3279二.题目大意:给你一个图,只有 0 和 1.0 表示白色,1 表示黑色.每敲击一块砖,这块砖以及它周围四个方向的砖都会转变颜色.问是否能够将砖块都变为白色如果可以,输出在最小步数情况下,操作的最小字典序.否则,输出 "IMPOSSIBLE"三.分析:二进制枚举对第一行的操作.再又第 1 行的状态,确定第 2 行的操作 比如 ...原创 2019-05-16 19:24:08 · 335 阅读 · 0 评论 -
Partitioning Game( LightOJ - 1199,博弈 sg 函数)
一.题目链接:LightOJ-1199二.题目大意:有 n 堆石子Alice 与 Bob 轮流选择一对石子每次可以将这堆石子拆分成石子数不同的两堆最先无法进行此操作的人输.三.分析:sg 函数模板题四.代码实现:#include <set>#include <map>#include <ctime>#include...原创 2019-04-17 20:33:40 · 175 阅读 · 0 评论 -
Misere Nim (LightOJ - 1253,最后取石子输的 Nim 博弈)
一.题目链接:LightOJ-1253二.题目大意:规则和 Nim 博弈相似,只不过规定最后一名取石子的人输.三.分析:当所有石子堆均为 1 时,只需看 n 的奇偶性.当 n 为奇数时,先手必输.否则,后手必输.在其余状态中,与 Nim 博弈一样因为只是两名玩家的选择策略产生了变化使自己拿最后一个 -> 使别人拿最后一个四.代码实现:...原创 2019-04-17 20:02:58 · 251 阅读 · 0 评论 -
Fairy tale(BFS + 大模拟)
一.题目链接:Fairy tale二.题目大意:给你一个N × N 的地图,图上的每个点有四种方向(E W S N),代表着移动方向.在 t = 0 时,saya 在 (1, 1),treasure 在 (n, n).在每个单位时间内,分为 3 步.①saya 先按照地图移动一个单位.② saya 可以向四个方向移动一个单位,saya 会移动到距离 treasure ...原创 2019-03-09 11:24:30 · 296 阅读 · 2 评论 -
Boring count (HDU - 5056,滑动窗口)
一.题目链接:HDU-5056二.题目大意:给一个字符串 s,在一段子串中,若每个字母出现的个数不大于 k,则 ans++;三.分析:先明确一个基本概念:若 s 的某段子串满足条件,则这段子串的每一段子串都满足.滑动窗口:设置一个左端,一个右端.当满足条件时,尽可能地让右端最大.否则左端向右移动,到满足条件为止.四.代码实现:#include <se...原创 2019-03-10 20:33:29 · 177 阅读 · 2 评论 -
Lucky (HDU - 5213 ,莫队算法 + 容斥原理)
一.题目链接:HDU-5213二.题目大意:有 n 组数,一个 k 值,m 次询问.每次询问给出两个区间,求这两个区间内的数有多少组和为 k.三.分析:比较经典的莫队算法(奈何我第一次见)莫队算法一般用来解决离线算法中的区间问题.又被称为离线区间的万能解法(真是一个可啪的算法).又因区间不连续,所以先要用容斥原理处理一下.由容斥原理得:F(L1, R1, L...原创 2019-03-11 09:33:42 · 158 阅读 · 0 评论 -
NPY and girls (HDU - 5145,莫队算法 + 乘法逆元)
一.题目链接:HDU-5145二.题目大意:NPY 要在 n 个女朋友里面选取一个去约会,有些女朋友可能会同班.女朋友编号为 1 ~ n.为了不引起矛盾,NPY 在一个班里只会选取一名女朋友去约会.问在第 i ~ j 个女朋友之间选择,有多少种选法(考虑顺序不同,最终答案 % 1000000007).三.分析:先来看选法如何计算假设在第 i ~ j 中选取,则...原创 2019-03-11 20:48:40 · 251 阅读 · 0 评论 -
Mathmen( WA 到绝望的水题 + 思维)
一.题目链接:Mathmen二.题目大意:题目长的让人绝望有 n 个城市,给出这 n 个城市的位置.每个城市都有 m 种船.每种船有相应的最大里程 和 花费.一个人从第一个城市出发,坐船去往其他城市,每到一个城市就要换一条船.问最少花费是多少.三.分析:一开始没搞清楚关系,直接结构体排序 + 二分,然后成为了疯狂 WA 动机.这题其实很水.把相应的距...原创 2019-03-14 20:52:57 · 189 阅读 · 0 评论 -
Number Puzzle (ZOJ - 2836 ,容斥原理)
一.题目链接:ZOJ-2836二.题目大意:第一行给出 n, m第二行有 n 个数求在不大于 M 的非负整数中,有多少个数可以被这 n 个数中的任意一个整除.三.分析:容斥原理模板题存一下(偷笑.jpg)四.代码实现:#include <set>#include <map>#include <ctime>#incl...原创 2019-04-12 19:19:00 · 726 阅读 · 0 评论 -
Fibonacci again and again (HDU - 1848 ,博弈 SG 函数水题)
一.题目链接:HDU-1848二.题目大意:有三堆石子,石子个数分别为 m, n, p两个人玩游戏,规则如下:两个人轮流取石子,每次选择一堆石子,取的个数必须为斐波那契数列的项最先取光所有石子的人获胜.三.分析:没啥好分析的,就是一道 SG 函数水题.附上博弈学习的链接转载 - 1转载 - 2四.代码实现:#include <set>...原创 2019-04-12 18:39:03 · 121 阅读 · 0 评论 -
Ever Dream (ZOJ - 3700,模拟水题)
一.题目链接:ZOJ-3700二.题目大意:T 组数据.n 行字符串.现有操作:将每个单词按照出现次数分组,同组中先按长度从大到小,长度相等时,再按字典序排列.输出规则:在出现次数 > 1 的组,输出里面最长的单词,如果最长的单词不唯一,则输出最长单词中字典序排倒数第二的字符串.三.分析:水题!!!申请两个 map,一个放每个单词出现次数,另一个放出现一定...原创 2019-03-28 18:59:53 · 217 阅读 · 1 评论 -
Number Game( ZOJ - 3180,思维 + 逆推)
一.题目链接:ZOJ-3180二.题目大意:六个数 a,b,c,x,y,z.每次可进行一次操作,选择一个数,赋值为剩下的两个数相加 - 1.问是否可以将 x,y,z 转变为 a,b,c. (无序)三.分析:正推的话会炸掉.如果逆推,注意操作的特点.假设 a,b,c 升序易得 c == a + b - 1.则可得上一状态为 a,b,b - a- 1....原创 2019-03-24 20:37:27 · 194 阅读 · 0 评论 -
Books (ZOJ - 4067,思维 + 理解题意)
一.题目链接:ZOJ-4067二.题目大意:DreamGrid 去买书,有 n 本书排成一行,价格记为 a[0],a[1] .... a[n - 1].若DreamGrid 所带的钱不少于 第 i 本书的价格,则买这本书.最后DreamGrid 共买了 m 本书. if 不可能买了 m 本书,则输出Imp...原创 2019-02-25 19:00:35 · 358 阅读 · 0 评论 -
Books Queries( CodeForces - 1066C,模拟 + 元素位置)
一.题目链接:CodeForces-1066C二.题目大意:往书架上放书,现有三种操作.L:把书放在最左侧R:把书放在最左侧?:将编号为 id 的书从书架中弹出最少需要多少步三.分析:不好想的就是确定元素的位置.遍历会超时,由于无序 所以无法二分.这样想:起初书架为空,规定一个点为原点. 以原点向左右两侧延伸,正方向从左到右....原创 2019-02-17 11:20:47 · 266 阅读 · 0 评论 -
Binary Land(ZOJ - 3478,BFS + 模拟)
一.题目链接:ZOJ-3478二.题目大意:给你一个 10 × 15 的图,图中包括以下符号.'H' :终点'X' :墙'O' :蜘蛛网'.' :空地再给出两只异性企鹅各自的起点坐标.只可以选取一只企鹅进行操作.一只企鹅进行运动时,另一只企鹅的运动与这只企鹅左右对称运动.企鹅运动无限制,当企鹅要走进墙时,则这只企鹅不动.当一只企鹅走进蜘蛛网时,此企鹅...原创 2019-04-25 22:16:48 · 233 阅读 · 0 评论 -
例题 3-4 猜数字游戏的提示(Master-Mind Hints,UVA 340)
一. 题目链接 :Master-Mind Hints UVA-340二. 题目大意 :多组数据,每组数据中有一个标准数字序列,之后多组数字序列,输出 A 和 B.A : 在每组数字序列中,与标准数字序列中数字且位置相同的数字个数.B :在每组数字序列中,有多少个数字在两组数字序列里都出现过,但位置不同.三.分析 :A : A很好求,直接同时遍历 标准数字序列 和 ...原创 2019-01-19 11:03:40 · 338 阅读 · 1 评论 -
例题 3-6 环状序列(Circular Sequence,ACM/ICPC Seoul 2004,UVA1584)
一.题目链接:Circular Sequence UVA-1584二.题目大意:给定一个只含 A , T , C , G 的环形字符串,输出其字典序最小的字符串.三.分析:例如CTCC,则根据字典序最小可以写成CCCT.注意该字符串是环形的,所以应该想到在字符串处理上使用 "%" 运算.由此,我们只需要找出取余点即可.那么,就枚举一遍取余点喽,把字典序最小的取余点记...原创 2019-01-19 11:36:39 · 311 阅读 · 0 评论 -
习题 3-5 谜题(Puzzle, ACM/ICPC World Finals 1993, UVA227)
一. 题目链接:Puzzle UVA-227二.题目大意:有一个 5 × 5 的字母矩阵,其中有一个是空格。共有 4 中指令,分别为 A, B, L, R.A:将空格上的相邻字母移到空格中.B:将空格下的相邻字母移到空格中.L:将空格左的相邻字母移到空格中.R:将空格右的相邻字母移到空格中.输入指令后 若有非法指令输出“This puzzle has no fi...原创 2019-01-20 14:37:29 · 332 阅读 · 0 评论 -
Color the ball(HDU - 1556,前缀和)
一.题目链接:HDU-1556二.题目大意:有 n 个气球,每次给出一个区间,并把区间内的气球染色,输出每个气球被染色的次数.三.分析:前缀和.设区间为[a, b],则将 cnt[a]++,cnt[b + 1]--.详见代码.四.代码:#include <set>#include <map>#include <ctime>...原创 2019-01-29 09:15:27 · 293 阅读 · 0 评论 -
最大子矩阵(HDU - 1559,前缀和)
一.题目链接:HDU-1559二.题目大意:给出一个 m × n 的矩阵,和一个大小为 x × y 的子矩阵,求子矩阵的最大值为多少?三.分析:利用前缀和求出 顶点 到 每个点 矩阵的和,然后枚举子矩阵顶点的位置即可.如图:四.代码实现:#include <set>#include <map>#include <ctime&g...原创 2019-01-29 10:41:26 · 491 阅读 · 0 评论