
思维
柒月 流火
菜
展开
-
Codeforces Round #223 (Div. 1) C. Sereja and Brackets 离线树状数组
C. Sereja and Brackets 题意:给你一个只包含 '(' 和 ')' 的字符串,由m个询问,每次询问给定一个区间,求区间内 '(' 和 ')' 匹配的个数。思路:观察发现每个 ')' 匹配的 ’(’ 的位置是一定的,我们可以将每一个与之匹配的 ‘(’ 的位置保存起来,将询问按照右端点排序。边更新边查询,在区间范围内被标记点的个数即为括号匹配的对数。(因为在存位置...原创 2019-05-22 17:20:13 · 176 阅读 · 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 · 186 阅读 · 0 评论 -
SDUT 2411 Pixel density (山东省第三届省赛) 模拟
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2411首先要找到输入与输出的规律。。。我们仔细观察题目的话,可以发现 他给我们的格式是 “名称 + 屏幕大小(以英寸为单位)+ inches + 屏幕规格(Wp*Hp) + 类型”。其中加号的位置可以有若干个空格,当然在名称和类型中也可以...原创 2019-04-11 19:48:47 · 156 阅读 · 0 评论 -
CodeForces - 484A Bits 贪心
CodeForces - 484A Bits 题意:给你 n 个区间,求区间内数的二进制包含 1 最多的一个数,如果存在多个数输出最小的那个思路:将输入区间的左边界从低位到高位 将每一位与1相或(从低位开始能保证最小),如果超出区间的右边界则与1相或前的数即为答案。#include<iostream>#include<cstring>#includ...原创 2019-04-07 15:40:15 · 306 阅读 · 0 评论 -
HDU - 5536 Chip Factory 01字典树带删除操作
HDU - 5536 Chip Factory 题意:给你n个数,从中选出三个数(这三个数的下标各不相同)使 ( s[i]+s[j] )^s[k] 的值最大,输出最大值。思路:将输入的数转换为二进制存入字典树中,每次枚举两个数将这两个数删除,从剩余的数中查找 异或 值最大的数,查找完之后再将这两个数插入字典树中。参考博客:https://blog.youkuaiyun.com/hyf201...原创 2019-03-27 16:44:28 · 181 阅读 · 0 评论 -
POJ - 2513 Colored Sticks Trie树+欧拉通路判断+并查集
POJ - 2513 Colored Sticks题意:有一捆木棍,首尾都有颜色。如果一根木棍的首部颜色 与 另一根木棍的尾部颜色相同那么这两根木棍就可以连在一起,求所有的木棍是否可以连成一根思路:重点是 判断是否存在欧拉通路。如果存在欧拉通路:1、所有的点都在一个集合,2、只有两个或0个度数为奇数的点注意输入为空的情况#include<iostream>#...原创 2019-03-27 11:34:33 · 168 阅读 · 0 评论 -
Spoj GSS3 Can you answer these queries III 线段树求区间最大子段和
题意:给你 n 个数,有两种操作:1,将某一点的值修改;2,给你一段区间,求出区间内最大连续子段和思路:线段树,将每个区间的左端点最大和(lmax)、右端点最大和(rmax)、此区间最大和(dat)、此区间和(sum)保存在结构体中,每次修改时更新即可某一部分的的最大和有三种可能完全是右儿子的最大子段和 完全是左儿子的最大子段和 既有一部分在左儿子中,又有一部分在右儿...原创 2019-03-30 15:38:51 · 204 阅读 · 0 评论 -
Codeforces Round #494 (Div. 3) C Intense Heat 前缀和
Codeforces Round #494 (Div. 3) C Intense Heat题意:有n天的温度,选出至少连续 k 天的温度求平均值,输出最大的平均值思路:求出前缀和,枚举符合条件的每一个时间段#include<iostream>#include<cstdio>#include<cstring>#include<al...原创 2019-03-22 17:17:32 · 132 阅读 · 0 评论 -
HDU - 1671 Phone List 某一字符串为另一字符串前缀 STL || trie
HDU - 1671 Phone List 题意:查询是否存在某一字符串为另一字符串的前缀参考试题评论写的一开始字符串忘记排序了,WR了好几次,思维太不严谨了。。。trie#include<iostream>#include<algorithm>#include<cstdlib>#include<sstream>#i...原创 2019-03-25 21:18:40 · 189 阅读 · 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 · 235 阅读 · 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 · 174 阅读 · 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 · 262 阅读 · 0 评论 -
Codeforces Round #279 (Div. 2) C.Hacking Cypher 找规律
C.Hacking Cypher 题意:给你一个区间 [L,R] ,求区间内任意两个数相异或的最大值。题解:1 000012 000103 000114 001005 001016 001107 001118 010009 0100110 0101...原创 2019-05-21 17:27:43 · 171 阅读 · 0 评论 -
UVA - 11300 Spreading the Wealth 中位数,递推
UVA - 11300 Spreading the Wealth 题意:有n个人,每个人都有一些钱,每个人都可以把任意的钱分给左右相邻的两个人(第一个人可以把钱分给第二个人和第 n 个人),求最少需要转移的钱数(保证这n个人的钱数和能被n整除)题解:https://blog.youkuaiyun.com/qingshui23/article/details/51302967#inc...原创 2019-05-19 10:34:00 · 202 阅读 · 0 评论 -
ZOJ - 3212 K-Nice 思维 推公式
ZOJ - 3212 K-Nice题意:给你 n,m 和 k,要你输出一个矩阵n行m列,它有 k 个nice 元素。一个元素的 上下左右 四个元素的和与这个元素的值相同,则称这个元素为一个nice。 nice元素必须是非边上的元素(题目没说。。。)。思路:为了方便我们可以只用 0和1 两种数字来填矩阵。观察发现:当 k=(n-2)*(m-2)时,矩阵中非边上的位置都需要满足条...原创 2019-05-09 15:40:41 · 199 阅读 · 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 · 185 阅读 · 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 · 213 阅读 · 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 · 195 阅读 · 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 · 202 阅读 · 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 · 172 阅读 · 0 评论 -
CodeForces - 1008B Turn the Rectangles 思维
CodeForces - 1008B Turn the Rectangles题意:给你n个矩形的宽和高,每一个矩形可以旋转90度(宽和高互换),问能否使每个矩形的高不大于前一个举行的高思路:将第一个矩形的最长边当作高,往后的每一个矩形在不大于前一个矩形的高的前提下 把满足条件最长的那条边当作高,如果又不满足条件的就标记一下#include<iostream>#i...原创 2019-03-12 16:27:19 · 162 阅读 · 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 · 280 阅读 · 0 评论 -
HDU - 3336 Count the string nxt[ ]应用 求 字符串的每一个前缀在字符串出现次数的总和(可重叠)
HDU - 3336 Count the string题意:参考了大佬的博客:https://blog.youkuaiyun.com/guodongxiaren/article/details/25742103求字符串的每一个前缀在字符串出现次数的总和(可重叠)思路: 以字符串ababa,求它的sum(前缀出现次数和)。我们可以得到它的next数组:下标 0 1 ...原创 2019-01-20 21:48:11 · 499 阅读 · 0 评论 -
HDU - 4578 Transformation 线段树 思维
题目链接: HDU - 4578 Transformation 题意:给你一个数组,初始值为零,有四种操作(1)"1 x y c",代表 把区间 [x,y] 上的值全部加c(2)"2 x y c",代表 把区间 [x,y] 上的值全部乘以c(3)"3 x y c" 代表 把区间 [x,y]上的值全部赋值为c(4)"4 x y p" 代表 输出区间 [x,y] 上值的p次方和1&...原创 2018-11-18 15:56:51 · 191 阅读 · 0 评论 -
POJ 3258 River Hopscotch 二分 最小值最大化
POJ 3258 River Hopscotch奶牛过河,起点为0,终点到起点的距离为 L ,中间有n块石头,要去掉m块,求去掉m块后 使奶牛至少要跳的最小距离为所有方法中的最大值,并输出这个值(这道题是要求一堆最小距离里面的最大值)思路使用二分法。这道题里面注意牛能跳的距离是没有限制的,就是说牛想跳多远就跳多远,对于牛最多能跳多少次也没有限制!但是要求里面的最小值,所以这道题二分法所...原创 2018-11-23 22:25:30 · 167 阅读 · 0 评论 -
HDU - 5692 Snacks DFS序+线段树
思路求子树x中到根节点的最大值。修改时需要将子树x的所有点都修改。则本题变成一个区间更新,区间最值的题。dfs序处理后,套一个支持区间更新的线段树即可。 每个叶子节点存储的都是0到他所对应的标号(第几台零食机)的距离,每一次pushup时都会找出对应区间的最大值#pragma comment(linker, "/STACK:1024000000,1024000000")#inclu...原创 2018-11-15 20:50:32 · 126 阅读 · 0 评论 -
A Magic Lamp HDU - 3183 详解 RMQ
题意给定长度为n位的数字,删去其中的m位数,不能改变数的顺序,使剩下的数最小(如果剩下的数包含前导零输出时则去掉)。思路此题是以所存最小数的位置(下标)进行预处理 最后输出的是一个(n-m)位的数,输出结果的第一位数最大的可选范围为原数的 0~m(所存n位数的下标)位,一共进行 n-m 次选择,每次选出最小的那个数的下标,最后一次选择的右区间正好为 n-1 (0~n-1 一共n位...原创 2018-11-03 09:53:30 · 268 阅读 · 0 评论 -
Buy Tickets POJ - 2828 线段树 点修改
题意有N个人排名买票,现在给出每个人要插入的位置pos(0<=pos<=N-1)以及他的价值val。在插入N个人后,会构成一个新序列。现在让你按顺序 输出新序列中每个位置pos对应的价值val思路最后一次插入某个位置的人,他的位置不会再改变,所以我们应该从后往前插入。用sum记录所在空间剩余的位置。对于插入在pos位置的人他前边一定要有pos-1(1~n 建树)个剩余位置。...原创 2018-10-21 17:44:53 · 189 阅读 · 0 评论 -
An easy problem HDU - 5475 线段树 点修改
题意计算器初始值为1,只能进行 乘,除操作。当x=1时,乘以y当x=2时,除以第 y 次操作(第y次操作肯定是乘,x=1)所乘的数。输出的结果是对M取余后的结果思路建树时,将每一个节点初始化为1。假如第 J次操作,x=1 就将 [J,J]区间所在叶子结点的 sum[ ] 更新为y,x=2就将[y,y]区间所在的sum[ ]值更新为1。 为什么更新为 1 ?当x=2时,y的值...原创 2018-10-20 20:05:19 · 146 阅读 · 0 评论 -
Billboard HDU - 2795 线段树点修改,求区间最大
题意给你一个广告牌的长度和宽度,和要贴的广告数。每条广告的长度为 1 ,输入n条广告的高。输出广告所在的行数。所有的广告都靠左贴。思路以行数h来建树,每一个叶子结点代表一行,以数组node存放剩余宽度,初始化为广告牌的宽度。减去每次用掉的宽度,更新剩余宽度的最大值。#include<cstdio>#include<algorithm>using nam...原创 2018-10-20 09:59:24 · 222 阅读 · 0 评论 -
Educational Codeforces Round 45 (Rated for Div. 2) B. Micro-World
B. Micro-World题意:一个培养皿中有n个细菌,他们可以相互吞噬,只有当 ai>aj 且 ai<=aj+k(k为输入的常数),求最后还剩下多少细菌思路:直接用 upper_bound 查找就行nlog(n)#include<iostream>#include<cstdio>#include<cstring>#...原创 2019-01-27 20:20:58 · 311 阅读 · 0 评论 -
POJ - 3746 Teacher YYF 思维 STL
POJ - 3746 Teacher YYF 题意:给你n个词 和 m条句子。根据题目给定的语法判断句子是否有错误。思路:用map将单词与句子一步步转换参考博客:https://blog.youkuaiyun.com/wl16wzl/article/details/79245191题目中的介词短语为 介词+名词或代词 ,但是在提交时介次短语中介词与名词的中间需要加上一个冠词 才对。...原创 2019-02-02 21:51:24 · 509 阅读 · 0 评论 -
CodeForces - 1011B Planning The Expedition
CodeForces - 1011B Planning The Expedition 题意:有n个人去探险,有m个食物,每人每天吃一个食物。如果某人第一天吃的食物种类为 a ,那么接下来的几天他只能吃食物种类为 a 的食物。求这些食物最多能吃几天。思路:将每一种食物的数量用 map 存储起来,遍历一遍找出最大天数#include<iostream>#includ...原创 2019-03-11 16:44:53 · 164 阅读 · 0 评论 -
Educational Codeforces Round 33 C.Rumor
Educational Codeforces Round 33 C.Rumor 题意:小明想要给这n个人传递假信息,小明给第 i 个人传递信息的费用为 c[i] ,存在m对人之间可以相互传递信息且费用为0 。求最小信息费思路:并查集,然后查找每棵树中的最小费用点import java.math.*;import java.util.Arrays;import java.u...原创 2019-03-19 17:11:46 · 203 阅读 · 0 评论 -
CodeForces - 1000C Covered Points Count 思维
CodeForces - 1000C Covered Points Count 题意:给你 n 段区间,分别输出输出被覆盖 1~n 次点的个数思路:把每段区间存起来,起点标记为 1 ,终点标记为 -1,按照点的顺序排序。存储时为了防止终点对起点的影响,需要将终点的位置加 1 。比如30 31 33 8这组样例,排完序之后的顺序就是图中绿色的编号。我...转载 2019-03-10 15:41:03 · 238 阅读 · 0 评论 -
CodeForces - 1006B Polycarp's Practice
CodeForces - 1006B Polycarp's Practice 题意:给定n个数,将这 n 个数分成 k 组,使每组当中的最大的数的和最大,输出每一组含多少个数(答案有很多种)。思路:用结构体记录每个数的大小和所在的下标,查找出最大的 k 个数,然后按照下标给他们分组就行。要特殊考虑 k=1的情况#include<bits/stdc++.h>u...原创 2019-03-10 10:52:51 · 217 阅读 · 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 · 163 阅读 · 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 · 204 阅读 · 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 · 636 阅读 · 0 评论 -
Make Palindrome CodeForces - 600C 思维题
题意用最少的替换字母次数,将输入的字符串变成变成回文字符(如果相同的替换次数有多组解,输出字典序最小的一种),字母的位置可以任意改变(不计入次数)思路定义两个数组,一个数组记录每个字母出现的次数,另一个记录出现出现奇数次的字母,出现偶数次的不用改变,出现奇数次的从两边往中间遍历,使出现奇数次的字母 (小的加一 大的减一)变为偶数次 。 #include<bits/s...原创 2018-09-08 10:18:48 · 210 阅读 · 0 评论