![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
思维题
文章平均质量分 75
思维题
黑夜和白天
过去无可挽回,未来可以改变
展开
-
分类讨论 ---- 2021 icpc 沈阳 L Linear Fractional Transformation (思维题)
题目链接题目大意给你一个线性变换函数f(z)=az+bcz+df(z)=\frac{az+b}{cz+d}f(z)=cz+daz+b,现在把取值范围扩展到复数域。给你3个等式f(z1)=w1f(z_1)=w_1f(z1)=w1f(z2)=w2f(z_2)=w_2f(z2)=w2f(z3)=w3f(z_3)=w_3f(z3)=w3问你f(z0)f(z_0)f(z0)是多少?解题思路:题目有个很有意思的地方就是它保证了解是唯一的!!现在有3个等式只能确定3个变量,那么对于第原创 2021-11-25 10:20:42 · 995 阅读 · 0 评论 -
分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)
题目链接题目大意:就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少?解题思路:大佬有直接二分的做法。我就想分类讨论出来qwq首先我们知道肯定两个人最多相遇一次那么我们可以分类讨论两个人开始的时候出发的方向:两个人一个相向而行1.1 两个人相遇之后,是否改变方向?两个人同向而行2.1 同时向左2.1.1 右边的那个人何时调头2.2 同时向右2.2.1 左边的人何时调头两个人原创 2021-11-22 16:55:15 · 577 阅读 · 0 评论 -
容斥 + 爆搜打表 ---- 2020年南京icpc H.Harmonious Rectangle
题目链接题目大意:就是给你一个二维平面{(x,y)∣1≤x≤n,1≤y≤m}\{(x,y)|1\leq x\leq n,1\leq y \leq m\}{(x,y)∣1≤x≤n,1≤y≤m},你现在有3种颜色,你可以给写平面的点涂上颜色,问你至少存在4个点(x1,y1),(x2,y2),(x1,y2),(x2,y1)(x1,y1),(x2,y2),(x1,y2),(x2,y1)(x1,y1),(x2,y2),(x1,y2),(x2,y1)使得color(x1,y1)=color(x1,y2)&原创 2021-11-12 16:31:24 · 642 阅读 · 0 评论 -
贪心 ---- 贪心 + STL维护 + 划分集合 L. Neo-Robin Hood(好题)
题目链接题目大意:题意:你是劫富济自己的罗宾汉,有n个富人,第i个人有m[i]元财富,收买他需要p[i]元。对每个人你都可以选择1.抢他,你获得m[i]元,2.不对他进行操作,3.花p[i]元收买他,他为你开脱你的一件抢劫罪行。你有一个奇怪的目标:抢的人数越多越好,但是你的每一个罪行都必须被开脱。翻译一下就是抢k个人,收买另外k个人,抢来的钱要足够收买的花费,最大化的k。解题思路:首先我们发现如果j<kj<kj<k并且kkk是合法的话那么jjj肯定是可以的那么这样子就答案原创 2021-10-06 23:51:47 · 309 阅读 · 0 评论 -
贪心 ---- Codeforces Global Round 8,B. Codeforces Subsequences[贪心,贪的乘法原理]
题目链接给出字符串,统计子串(子串字母可以跳跃)是codeforces的数量。本题要求,给出子串最少数量k,构造字符串s,要求字符串s包含的字母数量最少,输出这个最少的字符串s.题目要求是至少有k个:我们一直想将k分解质因子转化为乘法原理qwq,但是k太大了qwq,贪心确实难啊!贪心题出的多了思维强度还是没跟上来我们其实可以是一个位置一个位置的逐渐增加的1codeforces有1个子串codeforces 2ccodeforces有2个子串codeforces 3ccoo原创 2020-06-27 09:08:48 · 109 阅读 · 0 评论 -
贪心 ---- Educational Codeforces Round 90 (Rated for Div. 2)E. Sum of Digits[数位贡献+思维题+贪心]
题目链接题目大意:就是给你nnn和kkk然后再定义一个函数f(x)是十进制数x各个位数之和f(x)是十进制数x各个位数之和f(x)是十进制数x各个位数之和叫你求出最小的x使得f(x)+f(x+1)+...+f(x+k)=n∣k∈[0,9],n∈[1,150]叫你求出最小的x使得f(x)+f(x+1)+...+f(x+k)=n|k\in[0,9],n\in[1,150]叫你求出最小的x使得f(x)+f(x+1)+...+f(x+k)=n∣k∈[0,9],n∈[1,150]解题思路:首先我们发现两个规原创 2020-06-26 22:09:25 · 121 阅读 · 0 评论 -
贪心 ---- Codeforces Round #618 (Div. 2)B. Assigning to Classes+贪心[证明过程]
题目链接题目大意:给你2∗n2*n2∗n个数,将这些数分成2个集合使得两个集合中位数的差值最小解题思路:我懵了一个结论就是排序之后取中间的两个数然后就ac了我们先对这些数字从小到大排序证明:1.首先我们枚举每一个数aia_iai,如果这个数是中位数那么剩下的数一定是在它左右两端去取,并且左右两端的取的数的个数要相同。2.假设i∈[1,n]i\in[1,n]i∈[1,n],那么第二个集合的中位数一定是在j∈[n+1,2∗n]j\in[n+1,2*n]j∈[n+1,2∗n];所以我们要使的差值最原创 2020-07-03 15:55:36 · 95 阅读 · 0 评论 -
贪心 ---- 2020牛客多校第3场[Clam and Fish+贪心]
题目链接解题思路:1.根据贪心的思想肯定是如果是第2或者第3种状态肯定是钓鱼且不需要鱼饵的,如果是在第0种状态有鱼饵肯定也钓鱼,对于第1种状态就是可以钓鱼也可以造鱼饵的状态我们如何考虑2.我们从后面看需要鱼饵钓鱼的有第0和第1种状态如果后面这两种状态的个数大于当前的鱼饵个数那么我们就继续造鱼饵,否则我们就直接钓鱼,因为鱼饵太多留着也没用#include <iostream>#include <cstdio>#include <stack>#include原创 2020-07-20 09:43:18 · 134 阅读 · 0 评论 -
贪心 ---- Educational Codeforces Round 90 (Rated for Div. 2)D Maximum Sum on Even Positions[偶数子段最大和]
题目链接题目大意:给你一个序列你可以选择一个连续的子段将其反转,反转后使得偶数位置上的数字和最大1.很明显我们可以看出反转的字符串的长度一定是偶数的,因为是奇数的话偶数位还是在偶数位不变所以没有用2.对于一个数可以和前面的换,也可以和后面的换3.因为我们只能反转一次那么替换的顺序也是一定那么我们就可以循环两次4.对于每次替换比如说我们可能会增大也会减小,那么我们就可以类似于求最大子段和的求法线性dp,我们可以统计目前反转的收益sum_tmp,如果变成负数了就将sum_tmp变成0#in原创 2020-06-26 17:16:58 · 111 阅读 · 0 评论 -
拆位 ---- C. Johnny and Another Rating Drop[位运算,计算每一位的贡献+推导过程]
C. Johnny and Another Rating Drop题目大意:就是定义一个不公平度就是相邻两个数的二进制位不相同数比如说:100和011就是有3位不同现在给你一个n∈[1,1e18]n\in[1,1e18]n∈[1,1e18]问你从[1,n][1,n][1,n]每一对相邻数的不公平度之和是多少解题思路:000001010011100101我们看一下对于第一位每隔202^020就会从0−>1或者1−>00->1或者1->00−>1或者1−原创 2020-06-07 16:37:06 · 219 阅读 · 0 评论 -
贪心 ---- C. Anu Has a Function位运算+贪心证明
题目链接有一种操作f(x,y)=(x∣y)−yf(x,y)=(x|y)−yf(x,y)=(x∣y)−y,给你一个序列a1,a2,...,an。a1,a2,...,an。a1,a2,...,an。让你改变一下序列a的顺序,让f(f(...f(f(a1,a2),a3),...,an−1),an)f(f(...f(f(a1,a2),a3),...,an−1),an)f(f(...f(f(a1,a2),a3),...,an−1),an)最大。我们看这样一个操作他代表着什么?我们把x,y拆解成二进制,x|原创 2020-07-03 16:17:48 · 178 阅读 · 0 评论 -
贪心 ---- E. Maximum Subsequence Value[位运算]
E. Maximum Subsequence Value题目大意:有点难解释。。建议自己看题。我这里就粗略解释:给定一个数组aaa,要求选出具有最大价值的子序列。假设此子序列的长度为kkk,那么最大价值的计算方法为:对于这个序列中的所有数的二进制表示,第 i (从0开始)位上是1的数的数量若大于等max(k−2,1)max(k - 2, 1)max(k−2,1),那么价值就可以 += 2i2^i2i。(还没理解的可以看看样例解释)。解题思路:我们贪心来看:2k>20+21+....+2k−12原创 2020-06-09 14:54:38 · 321 阅读 · 0 评论 -
贪心 双指针----Codeforces Round #727 (Div.2) D. PriceFixed
题目链接题目大意:市场上有 nnn 种商品,每种商品的价格都是 222 。现在你需要买第 iii 种商品 a[i]a [ i ]a[i] 件。但是对于第 iii 种商品有一个属性 bbb ,意味着如果你已经买了 bbb 件商品(不一定是这一种商品),那么此商品打折,价格会降到 111 。你需要最小化你的代价。解题思路:首先看数据范围因为ai∈[1,1014],bi∈[1,1014]a_i\in[1,10^{14}],b_i\in[1,10^{14}]ai∈[1,1014],bi∈原创 2021-07-15 13:31:52 · 172 阅读 · 0 评论 -
差分 ---- Codeforces Round #672 (Div. 2):C2. Pokémon Army (hard version)[差分的思想]
题目链接题目大意:就算给你一序列,按照顺序出若干个数组成一个的序列,然后对这个序列定义一个权值就算奇数位置的和减去偶数位置的和,问你能的到的最大的权值是多少?**a1 - a2 + a3 - a4 + a5 … **解题思路:1.就是我们观擦一下:就任意多个ai - aj的组合;最后的就是an - 0;2.我们可以用差分的思想:ai就是差分数组前i位的前缀和,那么ai-aj就是差分数组的区间和,就是贪心挑出任意多个差分大于0的区间求他们的和3.我们发现如果这个区间内部有出现+配-配+但是总的s原创 2020-09-25 18:39:33 · 110 阅读 · 0 评论 -
枚举 ---- B. Power Sequence[Codeforces Round #666 (Div. 2)][暴力]
B. Power Sequence有 n 个数,现在要求将这个数列变成一个等比数列的形式你可以将这 n 个数随意排列或者将任意一个数加一或者减一操作,每次此类操作都要花费 1,问最少花费是多少这题神坑:把快速幂卡了,边界处理不好,快速幂中途爆了long long,可以用pow代替剩下的暴力枚举就可以了#include <iostream>#include <cstdio>#include <stack>#include <sstream>原创 2020-09-12 10:31:54 · 90 阅读 · 0 评论 -
枚举 ---- B. RPG Protagonist[Educational Codeforces Round 94 (Rated for Div. 2)]数学枚举
B. RPG Protagonist题目大意:就是你有两个人,每个人都有一个最大的体力值p和f,这两个人要去搬运剑和盾牌,剑的数量是cnts,盾的数量是cntw,每个剑的重量是是s,每个盾的重量是w,问你最多可以搬运多少武器解题思路:一眼就是一个贪心题但是如何贪心确是一个问题?很显然剑和盾哪个轻就拿哪个为了直观一点,我们可以设出这些自变量了****#include <iostream>#include <cstdio>#include <stack>原创 2020-08-28 19:42:16 · 123 阅读 · 0 评论 -
枚举 ---- D. Zigzags[ Educational Codeforces Round 94 (Rated for Div. 2)]思维枚举优化4重循环
D. Zigzags题目大意:就是给你i<j<k<l并且aj=al&&ai=aki<j<k<l并且a_j=a_l \&\& a_i=a_ki<j<k<l并且aj=al&&ai=ak,求满足(i,j,k,l)的四元组有多少对解题思路:1.很明显我们最暴力的做法是O(n4)O(n^4)O(n4)去枚举,因为题目的数据只有3000,可以预估的复杂度在O(n2)O(n^2)O(n2)左右,那么实际上原创 2020-08-28 17:21:22 · 124 阅读 · 0 评论 -
枚举 ---- Codeforces Round #711 (Div. 2) D. Bananas in a Microwave[枚举暴力+思维优化]
题目链接题目大意:就是你有n次操作,每次操作给你三个参数:ti,xi,yit_i,x_i,y_iti,xi,yi。如果ti==1t_i == 1ti==1你可以进行k=k+xik=k+x_ik=k+xi若干次可以为0但是最大不能超过yiy_iyi;如果ti==2t_i == 2ti==2你可以进行k=k∗xik=k*x_ik=k∗xi若干次可以为0但是最大不能超过yiy_iyi;对于1到m中的数,询问你是否可以通过若干次操作变成这个数,如果可以最小的操作次数是多少?解题思路原创 2021-04-04 15:44:19 · 101 阅读 · 0 评论 -
bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot
题目大意:就是给你一个大小为n∗mn*mn∗m的矩阵,里面有障碍物,每次询问给你一个机器人,以及机器人的起始位置,问你这个机器人能否从起点到终点机器人有3种类型只能往右走只能往下走可以往右走也可以往下走q∈[1,5e5],n,m∈[1,500]q\in[1,5e5],n,m\in[1,500]q∈[1,5e5],n,m∈[1,500]解题思路:首先我们知道这个询问超级多!!我一开始就想到bitset去优化但是,空间开不够!!比赛大概剩半小时的终于想到了正解,但是对bitset的操作原创 2021-08-09 19:44:12 · 126 阅读 · 0 评论 -
置换 ---- 两个置换最少swap次数 E. Permutation Shift
题目链接题目大意:就是将一个长度为nnn的[1,2,3,4,5,6,...,n][1,2,3,4,5,6,...,n][1,2,3,4,5,6,...,n]的数组先向右旋转KKK步,然后在swapswapswap最多mmm次,现在给你最后的结果,问你KKK可能是什么?解题思路:又是一个小技巧1.首先我们知道交换后再旋转,和旋转后再交换是一样的2.对于两个全排列a,ba,ba,b的a−>ba->ba−>b的最小交换次数等于(ai,bi)(a_i,b_i)(ai,bi)连接原创 2021-07-26 10:27:45 · 178 阅读 · 0 评论 -
置换 ---- 2020-2021 ICPC NERC 的 K. King‘s Task[置换类型思维题]
题目链接题目大意:就是给你一个长度为2∗n2*n2∗n的全排列,有两种操作1.就是每次交换p1 andp2,p3andp4....p_1 \ and p_2,p_3 and p_4....p1 andp2,p3andp4....2.就是每次交互p1andpn+1,p2andpn+2p_1 and p_{n+1},p_2 and p_{n+2}p1andpn+1,p2andpn+2问你是否可以通过有限次操作把它排成有序的。解题思路:1.首先我们知道对于一个原创 2021-04-16 15:17:34 · 249 阅读 · 0 评论 -
思维 ---- 两两匹配问题 2021杭电多校第6场 E - Median
题目链接这种两两匹配问题很常见,打比赛的时候想了好久才想起来!,就要特判那个最大的集合,跟其他集合的关系#include <bits/stdc++.h>#define mid ((l + r) >> 1)#define Lson rt << 1, l , mid#define Rson rt << 1|1, mid + 1, r#define ms(a,al) memset(a,al,sizeof(a))#define log2(a) lo原创 2021-08-06 18:54:00 · 272 阅读 · 0 评论 -
思维dp ---- 复杂状态找中间状态作为dp状态 1552F - Telepanting
题目链接题目大意:有个蚂蚁从000号点要到xn+1x_n+1xn+1的位置。在x0,x1,x2,x3,.....,xn+1,xnx_0,x_1,x_2,x_3,.....,x_{n+1},x_nx0,x1,x2,x3,.....,xn+1,xn的传送阵,每个xix_ixi传送阵可以把你传送回yi(yi<xi)y_i(y_i<x_i)yi(yi<xi)位置。但是每个传送阵有两种转态0:0:0:这个传送阵无法传送,但是你经过它会变成状态1111:1:1:这个原创 2021-07-30 10:54:35 · 96 阅读 · 0 评论 -
思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]
题目链接题目大意:就是给你n个平面和一个寿命为k的衰变粒子。开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向。问最终可以产生多少个粒子?解题思路1:手动模拟一下发现,经过平面的反复产生粒子,会有很多复杂的中间情况,那么我们就要化简一下这种情况:1.从原问题j的角度出发:一个寿命为k且要穿过n个平面最终产生的粒子个数?那么我们可以考虑一下dp,设dp[i][j]为寿命为i的粒子要穿过j个平面最终要产生的粒子个原创 2021-04-04 15:24:40 · 81 阅读 · 0 评论 -
构造 ---- 最小没出现过的数(逆向构造) D. Replace by MEX
题目链接题目大意:给你一个aaa序列长度为nnn,每次挑选一个位置pos∈[1,n]pos\in[1,n]pos∈[1,n],把apos=MEX(a)a_{pos}=MEX(a)apos=MEX(a)MEX(a)是a中没出现的最小整数MEX(a)是a中没出现的最小整数MEX(a)是a中没出现的最小整数问你是否可以在2n2n2n次操作把aaa序列变成非递减的序列?解题思路:不得不说它那个每个aia_iai可以相同是很迷惑的其实这道题最终是把aaa变成0,1,2,3,4....,n−2,n原创 2021-07-20 14:40:56 · 89 阅读 · 0 评论 -
GCD or LCM ---- 处理gcd和lcm同时出现的情况 1499D - The Number of Pairs
题目链接题目大意:给你c,d,xc,d,xc,d,x求有多少对a,ba,ba,b,满足下面的式子?c×lcm(a,b)−d×gcd(a,b)=xc \times lcm(a,b)-d\times gcd(a,b)=xc×lcm(a,b)−d×gcd(a,b)=x解题思路:这题目确实很妙啊!!因为lcm(a,b)=a×bgcd(a,b)lcm(a,b)=\frac{a\times b}{gcd(a,b)}lcm(a,b)=gcd(a,b)a×b如果直接代入得话会有gcd(a,b)2gcd(a原创 2021-07-22 12:40:56 · 89 阅读 · 0 评论