思维
weixin_44019404
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round #668 (Div. 2) E
E - Fixed Point Removal每一个数字,能够被删除,当且仅当满足:posi−ai−x<=0pos_i-a_i-x<=0posi−ai−x<=0其中x是他之前已经被删掉的数字的个数。(因为我们总可以在posi−ai−x==0pos_i-a_i-x==0posi−ai−x==0的时候,将该数字删除,所以小于等于0的时候一定满足。)令a[i]=i−a[i]a[i]=i-a[i]a[i]=i−a[i]。(这个时候的a[i]a[i]a[i]就表示成,若他自己能被删除的话原创 2020-09-10 19:40:44 · 123 阅读 · 0 评论 -
Educational Codeforces Round 93 (Rated for Div. 2)
A - Bad Triangle最小的两边和小于等于最大的边,那么就一定不会存在这个三角形。否则,一定存在。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include&l原创 2020-09-02 22:22:03 · 165 阅读 · 0 评论 -
Codeforces Round #660 (Div. 2)
A首先前三个符合题意的数字是 666 101010 141414(2∗3,2∗5,2∗7)(2*3 ,2*5,2*7)(2∗3,2∗5,2∗7)那么最小的数字一定需要大于30,因为n必须由正整数组成。所以我们可以一开始放置666 101010 141414三个数字,然后再使用n-30即可。注意因为数字不能相同,所以需要判断一下,有相同的数字的话将14换成15。因为10−6=4,14−10=410-6=4,14-10=410−6=4,14−10=4故某一个数字增大了1,那么不可能再有相等的数字存在。原创 2020-07-31 15:14:59 · 148 阅读 · 0 评论 -
广州大学第十四届ACM大学生程序设计竞赛 J 登顶
当前我们执行到第iii位置的时候,我们以iii结尾的字串,一共有iii个。分别是[1,i],[2,i],[3,i]..[i,i][1,i],[2,i],[3,i]..[i,i][1,i],[2,i],[3,i]..[i,i]然后令单调栈mx,mnmx,mnmx,mn保存最大值和最小值。我们可以发现的是,以某一个点为终点后,每一个最大/小值是向前作用的。并且具有单调性,即,[j,i][j,i][j,i]的最大值是kkk,那么[1,j−1][1,j-1][1,j−1]的最大值就不会小于kkk。所以利用单调栈保原创 2020-07-29 00:21:51 · 314 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场)J Just Shuffle
首先通过第k个,我们可以发现置换规则。可以发现每一个环和他的长度。然后思考怎么通过第k个,找到第一个。对于每一个环而言,他转动k次的效果等于k%len(len是环的长度)记为t(t<=len),现在从t出发,还原到第一次转动。可以考虑成再模len的意义下,t∗t−1t*t^{-1}t∗t−1=1,即t关于len的逆元。于是求出逆元,再转动一次即可。#include<iostream>#include<cstring>#include<algorithm>#原创 2020-07-15 15:32:18 · 166 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场) C Cover the Tree
假设叶子节点是L个。首先可以证明下界是L+12\frac{L+1}{2}2L+1。所以我们先把叶子节点抽出来,然后通过dfs序排序好。记为[1,L][1,L][1,L]然后连接[i,i+L2](i<=L2)[i,i+\frac{L}{2}](i<=\frac{L}{2})[i,i+2L](i<=2L)我们假设有一颗子树,他的叶子节点编号是[l,r][l,r][l,r],假设r<L/2r<L/2r<L/2那么该子树到根节点的链,肯定会被[l,l+L2][l,l+原创 2020-07-15 15:20:12 · 178 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场) F Fake Maxpooling
这个题目本质是求,加入给一个长度为n的区间,求区间内,长度为k内的最大值是多少。因为题目时间限制,不能直接用线段树等。于是关于最大值我们思考到了单调栈。但是单调栈只能处理区间[0,r]的最大值。所以我们还需要移动左指针,保证区间长度是k。故使用双端队列。队列中单调递减。队头保证在区间[r-k+1,r]中,队尾保证单调性正确。每一次取队头元素即可。所以这道题我们预处理,先预处理n行,每一行中每一个点的区间最大值是多少,再计算每一列中,最大值是多少(使用行的最大值,这样只有k个)。#include<原创 2020-07-15 15:12:52 · 119 阅读 · 0 评论 -
2020牛客暑期多校训练营(第一场)A B-Suffix Array
首先是题解的做法#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<queue>#include<set>#include<bit原创 2020-07-15 15:07:30 · 225 阅读 · 1 评论 -
第七天打卡 Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
A题:找出有多少个每一个位置上数字都相同的数。模拟即可。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#in...原创 2019-12-17 09:18:39 · 123 阅读 · 0 评论 -
打卡第四天 Codeforces Round #604 (Div. 2)(掉分了,d题差一点,难过)
A:题意:给一串字符串以abc和?组成,要求将?替换成abc,使得这个字符串相邻两个字母不等。暴力模拟。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#...原创 2019-12-08 10:47:02 · 220 阅读 · 0 评论 -
第三天打卡 Educational Codeforces Round 73 (Rated for Div. 2)
A:题意:给一串数列,两个相等能够合并,问是否能凑成2048从211开始,往下遍历,每一次如果有数字,那么*=2,看最后加和是否大于等于需要的即可#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#inc...原创 2019-12-08 10:35:31 · 111 阅读 · 0 评论 -
第一天打卡 Codeforces Round #569 (Div. 2)
为了能早日上紫名,特此开一个记录我每天刷题记录的。除了每日专题以外,每天一套cf,开着虚拟参赛做。A水题#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>...原创 2019-12-03 21:50:09 · 166 阅读 · 0 评论 -
dp专题 cf 4D
题意:给一个长方形大小,现在有n个高宽确定的长方形,要求组成序列,满足:1.宽严格单调递增而高严格单调递增 2.组成序列的最小的长方形要比给定的长方形大。问最长序列及其编号。有点类似于lis,我们为了方便打印结果所以选择n平方的dp算法。令dp[i]为以i结尾的最长上升序列大小,那么dp[i]=max(dp[i],dp[j]+1|dp[j]<dp[i])即当前dp能被所有小于他的转移...原创 2019-10-01 10:23:02 · 194 阅读 · 0 评论 -
Codeforces Round #585 (Div. 2)
A:水题B:当时没有想到题解给出来的方法,写了一个简单dp交上去,炸了一次int。题意:给出一个序列,求有多少个区间,乘积为正数和负数。令dp[i][0/1]表示,以i结尾的区间,有多少个正(0)或者负(1)的区间。如果ai>0,那么上一个i-1的正数区间乘以ai还是正数,所以dp[i][0]+=dp[i-1[0]+1,负数区间不变。同理负数。最后累加和即可 #inclu...原创 2019-09-29 14:54:01 · 134 阅读 · 0 评论 -
cf 567c 思维
题意:要求计算出一个长为n的序列中,长度为3的子序列且这个子序列能构成公比为k的等比数列的总个数。假设某一个等比以p结尾,那么他的贡献,就来自于,p/k,p/k/k,那么如何同届呢。我们可以发现,以p结尾的子序列,贡献和为,在第一个p/k前面有多少个p/k/k,第二个p/k前面有多少个p/k/k,。。。。。以此类推。 #include<iostream> #inclu...原创 2019-09-25 19:40:28 · 174 阅读 · 0 评论
分享