
思维
文章平均质量分 52
值得理解的思维题
美少女zss
ccpc绵阳铜,icpc西安银,jscpc江苏金。
展开
-
牛客多校-Link with Bracket Sequence I-(子序列构造原序列问题+差值dp问题)
就是给你最多100个物品,每个物品有个质量和价值,然后你最多可以操作s次,可以让某个物品的质量翻倍。现在让你选择一些物品,分到两个集合,分完之后,两个集合的体积要一样。然后你获得的价值就是两个集合所有物品的价值之和。就是给你一个长度为n的括号序列,现在问你有多少长度为m的合法括号序列,使得给出的序列是构造的序列的一个子序列。就是给你一个都是小写字母字符串t,现在求有多少长度为m的字符串s,满足t是s的一个子序列。原创 2022-10-30 22:34:31 · 643 阅读 · 0 评论 -
CFDiv2-Wish I Knew How to Sort-(期望)
就是给你一个都是0和1的数组,然后每次随机选择两个不同的位置i原创 2022-10-27 18:31:27 · 510 阅读 · 0 评论 -
2018南京多校-Taotao Picks Apples-(预处理)
J题意:就是给你一排n个苹果,每个苹果有个大小,现在小A就从第一个开始拿,如果这个苹果是第一个苹果,那么必拿,如果这个苹果比上一次拿的大,那么必拿。现在给你m次独立的查询,每次让va[a] = b,然后问你小A会拿多少个苹果。思考:代码:总结:多多思考,注意细节。原创 2022-10-24 21:56:59 · 173 阅读 · 0 评论 -
2021昆明-Easy String Problem-(正难则反+莫队)
就是给你一个长度为n的字符串,然后给你m次查询,每次给你一个l和r,现在你可以删除任意包含[l,r]的子序列,问你删除后,可以产生多少种不同的字符串,空串也算一个。多多思考,相信自己。原创 2022-10-22 22:22:48 · 234 阅读 · 0 评论 -
CFdiv2-Intersection and Union-(线段树+转化求贡献)
就是给你n个区间,每个区间包含一段连续的值,然后这就是一个集合。现在有个式子|(((S1 op1 S2) op2 S3) op3 S4) …opn−1 Sn|。然后其中的op,分别可以是∪:两个集合元素的并集。∩:两个集合的元素交集。⊕:两个集合中元素只在某一个集合中出现的所有元素。种情况中,把答案的总和求起来。对于那个公式,就是问你经过顺序操作后,整个集合中还有多少元素。都有3中选择,现在问你3。原创 2022-10-19 20:45:52 · 279 阅读 · 0 评论 -
CFdiv3-Multi-Colored Segments-(线段树+multiset)
就是给你n个线段,每个线段有个a,b,c,代表左端点,右端点,线段的颜色。现在问你每个线段距离其他颜色的线段中最小的距离是多少。如果有点交叉那么距离就是0。多多思考,不用觉得题目难,思考思考思路,一个不行再换,这样可以积累许多以后可能用到的操作。原创 2022-10-14 21:20:34 · 434 阅读 · 0 评论 -
2022上海-Expenditure Reduction-(二分预处理)
就是给你一个A字符串和一个B字符串,你可以把A字符串删去一些前缀和后缀,然后B字符串仍然是A字符串的一个子序列。现在问你A串最多可以删去多少,把删掉后的A串输出。特别是那种经常暴力枚举查询的,就可以先去预处理试试,然后再查询就很方便了。原创 2022-10-13 13:16:50 · 279 阅读 · 0 评论 -
2020绵阳-Game of Cards-(博弈论+搜索)
就是给你0,1,2,3,这四个数的个数。然后你每次可以选择两个数加起来,不过加起来的值要原创 2022-09-08 15:46:59 · 452 阅读 · 0 评论 -
CFdiv2-Two Pizzas-(预处理+状态压缩)
一个人满意的条件是,选择的披萨中包含的所有数字,可以组成自己喜欢的那一组。现在让你选择两个披萨,尽量让最多的人满意,当满意人数相同的时候,尽量花的钱最小。n和m都是1e5,不过每个人喜欢的一组数字最多9个,每个数字也原创 2022-09-08 14:13:54 · 394 阅读 · 0 评论 -
2020绵阳-Joy of Handcraft-(调和级数+线段树)
t+t]亮,也就是先亮t秒再关t秒再亮t秒…然后亮的时候亮度为x。现在问你从1到m每个时间点亮的灯泡中亮度最大的亮度是多少,也就是最大的x是多少。就是给你n个灯泡,一共m个时间。每个灯泡有两个参数t和x,灯泡会在[2k。多多思考,联想联想相关的知识。原创 2022-09-07 21:19:46 · 173 阅读 · 0 评论 -
CFdiv2-Playlist for Polycarp-(二进制枚举+组合数+记忆化搜索或者暴搜)
就是给你n个音乐,每个音乐有个时间和曲调。然后一共总时间为m,现在问你有多少种不同的组合使得选择的音乐总时间为m,并且任意两个音乐之间的曲调不能相同。数据范围都很小,同时取模。多多简化问题,把复杂的问题简单化多多思考。原创 2022-09-07 13:34:00 · 116 阅读 · 0 评论 -
CFdiv2-Tokitsukaze and Strange Rectangle-(树状数组+组合数)
就是给你n个坐标,然后每次你可以选择xl,xr,yl三条线形成一个桶,把里面所有的点都包括,问你一共可以形成多少不同种类的桶,也就是多少个不同的集合。原创 2022-09-02 16:15:14 · 150 阅读 · 0 评论 -
杭电多校-Taxi-(曼哈顿公式+二分)
就是给你n个城市的坐标,和这个城市的权值。然后m次查询,每次查询给你现在的坐标,然后问你到达某个城市的最大价值是多少。从(x,y)到某个城市(xi,yi)的价值 = min(abs(x-xi)+abs(y-yi)),va[i])。尝试去推一推式子,算好时间复杂度。...原创 2022-08-28 22:06:57 · 151 阅读 · 0 评论 -
牛客多校-Shannon Switching Game-(博弈+递推必胜态)
就是给你n个点m条边,然后给你一个初始点st,和一个好点ed。小A和小B轮流操作,小B先操作。如果现在在a点,那么小B可以让一条和a点相连的边删掉。如果现在在a点,那么小A可以选择一条边走过去,并且删去这条边。现在问你当两个人都没法操作的时候,小A是否可以经过好点ed。多多思考,多想想以前的模型。原创 2022-08-20 18:48:13 · 396 阅读 · 0 评论 -
牛客多校-Wheel of Fortune-(球盒问题+组合数)
就是给你小A的血量和小A的7个手下的血量,再给你小B的血量和小B的7个手下的血量。每次随机选择一个血量>0的人,然后让他的血量减10,如果小A或者小B的死了,游戏停止。问你小A获胜的概率是多少。多多思考,排东西或者放东西的时候,尽量要多想想球和盒子模型。原创 2022-08-20 18:27:39 · 1031 阅读 · 0 评论 -
CFdiv2-Burenka and Traditions-(位运算+dp)
就是给你一个数组,每次你可以选择一段区间[l,r]都异或一个非负整数x,花费为(r-l+1)/2上取整。问你最少要用多少花费,可以使得这个数组都为0。原创 2022-08-17 21:16:38 · 257 阅读 · 0 评论 -
牛客多校-Jellyfish and its dream-(差分)
就是给你一个数组,下标从0开始,每个点的权值为0,1,2。如果(va[i]+1)%3 = va[i+1]。那么va[i] = (va[i]+1)%3。当然i==n-1的时候,下一个就是va[0]。问你是否可以把这个数组变成全部相同的数。原创 2022-08-17 18:45:29 · 241 阅读 · 2 评论 -
牛客多校-Zero-chan-(树上乘除+递推+因子)
然后m次查询,每次问你f(x)的后缀0的个数。给你一个树,然后定义。莫慌,看准仔细推理。原创 2022-08-17 15:15:29 · 380 阅读 · 0 评论 -
杭电多校-Shortest Path in GCD Graph-(二进制容斥+优化)
就是给你n个点,任意两点有条无向边权值是gcd(i,j)。现在m次查询,每次问你a和b的最短距离是多少,这个最短距离的路径有多少个。多多思考,多多优化,能优化到多少优化到多少。原创 2022-08-16 22:05:54 · 365 阅读 · 0 评论 -
杭电多校-Matryoshka Doll-(dp+巧妙思维)
就是给你n个盒子,每个盒子有个空间,如果a盒子可以装下b盒子当且仅当a-b>=k。现在让你把这些盒子分成m组,每组比如为a b c d,那么需要b装下a,c装下b,d装下c。问你一共有多少种分法。两个组是否不同只看盒子编号不看顺序。...原创 2022-08-16 20:11:55 · 515 阅读 · 0 评论 -
牛客多校-Link with Arithmetic Progression-(三分总结)
就是给你一个数组,然后你每次可以让一个数a变为另一个数b,花费为(a-b)×(a-b)。然后问你让这个数组变成等差序列的最小花费。就是给你一个数组,每次你可以让一个数加1或者减1,然后把这个数组变成等差序列的最小花费。......原创 2022-08-15 19:38:06 · 310 阅读 · 0 评论 -
CFdiv2-Empty Graph-(贪心or二分)
就是给你一个数组,任意两点有一条边,权值为min(va[i],va[i+1],…现在你最多可以操作k次,选择一个数让它成为任意正整数x。现在问你这个图的最大的最短路是多少。原创 2022-08-14 22:59:16 · 149 阅读 · 0 评论 -
牛客多校-Birds in the tree-(树形dp+定义本质)
就是给你一个树,然后问你有多少个不同的连通图,这个连通图所有度为1的点颜色都一样。多多思考,多多积累定义状态。原创 2022-08-14 13:49:05 · 184 阅读 · 0 评论 -
杭电多校-Darnassus-(最小生成树本质+预处理+链式向前星)
就是给你一个数组全排列,任意两点间的距离是abs(i-j)*abs(p[i]-p[j])。现在问你所有点联通起来的最小花费。原创 2022-08-13 16:04:52 · 366 阅读 · 0 评论 -
CFdiv2-Beautiful Mirrors-(期望)
就是有n个魔镜,小A每天都会问镜子,每个镜子说小A美丽的概率为p[i]。如果这个镜子说自己很美,那么下一天会问下一个镜子,如果没有下一个镜子了,那么这一天小A就很开心并且就停止了。如果说小A不美,那么小A下一天会从第一个镜子重新问。问你小A停止的时候天数的期望是多少。多多思考,掌握本质。...原创 2022-08-10 18:04:50 · 200 阅读 · 0 评论 -
CFdiv2-Common Number-(奇偶数二分+规律)
就是给你一个函数f(x) = x/2(如果x是偶数),f(x) = x-1(如果x是奇数且不为1)。定义path(15) = [15,14,7,6,3,2,1]。也就是他会走的数字直到为1。然后给你一个k,问你哪个数字在>=k个不同的path中出现过,如果有多个,输出最大的那个数。多多思考,画图模拟模拟。...原创 2022-08-10 15:21:43 · 246 阅读 · 0 评论 -
杭电多校-Loop-(不确定性贪心+线段树)
然后我就可以从前往后遍历最大值的序列,如果我扔掉的序列的数大于当前遍历的数,那么我就可以先放这个仍的数,因为每次我都往后仍嘛,我就让它扔在这。我就可以在s[maxn]找到第一个>=i的位置,为啥是第一个,因为我处理第一个就够了,剩下的k留给后面的。要先输出当前固定序列的值,因为扔掉的数最大值就那么大了,但是固定序列的最大值后面可能还会更大呢,所以这里是个细节。应该仍在靠前的地方,其实不会,因为第一次你去的是[1,k+1]的最大值,那么这个你仍的数肯定不会出现在前面。,这个题目也是用的这种操作。...原创 2022-08-09 23:25:32 · 171 阅读 · 0 评论 -
杭电多校-Counting Stickmen-(思维+组合数+容斥)
n,任选两个其实是选这个点以及他后面的,不能再看前面的了,这样就重复了,既然是看后面的,就维护一个后缀和倒着处理就好了),然后不能选a子树作为手臂的情况就是 = 总方案数-选a子树作为手臂的方案数。说到这里,我就感觉差不多了,就是这样的。然后思考了一下,如果我遍历树的时候,枚举到now点了,那么我可以让now当脖子,now父亲当头,然后从儿子里选取两个子树作为手臂再选一个子树作为身子就可以了。红色标注的就是的,就是2是头,3是脖子,5是身体,7和8是两个腿,4 6是其中一个手,9 10是另一个手。.....原创 2022-08-09 15:21:05 · 515 阅读 · 0 评论 -
CFdiv2-Tournament Countdown-(思维+交互题套路)
然后你每次可以询问a和b,他俩谁赢的多,如果返回1a多,2b多,0一样多。只要想到这,题目就好处理了,既然是3场比赛,那么就是4个人,所以4个4个的看。刚开始没啥感觉,刚开始我想先把一半用暴力求出来,这样是n/2次查询,但是另一半怎么凑呢,如果n/4也不行,所以就不行了。如果1=3,那么1和3都是输掉的,因为如果他俩都是胜者,那么晋级后肯定要有一个比较大。所以再比较晋级的2和4就可以了。如果1>3,那么1肯定晋级,再查询1和4,比较一下就可以了。如果1...原创 2022-08-07 13:04:54 · 419 阅读 · 0 评论 -
牛客多校-Z-Game on grid-(博弈论+必胜态必败态转移)
4.但是推了推,我感觉就看看走到(i,j)之后,下一步该谁走,如果该Alice走,她肯定走自己的必胜态,如果Bob走,他肯定也走自己的必胜态。如果每个人都走不了必胜,那么就走平局,如果没有平局,那么这个点对他而言是必败态的点。由于每次只能往右边或者下边走,我想处理(i,j)的时候,要保证(i+1,j),(i,j+1)都要处理出来,所以我就想到了从后往前推,先把最后一行处理出来,最后一列处理出来,然后倒着处理就行了,这样每次处理(i,j)的时候,(i+1,j),(i,j+1)都处理出来了。......原创 2022-08-06 20:48:49 · 236 阅读 · 0 评论 -
牛客多校-Eezie and Pie-(倍增+树上差分)
当时写的时候写顺手了,直接当数组用了。由于是对每个点都输出答案,我就总感觉是树上启发式,但是好久没用了,有些淡忘,但是我看了看以前做过的启发式的题,感觉这题不能用启发式啊,因为每个点他所作的贡献并不是全局的,他做的贡献还要和祖宗节点比一下大小,如果保质期够大才行,但是启发式合并不行,因为你要保证每个点的贡献在不同的子树上是一样的才行。给你一个树,根节点为1,然后每个点可以做蛋糕,但是只能送到从根节点到这个点的最简路径上的点,也就是1到当前点这条链上的点。多多思考,仔细检查,认真仔细,别慌,不用急。...原创 2022-08-06 20:24:33 · 198 阅读 · 0 评论 -
杭电多校-Planar graph-(最大生成树+图树关系)
因为要让答案的边最少字典序最小,那么生成树就应该是最大的生成树。既然字典序最小,那么就让编号从大到小排序,尽量让编号大的留下,这样剩下的就是小的。3.然后又突然想到,并查集也经常和环挂边,然后我就想到如果两个点已经联通了,加上这条边肯定是环,所以不要这条边就好了。题目又说,让字典序最大,那么删的时候就要确定是删这个,要不然就不好想了。然后也想了想生成树,但是每个边左右的区域不好编号呀,感觉这怎么求最小生成树呢?2.过了一会zc说就不能有环,那么确实很明显这个图不能有环,就去删边去掉环就行,但是怎么去掉?..原创 2022-08-05 19:51:26 · 238 阅读 · 0 评论 -
杭电多校-Shinobu loves trip-(预处理+同余定理)
预处理出来,每个旅行计划的起点也要预处理,因为每次求n个数的逆元的话复杂度也很高。还要注意特判的就是如果某个计划的起点是0的话,看看x是不是0。%p = x%p,这个式子,但是一想每次都跑一遍的话复杂度太高了。其实根本不用想那么多,就是一直乘a,看看能到达的城市是多少就行了。就是有p个城市,编号0~p-1。然后有n个旅行计划,每个旅行计划有个初始点,和旅行的天数。然后小A旅行的的点顺序是,每次乘以a,当然同时对p取模。1.观察到查询次数和旅行计划很少,应该是查询的时候,枚举每个旅行计划看看是否可以。...原创 2022-08-05 16:32:20 · 199 阅读 · 0 评论 -
CFdiv2-Chip Move-(线性dp+状态枚举方式)
就是dp[i][j]直接从dp[i-j][j]转移过来,因为在i-j之前往后跳,方案都是一样的,我直接从dp[i-j][j]跳步到i这里。因为dp[i-j][j],只是从i-j之前的dp[t][j-1]转移过来的。所以加上这个方案就好了,那么就是dp[i][j] = dp[i-j][j]+dp[i-j][j-1]。就是有n个点,初始在0点,每次你可以跳跃一个长度,但是第一次的长度是k的倍数,第二次是k+1的倍数…转移的话,肯定是从前面中dp[t][j-1]转移过来的,t和i的距离是j的倍数就行。...原创 2022-08-05 12:24:18 · 878 阅读 · 0 评论 -
杭电多校-Slipper-(树图转化+虚点建图)
当时我虚点建边的时候建立错了,傻逼了,就跑的很慢。2.那么既然感觉树上dp不能做,还求A到B的最短距离,这不就可以建图然后跑最短路。到这里其实就简单了,建图就是建立可以跳跃的哪些点之间要建好图。那么可以先把每个深度的点维护出来,那么深度为a的到深度为a+k的进行建边,如果暴力枚举点点建边这是n。然后小A可以使用任意次魔法,使用一次魔法可以使得深度差为k的两个点可以互相传送,花费为m。感觉应该是个难题,但是后来过的很多,那么就不是难题了。其实可以建立一个虚点,然后a的点集连虚点,右边的点集连虚点。......原创 2022-08-03 14:29:23 · 205 阅读 · 2 评论 -
CFdiv2-The Number of Imposters-(两种点集图上染色问题总结)
D题意:就是给你n个人,和m句话。每句话是a说b是好人或者坏人。问你这些人中最多有多少坏人。当然如果这m句话有错误出现驳论那么就输出-1。思考:1.这是很久之前做的题了。有两种做法,种类并查集和两种点集图上染色。这里就整理第二种做法。首先,这些人可以很明显的去合并和分类,意思就是,a说b是好人,那么a和b就在一类,如果不是好人,那么就不在一类。2.那么可以对a和b建边,权值为1的时候代表a和b是一类,权值为0的时候代表a和b不是一类。建立完边后呢?那么一个连通块的人,只要确定了一个人的身份,剩下的身份原创 2022-08-01 21:58:54 · 239 阅读 · 0 评论 -
洛谷-线段覆盖-(区间排序问题总结)
8.对于按左端点排序,从前往后遍历,枚举到第i个的时候,这个点如果被前面的包含了那就包含了,如果没有,那么这个点也不一定选,因为他还可能被后面的包含,所以就没法贪心了。1.如果dp做多了,想定义dp[i]为到第i个会议,最多可以选的会议个数,要么当前不选,要么选从一个不冲突的来转移,但是这样复杂度n*log(n),因为你找转移点的时候要二分找出最近的r.........原创 2022-07-26 17:47:36 · 549 阅读 · 0 评论 -
ABC-Find 4-cycle(鸽巢定理)
k*k,这肯定不行。但是仔细思考一下,不会枚举那么多次,比如第一个点包含k/2个点,第二个点包含不同的k/2个点,第三个点如果包含的点>=3那么肯定有两个也被别人包含了,这里就是鸽巢定理。就是给你n+k个点和m条边,每条边的两个点一个点n,没有重边。所以就是一些感觉复杂度做不了的题目,可以去试试,因为没有别的什么算法的时候一般就是暴力,这个暴力看起来像暴力实际上,如果加上一些细节操作或者什么的时候往往不会跑那么多次。首先边的两个点肯定是两个点集里面的,画一下图发现,对于一个点集中的两个点。...原创 2022-07-18 21:21:00 · 157 阅读 · 0 评论 -
ABC-At Least One-(预处理+树状数组)
求这个可以O(n),因为每次只走一个,也就是左端点加1,那么右端点看看到底要到哪。到哪可以根据删去i这个点,看看i这个点包含多少点的左端点,那么这个卡牌的左端点没了,那么只能要右端点。如果一个卡牌的右端点也小于当前的i,那么后面的都不合法了,也就是有一个卡牌不满足。对于比如l,r这段区间可以,那么就让(r-l+1,m-l+1)这些f的答案加1。定义f(i)为,长度为i且连续的一段子序列,然后有多少给这样的子序列是好序列,好序列的概念就是,对于任意一张卡片,卡片上至少有一个数字在这个序列中。...原创 2022-07-17 22:24:50 · 141 阅读 · 0 评论 -
UPC-Cards-(并查集+线性dp)
题意:给你n个卡牌,每个卡牌正面和反面分别有一个数, 所有卡牌正面组成的数字是个全排列。反面组成的数字也是全排列。现在让你选择其中一些卡牌,使得每个数字至少出现过一次。问你方案数。...原创 2022-07-14 21:33:50 · 148 阅读 · 0 评论