![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维 或者 贡献
文章平均质量分 56
思维
*DDL_GzmBlog
再见锋芒,准备启程
展开
-
[cf] 805 div3 F. Equate Multisets
tag:tag :tag: 传送门 :题意 :给定两个数组A[1....N]A[1....N]A[1....N],B[1...N]B[1...N]B[1...N]询问是否可以通过有限次操作使得B=AB=AB=A操作定义如下 :选中一个iii使得思路 :看到/2/2/2这种操作,我们需要联想到二进制我们发现B[i]∗2B[i]*2B[i]∗2相当于在二进制后面加了个0而对于第二个操作,就是相当于删除了二进制最后一位而对于B[i]∗2B[i]*2B[i]∗2我们可以看成A[i]/2A[i]/2A[i原创 2022-07-12 17:16:25 · 523 阅读 · 0 评论 -
[牛客] B-完全平方数
tag:tag :tag: 题意 :思路 :l≤x≤rl\le x \le rl≤x≤rl≤x≤r\sqrt l \le \sqrt x \le \sqrt rl≤x≤r又因为l,r≤109l,r\le10^9l,r≤109因此我们可以预处理出x\sqrt xx数组最后通过二分确定开方区间,开方区间的大小就是答案code :...原创 2022-07-05 23:30:30 · 404 阅读 · 0 评论 -
[Acwing] 58周赛 4490. 染色
周六的时候忙,听说这题挺难的,什么没见过的dp结果感觉难度 C< Btag:tag :tag: 传送门 :题意 :给定一棵树和每个节点需要的颜色,你可以进行多次操作,询问最少的操作使得每个节点的颜色温和操作定义如下 :选择一个节点 v 和一种颜色 x。将以节点 v 为根节点的子树中的全部节点(包括节点 v)都染成颜色 x。思路 :看完操作,很明显的就提示你了,是 自下而上的进行 dfsdfsdfs然后我们再考虑怎么进行染色,显然我们可以贪心的考虑, 如果子树和本身颜色不同,显然是需要染色的反之原创 2022-07-04 12:09:42 · 324 阅读 · 0 评论 -
[Acwing] 58周赛 4489. 最长子序列
tag:tag :tag: 传送门 :题意 :给定一个 上升 的数组,求一个子序列使得子序列中的元素满足aj∗2≥aj+1a_j*2\ge a_{j+1}aj∗2≥aj+1,询问合法子序列的最大长度思路 :因为给出的数组是 上升的因此如果a1∗2≥a3a_1*2\ge a_3a1∗2≥a3存在,那么必然存在a1∗2≥a2a_1 *2\ge a_2a1∗2≥a2则这个条件使得所求答案 连续, 因此我们只需要OnOnOn的扫一遍即可code :...原创 2022-07-04 11:51:08 · 341 阅读 · 0 评论 -
[cf] 803 div2 B. Rising Sand
tag:tag :tag: 传送门 :给定一个数组AAA,对于A[i]>A[i−1]+A[i+1]A[i]>A[i-1]+A[i+1]A[i]>A[i−1]+A[i+1],我们定义为过高,同时给定一个kkk,你可以让区间长度为kkk的A[i]+1A[i]+1A[i]+1,询问执行任意次操作止之后可以获得最大的过高的堆数因为答案的计算是A[i]>A[i−1]+A[i+1]A[i]>A[i-1]+A[i+1]A[i]>A[i−1]+A[i+1]因此我们发现k≥2k\ge2k≥2的时候,十分难改变或者十分难原创 2022-06-29 10:26:07 · 178 阅读 · 0 评论 -
[cf] 799 div4 G. 2^Sort
tag:tag :tag: 传送门 :题意 :给定n,kn,kn,k,同时给定一个数组a[N]a[N]a[N] , 询问数组中有多少个连续字段满足20ai原创 2022-06-16 15:44:59 · 163 阅读 · 0 评论 -
[nk] 牛客月赛51 G计算题
tag:tag :tag: 传送门 :题意 :你有一个长度为nnn的字符串,你可以选择删除一段后缀(可以为空),然后修改剩余串中的一个字符,使其变成回文串。请问最后能生成多少种可能的回文串。需要保证整个过程中的字符集仅包含小写字母。其中修改操作必须修改,但可将字符修改为原字符。思路 :我们可以将剩余字符串分为三类本身就是回文,差两个回文,差很多回文对于本身就是回文的如果是奇数长度那么贡献+26+26+26,否则贡献+1+1+1对于差一个回文的因为奇数中间必然不可能非回文的,所以奇数==偶数原创 2022-06-10 17:17:34 · 98 阅读 · 0 评论 -
[cf] 797 div3 E. Price Maximization
传送门 :题意 :给定nnn个包裹,两两包裹合并,其价值为两数之和除k,求合并所有包裹后得到的最大价值思路 :先考虑不合并,那么每个包裹提供的价值就是a[i]/ka[i]/ka[i]/k然后我们贪心的考虑合并,对这些包裹取余将其装到桶的,双指针的找到 能匹配的 和 自己和自己的code :...原创 2022-06-09 18:33:06 · 208 阅读 · 0 评论 -
[cf] 797 div3 D.Black and White Stripe
传送门 :题意 :给定一个只含有BWBWBW的字符串,询问最少修改多少次,使得至少有一段连续的BBB至少是KKK个思路 :我们设WWW的贡献是111,对字符串计算一次 前缀贡献,我们贪心的只取KKK个连续的最小代价即可code :...原创 2022-06-09 17:37:41 · 334 阅读 · 0 评论 -
[Acwing] 第54场周赛 4429.无线网络
tag:tag :tag: 传送门 :题意 :给定nnn个那奶牛和两个基站,询问两个基站的r1r1r1,r2r2r2覆盖半径在覆盖所有奶牛的情况下,他们的r12+r22r_1^2+r_2^2r12+r22最小值是多少思路 :显然的,如果我们固定出r1r_1r1那么r2r_2r2 也是固定的同时又因为数据范围n≤2000n\le 2000n≤2000,因此我们考虑枚举r1r_1r1,因为r1r_1r1可以等于000所以r1∈{0,Disi=1n(奶牛,基站1)}r1\in\{0,Dis_原创 2022-06-05 10:57:08 · 82 阅读 · 0 评论 -
[cf] 752 div2 C. Di-visible Confusion
前言tag:tag:tag:思维 作用域 *1300传送门 :题意 :给定你一个数组,询问是否可以通过操作使得数组变为空操作定义如下 :如果a[i]%(i+1)!=0a[i]\%(i+1)!=0a[i]%(i+1)!=0那么我们可以移除a[i]a[i]a[i]思路 :我们考虑aia_iai当且仅当ai%(i+1)!=0a_i\%(i+1)!=0ai%(i+1)!=0时,我们可以进行交换但是又因为我们可以通过删除前面的一些数,令i−−i--i−−因此aia_iai的操作作用域是2&l原创 2022-05-28 17:29:56 · 91 阅读 · 0 评论 -
[cf] 746 div2 B. Hemose Shopping
前言tag:tag :tag:限制交换 数学分析 排序 *1200 逆向思维传送门 :题意 :给定你一个数组和一个限制xxx,询问是否可以通过有限次操作使得数组变为非降序操作 :选择任意两个下标i,ji,ji,j当且仅当∣i−j∣>=x|i-j|>=x∣i−j∣>=x的时候才可以进行交换思路 :本题还可以使用数学归纳法进行证明分析,奈何数学不好我们对原数组进行一次复制,然后将复制数组进行排序显然排序后的数组 和 原数组 不相同的地方都是需要进行交换的我们可以反过原创 2022-05-27 17:55:40 · 106 阅读 · 0 评论 -
[cf] 746 div2 C. Bakry and Partitioning
前言Tag:Tag:Tag:异或 树 dfs *1700传送门 :题意 :给定一棵树,你可以删除最少111,对多k−1k-1k−1 条边,询问是否可以使得删除边之后,每个连通分量中的异或和相等思路 :考虑删除一条边(k=2k=2k=2)的情况ax⊕(a1⊕a2....an)=0a_x \oplus(a_1\oplus a_2....a_n)=0ax⊕(a1⊕a2....an)=0也就是a1⊕a2⊕a3.....an=sum=0a_1\oplus a_2\oplus a_3.....a原创 2022-05-27 17:44:34 · 95 阅读 · 0 评论 -
[cf] Codeforces Round #595 (Div. 3) B12 Books Exchange
前言tag:tag :tag:*1300 交换 思维 环 经典好题传送门 :题意 :多组数据,每个人手上都有一本书,对于每个a[i]a[i]a[i]表示将该书传给a[i]a[i]a[i]个人。输出每个人需要多少次才可以拿到自己的书思路 :首先这种交换问题有很多变式,同时也非常经典,因为最终都是回到本身因此不难发现 , 如果把交换过程进行连线, 那么能交换的 必然成一个环然而环中每个数再次轮到本身就是环的大小因为每个环都只是遍历一次,环中的节点也只遍历一次,所以时间复杂度O(T∗n)O(T*原创 2022-05-25 14:19:23 · 73 阅读 · 0 评论 -
[Acwing] 第16场周赛 B.3956. 截断数组
前言tag:tag :tag: 前缀和 二分 思维传送门 :题意给定一个数组a[]a[]a[],长度nnn询问有多少种方法,可以使得数组均分成三份数据范围 n∈[1,105]n\in[1,10^5]n∈[1,105]思路根据数据范围,显然是要控制在nlognnlognnlogn以下的对于这种题,一开始就想到的是二分,但是如果对和进行二分的话,会发现不满足单调性,因为a[i]<0a[i]<0a[i]<0的情况存在因此不妨换一个方向进行二分首先我们可以出来sum[i]=原创 2022-05-04 18:56:06 · 488 阅读 · 0 评论 -
[cf]Codeforces Round #527 (Div. 3) D1 Great Vova Wall (Version 1)
前言tag:tag :tag: 思维 难题 数据结构 *2200传送门 :题意给定一个长度为nnn的围墙,围墙第iii位置有a[i]a[i]a[i]的高度你可以放置一个2∗12*12∗1的砖块,横竖 都可以摆放,询问是否可以将墙统一高度(放置的砖不可以超出1,n1,n1,n)换句话说就是 , 给定一个长度为nnn的数组a[]a[]a[]你可以让连续两个元素+1+1+1或者让一个元素+2+2+2,询问a[]a[]a[]是否可能 相等思路分析操作的性质对于+2+2+2,他会改变当前数原创 2022-05-04 18:11:28 · 171 阅读 · 0 评论 -
[Acwing | 蓝桥 ] 2868. 子串分值 贡献思想
前言传送门 :思路结论 : 当前 字符 在该子串中的贡献为 (i−pre[i])∗(nxt[i]−i)(i-pre[i])*(nxt[i]-i)(i−pre[i])∗(nxt[i]−i)解释 :对于当前 以iii开头的子串,最多可以构造出(nxt[i]−i)(nxt[i] - i)(nxt[i]−i)的串例如 :2,3,4,52,3,4,52,3,4,5当前i=2,nxt[i]=5i=2,nxt[i]=5i=2,nxt[i]=5则可以构造出5−2=35-2=35−2=3个子串2222,3原创 2022-04-08 19:23:11 · 234 阅读 · 0 评论 -
[Acwing] AcWing 1683. 困牛放牧 分类讨论
前言传送门 :题解因为贪心WA了一发,所以考虑分类讨论如果本来都是相邻的 那么肯定 不管最长还是最短都是 0考虑最短 :如果两头牛相差111,显然我们一步就可以插到中间否则需要两步考虑最长 :显然两头奶牛相邻差的最大值−1-1−1就是Mycodevoid solve(){ cin>>a[1]>>a[2]>>a[3]; sort(a+1,a+4); if(a[2] - a[1] == a[3] - a[2] &&原创 2022-03-25 21:14:04 · 536 阅读 · 0 评论 -
[Acwing]3745. 牛的学术圈 I
前言传送门 :思路读完题之后可以知道的是 1<=h<=n1<=h <=n1<=h<=n因为我们可以遍历每一个i=ni = ni=n 判断是否可行那么条件是什么呢 ?显然如果我们从小到大枚举的话,贪心的情况下,小的hhh应该都要收入囊中的因此对于每一个合法的iii,我们都令(n−cnt[i])//cnt为i的出现次数(n-cnt[i])//cnt为i的出现次数(n−cnt[i])//cnt为i的出现次数如果当前的n+cnt[i]<=in+cnt[i原创 2022-03-16 22:34:10 · 539 阅读 · 0 评论