0
柒月 流火
菜
展开
-
Codeforces Round #223 (Div. 1) C. Sereja and Brackets 离线树状数组
C. Sereja and Brackets 题意:给你一个只包含 '(' 和 ')' 的字符串,由m个询问,每次询问给定一个区间,求区间内 '(' 和 ')' 匹配的个数。思路:观察发现每个 ')' 匹配的 ’(’ 的位置是一定的,我们可以将每一个与之匹配的 ‘(’ 的位置保存起来,将询问按照右端点排序。边更新边查询,在区间范围内被标记点的个数即为括号匹配的对数。(因为在存位置...原创 2019-05-22 17:20:13 · 151 阅读 · 0 评论 -
CodeForces - 1009B Minimum Ternary String 思维
CodeForces - 1009B Minimum Ternary String 题意:给你一串由0 1 2组成的字符串,相邻的 0 和 1 可以交换位置,相邻的 1 和 2 可以交换位置,输出最小的字符串 。思路:由题意可知 1 可以和 0 或 2 互换,所以 1 可以在字符串中任意移动。从第一个 2 后边的 0 开始,0 与 2 的相对位置保持不变。第一个 2 前边的 ...原创 2019-03-13 16:15:42 · 150 阅读 · 0 评论 -
Spoj GSS3 Can you answer these queries III 线段树求区间最大子段和
题意:给你 n 个数,有两种操作:1,将某一点的值修改;2,给你一段区间,求出区间内最大连续子段和思路:线段树,将每个区间的左端点最大和(lmax)、右端点最大和(rmax)、此区间最大和(dat)、此区间和(sum)保存在结构体中,每次修改时更新即可某一部分的的最大和有三种可能完全是右儿子的最大子段和 完全是左儿子的最大子段和 既有一部分在左儿子中,又有一部分在右儿...原创 2019-03-30 15:38:51 · 176 阅读 · 0 评论 -
HDU - 5536 Chip Factory 01字典树带删除操作
HDU - 5536 Chip Factory 题意:给你n个数,从中选出三个数(这三个数的下标各不相同)使 ( s[i]+s[j] )^s[k] 的值最大,输出最大值。思路:将输入的数转换为二进制存入字典树中,每次枚举两个数将这两个数删除,从剩余的数中查找 异或 值最大的数,查找完之后再将这两个数插入字典树中。参考博客:https://blog.csdn.net/hyf201...原创 2019-03-27 16:44:28 · 152 阅读 · 0 评论 -
POJ 3667 Hotel 线段树区间合并+延迟标记
HotelTime Limit:3000MS Memory Limit:65536K Total Submissions:21646 Accepted:9427 Descript...原创 2019-04-01 19:36:38 · 135 阅读 · 0 评论 -
CodeForces - 126B Password KMP+dp思想
CodeForces - 126B Password 题意:给你一个字符串,找出一个最长子串 t ,t 既是前缀也是后缀,并且 t 在字符串中间也出现过思路:利用KMP求出 nxt 数组。然后预处理出整个字符串有多少个与该前缀相同的子串。用到DP思想,cnt[nxt[i]]+=cnt[i],倒着更新一遍。那么cnt大等于3的前缀,均为可行解利用next[next[i]]是次长...原创 2019-04-07 12:13:48 · 179 阅读 · 0 评论 -
CodeForces - 484A Bits 贪心
CodeForces - 484A Bits 题意:给你 n 个区间,求区间内数的二进制包含 1 最多的一个数,如果存在多个数输出最小的那个思路:将输入区间的左边界从低位到高位 将每一位与1相或(从低位开始能保证最小),如果超出区间的右边界则与1相或前的数即为答案。#include<iostream>#include<cstring>#includ...原创 2019-04-07 15:40:15 · 134 阅读 · 0 评论 -
HYSBZ - 2038 小Z的袜子(hose) 莫队 +公式推导
HYSBZ - 2038 小Z的袜子莫队(分块版,不是二维曼哈顿距离什么什么最小生成树)就是分块排序优化暴力查找,减少查找区间之间的覆盖长度,从而优化时间复杂度,有一种说法很精彩如果我们已知[l,r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l,r-1]的答案,即可使用莫队算法。时间复杂度为O(n^1.5)。如果只能在logn的时间移动区间,则时间复杂度是O(n^1.5*lo...原创 2019-04-07 21:48:48 · 115 阅读 · 0 评论 -
POJ - 1442 Black Box 最大堆和最小堆
POJ - 1442 Black Box题意:给你n个插入的数和m次查询,每次查询输入一个数表示在第几次插入操作以后查询(是第几次查询就输出第几个小的数)思路:建立一个最大堆和最小堆,把一开始插入的数都存在最小堆里,每查询一次就将最小堆的堆顶存入到最大堆里(前提是保证最小堆的堆顶比最大堆的堆顶大,否则需要交换堆顶值)#include<iostream>#include...原创 2019-03-28 21:37:49 · 158 阅读 · 0 评论 -
CodeForces - 1047C Enlarge GCD 思维
CodeForces - 1047C Enlarge GCD 题意:给你 n 个数,求出他们的最大公因数为 k ,求最少需要删掉几个数才能使最大公因数 k 变大思路:从公因数 k+1 开始枚举,找出需要删掉最少的数的个数#include<iostream>#include<cmath>#include<cstdio>#include&...原创 2019-03-17 10:23:42 · 251 阅读 · 0 评论 -
HDU - 1716 排列2 全排列 STL
HDU - 1716 排列2 思路:看代码需要用到关于全排列 next_permutation() 函数的用法#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ ...原创 2019-03-04 20:20:28 · 193 阅读 · 0 评论 -
POJ - 1088 滑雪 DFS+优化
POJ - 1088 滑雪 思路:在深搜的同时,将每个点的最长长度保存下来,下次访问到这里直接使用就行,否则会超时。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long lon...原创 2019-02-11 11:49:59 · 187 阅读 · 0 评论 -
POJ - 3414 Pots BFS + 记录并输出路径
POJ - 3414 Pots 题意:给你两个杯子的容量 和 最后杯子中剩余水的容量。有三种操作方式FILL(i) 将第 i 个杯子装满水 DROP(i) 将第 i 个杯子的水倒空 POUR(i,j) 将第 i 个杯子中的水倒入第 j 个杯子中 可能有两种情况:(1) i 杯子中的水还没全倒入 j 杯子中 j 杯子就满了,此时 i 杯子中还...原创 2019-02-24 09:47:18 · 208 阅读 · 0 评论 -
POJ - 3984 迷宫问题 BFS+记录并输出最短路径
POJ - 3984 迷宫问题 思路:重点是如何记录并输出最短路径。我们可以用一个 node类型的 pre[ ][ ] 二维数组记录这个状态的前一个状态。如果是正向搜索(从(0,0)到(4,4)),找到结果时需要逆序输出;如果是逆向搜索(从(4,4)到(0,0))找到结果直接输出。逆向搜索(时间少)#include<iostream>#include<cstd...原创 2019-02-25 21:58:29 · 610 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) B. Tanya and Candies 思维
http://codeforces.com/contest/1118/problem/B题意:有n颗糖,每颗糖都有一个质量,拿出其中一颗糖,剩下的糖的奇数位置上的质量和 和 偶数位置上的质量和相等的有多少个思路:对于拿掉第i位数的话,第i位之前的奇偶性是不变的,第i位之后的奇偶性是和原来相反的,所以我们用前缀和,分别求出奇数位置上的前缀和和偶数位置上的前缀和,然后对于第i位拿掉了以...原创 2019-02-20 21:36:27 · 160 阅读 · 0 评论 -
2017蓝桥杯 包子凑数 BFS 数学
问题描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的...原创 2019-02-27 08:47:22 · 144 阅读 · 0 评论 -
蓝桥杯 算法训练 表达式计算 java
算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式 输入一行,包含一个表达式。输出格式 输出这个表达式的值。样例输入 1-2+3*(4-5)样例输出 -4数据规模和约定 表达式长度不超过100,表达式运算...原创 2019-03-06 21:37:15 · 315 阅读 · 0 评论 -
HDU - 1237 简单计算器 (两个)栈应用
HDU - 1237 简单计算器 这道题与 蓝桥杯 算法训练 表达式计算 一样思路:先要学会将中缀表达式转换为后缀表达式:中缀表达式转换为后缀表达式。在符号栈底加一个 '(' 防止栈为空,在字符串中加一个 " ."(空格 + '.') ,将栈的运算符全部提取出来。检测到")" 不入栈, 而是将符号栈中的"(" 之上的运算符提出来,供给栈顶次顶元素运算,并将栈顶和次顶两个元素删除得...原创 2019-03-06 21:55:48 · 247 阅读 · 0 评论 -
HYSBZ - 2588 Count on a tree LCA+主席树 树上路径求第K大
HYSBZ - 2588 Count on a tree给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor(异或)lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。Input第一行两个整数N,M。第二行有N个整数,其中第i个整数表示点i的权值。后面N-1行每行两个整数(x...原创 2019-04-22 09:09:38 · 145 阅读 · 0 评论 -
SPOJ - COT Count on a tree LCA+主席树 树上路径求第K大模板题
SPOJ - COT Count on a tree 题意:给出一棵树,每个点都自己的权重,然后给出树上的边,要求从节点 u 到节点 v 路径上的第 k 小的权重的大小。因为权重可能很大,所以需要离散化思路:在树上建主席树每个点建一棵权值线段树,记录从这个点到根的路径上的点权信息。u可以和fa[u]的线段树共用很多信息,所以上主席树!那么 u 到 v 路径上的点权信息,...原创 2019-04-22 09:17:34 · 155 阅读 · 0 评论 -
POJ - 3417 Network LCA(倍增)+树上差分(关于边)
POJ - 3417 Network 树上差分讲解题意;给你一棵树,原来有 n-1 条边,有 m 条新加的边,求删除一条旧的边和一条新的边将树最少分成两部分 有多少种分法思路:思路转自:https://www.cnblogs.com/lsgjcya/p/9247167.html事实上我们考虑,每多加一条非树边,在不重的情况下,树上都会多出一个环。考虑断掉某条树边:1...原创 2019-04-19 19:39:50 · 205 阅读 · 0 评论 -
ZOJ - 3954 Seven-Segment Display 思维
ZOJ - 3954 Seven-Segment Display 题意:一个七段显示器,由 a,b,c,d,e,f,g 七根显示管控制显示的数字。0代表开,1代表关。给你 n 个数字的显示状态,他们每一列对应的字母是否相同。(原序列对应a,b,c,d,e,f,g 可以打乱顺序) 相同输出YES,否则NO例:7 01010111 1101011对应的序列为:a,g,b,f...原创 2019-05-04 20:43:17 · 155 阅读 · 0 评论 -
Codeforces Round #172 B.Maximum Xor Secondary 单调栈
Maximum Xor Secondary题意:给你 n 个不同的数,求任意区间长度内最大的两个数相异或的最大值。思路:维护一个单调递减序列,每次pop出的栈顶元素正是以 a[i] 为最大值时(往左匹配到)的次大值,每次push时,栈顶元素正是往左匹配 以这个数为次大值时只能匹配到的最大值,扫一遍就ok了#include<iostream>#inclu...原创 2019-05-05 10:35:08 · 152 阅读 · 0 评论 -
ZOJ - 3963 Heap Partition STL +思维
ZOJ - 3963 Heap Partition 题意:给定一个 n 个数的序列,存在一棵二叉树他存放的元素满足 ai <=aj && i<j (i为 j的父节点),要将这 n 个数全部都存到二叉树中(可以不在同一棵树),求最少需要多少棵树。每一个案例先输出需要多少棵树,每棵树的第一行输出一个x,代表这棵树有几个元素,然后输出这x个元素在原数组中的...原创 2019-04-29 21:18:07 · 181 阅读 · 0 评论 -
Codeforces Round #464 Convenient For Everybody 思维
Convenient For Everybody 题意:将一天分为 n 个小时,所以有 n 个时区(当第一个时区的时间为1时,第 i 个时区则为 i 时)。现在要举办一场比赛(比赛的时间为 1 个小时)给你每个时区参赛的人数 a ,和一个时间段 s~f,当地时间不小于 s 且小于 f 的时间可以参加比赛。求参赛人数最多时最小的开始时间(第一个时区的时间)。题解:一共可以有 m=...原创 2019-05-06 17:36:48 · 154 阅读 · 0 评论 -
POJ - 3764 The xor-longest Path 01字典树求路径最大异或值
POJ - 3764 The xor-longest Path 题意:一棵 n 个点的树,n-1 条无向带权边,求任意两点之间的所有距离异或的最大值思路:设d[x]为根节点到x的路径上的所有边权的异或值,显然 d[x] = d[fa[x]] xor weight(x , fa[x])。根据上式先进行一次深度优先搜索,求出所有的d[x]。设有两节点x和y,根据异或性质 a xor ...原创 2019-04-25 17:46:08 · 294 阅读 · 2 评论 -
UVA - 11300 Spreading the Wealth 中位数,递推
UVA - 11300 Spreading the Wealth 题意:有n个人,每个人都有一些钱,每个人都可以把任意的钱分给左右相邻的两个人(第一个人可以把钱分给第二个人和第 n 个人),求最少需要转移的钱数(保证这n个人的钱数和能被n整除)题解:https://blog.csdn.net/qingshui23/article/details/51302967#inc...原创 2019-05-19 10:34:00 · 172 阅读 · 0 评论 -
Codeforces Round #279 (Div. 2) C.Hacking Cypher
C.Hacking Cypher 题意:给你一个由数字0~9组成的字符串(最大长度为1000000个字符),给你两个数字 a 和 b(1<=a,b<=10^8) 。能否将字符串分为两部分,左边的正整数部分能被a整除,右边的正整数部分能被b整除(不能包含前导0),存在输出 YES,并输出这两部分字符串,否则输出 NO。思路:利用前缀和 和 后缀和 的思想,将每一个位置...原创 2019-05-21 21:05:24 · 232 阅读 · 0 评论 -
ZOJ - 3960 What Kind of Friends Are You? 浙江省赛 C 思维
ZOJ - 3960 What Kind of Friends Are You? 题意:给你 n 次询问和 q 个问题下一行一个整数 k ,输入k个人的名字接下来的 q 行每行包含一个整数 x 和 x 个人名,表示这x个人答对了这个问题最后的 n 行每行输入 q 个数字(0或1),a[i]=0代表没有答对第 i 个问题,等于1代表答对,如果只有一个人满足这 q 个数字,就输出...原创 2019-04-28 22:03:38 · 178 阅读 · 0 评论 -
ZOJ - 3606 Lazy Salesgirl 线段树+思维
ZOJ - 3606 Lazy Salesgirl 题意:有n个人去面包店买面包,第 i 个人在 ti 分钟去买价格为 qi 的面包,他会买 1+(i-1)%3 块面包。如果在连续的 w 分钟内没有人去买面包 店主就会睡觉,直到下一个人去把店主叫醒,但这个人会什么也不买就离开蛋糕店。求在最大平均售价的情况下最小的 w ,输出 w 和 最大平均售价( 销售额 / 人数 )。题解:...原创 2019-05-03 22:12:12 · 148 阅读 · 0 评论 -
HDU 4858 项目管理 分块
HDU 4858 项目管理 项目管理 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3727Accepted Submission(s): ...原创 2019-04-28 22:20:19 · 112 阅读 · 0 评论 -
HDU - 4630 No Pain No Game 线段树离线操作 求区间内任意两个数的最大公约数
HDU - 4630 No Pain No Game 题意:有n个数,m个区间询问,每次输出区间内任意两个数的最大公约数。思路:线段树离线+点更新+区间查询我们维护一颗线段树,线段树维护的值是区间内最大的gcd。首先我们预处理所有数字的因子,然后我们将排序过后的区间(按照右端点从小到大排序)从左到右依次处理(为了加强理解,设定k<i<j),每扫描一个值a[i],我...原创 2019-04-26 21:37:15 · 427 阅读 · 0 评论 -
HDU 5145 NPY and girls 莫队 + 组合数 + 逆元
HDU 5145 NPY and girls 题意:给出n个女生所在的教室,求 在区间范围内 每次拜访一个人有多少种不同的拜访顺序例如:1 2 1(有三种顺序)1 2 1,1 1 2,2 1 1思路:思路转自博客:https://blog.csdn.net/LinzhiQQQ/article/details/77855018我们继续根据上面的那个例子来找规律。 当...原创 2019-04-18 16:25:06 · 137 阅读 · 0 评论 -
ZOJ - 3780 Paint the Grid Again 拓扑排序+思维
ZOJ - 3780 Paint the Grid Again 题意:一个 n*n 的方格,有两种操作: Ri 将第 i 行全部全部涂成黑色,Cj将第 j 列全部涂成白色(X 为黑色,O为白色)。一开始方格没有任何颜色(不是白色,也不是黑色),每一次操作都会覆盖方格内的颜色。给定最后矩阵的颜色,求最少需要多少次操作才能将原矩阵变为给定的矩阵。输出每一次操作。(如果可以同时进行R 和 C ...原创 2019-05-02 20:43:37 · 155 阅读 · 0 评论 -
ZOJ - 3713 In 7-bit 进制转换
ZOJ - 3713 In 7-bit 题意:t 组数据,每次输入一个字符串。假设字符串的长度为 len ,将 len 转换为二进制 x,每次取 x的后 7 位,如过 x 右移7位后还大于 0 ,就在取的那 7 位二进制数的前边添加一位 1 ,使变为 8 位数,然后这八位数以十六进制的形式输出(如;1011000100,后7位为 1000100,然后在加一位 1 变为 110001...原创 2019-05-02 21:32:23 · 207 阅读 · 0 评论 -
HDU - 4417 Super Mario 主席树 || (离线)树状数组 求区间中不大于某一个数的值有多少个
HDU - 4417 Super Mario 题意:有n个数,m次询问,每次询问 L R k,求在区间 [L,R] 中小于等于 k的数有多少个。思路:用主席树来维护,每次只需要找到序列 b 中第一个等于 k 的数,那么要求的数必定在 b[1]~b[upper_bound(k)] 这个范围内,接下来就像线段树统计区间个数那样,若完全包含则直接加上 t[r].sum - t...原创 2019-04-23 20:17:56 · 233 阅读 · 0 评论 -
POJ - 1733 Parity game 带全并查集
POJ - 1733 Parity game 题意:一个只含有 0,1 长度为n的字符串,有m条语句 。even 表示给定区间内 1 的个数为偶数个,odd 表示给定区间内 1 的个数为奇数个。求前几条语句是正确的思路:只有两种状态:偶数个1,奇数个1先将区间 [ x , y] 转换为(x-1 , y],区间内 1 的奇偶性就可以根据 r[y] 和 r[x-1] 确定。我...原创 2019-04-28 17:09:42 · 95 阅读 · 0 评论 -
ZOJ - 3607 Lazier Salesgirl 贪心
ZOJ - 3607 Lazier Salesgirl 题意:有 n 个人去买面包,第 i 个人会在 ti 分钟过来买价格为 pi 的面包。如果在连续的 w 分钟内没有人来买面包,店主就会睡觉,来到店里买面包的人发现店主在睡觉就会离开(不买面包)。求卖出面包最大平均值下最小的 w。输出 w 和最平均值。题解:如果到第 i 个顾客平均盈利最多,那么它的间隔时间一定是这个顾客以前...原创 2019-05-03 18:13:41 · 232 阅读 · 0 评论 -
HDU - 3374 String Problem 求字符串的最大最小表示法 并求循环次数
HDU - 3374 String Problem 题意:给你一串字符,这串字符可以左移(将最前面一个字符放到字符串最后面)生成 strlen(s) 个字符串,求出其中字典序最小 和 最大 的字符串在原串的起始位置和出现的次数(如果存在多个最小或最大串,则输出rank值小的,即下标小的那个)。输出:最小字符串起始位置 出现次数 最大字符串起始位置 出现次数思路:...原创 2019-01-30 20:25:58 · 157 阅读 · 0 评论 -
HDU - 4763 Theme Section nxt数组应用 前中后含有最长相同字符数
HDU - 4763 Theme Section题意:给你一个字符串,可以看作“EAEBE”,A和B可以是任意字符或字符串(可以为空),求E的最大长度。思路:先求出 nxt 数组,如果存在符合题目要求的 EAEBE 形式,假设 nxt[len]=i,则存在x在下标为 [2*i,len-i) 的字符串当中使得 nxt[x]==i 。这样求的是无重叠的最大长度#include...原创 2019-02-08 20:58:14 · 107 阅读 · 0 评论