- 博客(44)
- 收藏
- 关注
原创 24.9.8(字符串双哈希)
举个栗子,一长为2的链,根节点为a,叶子为b,此时b的深度即dep【b】为2,fa【b】是a,如果输入an,a,将a作为an的儿子,那么fa【a】=an,a的深度变为dep【a】=1,在压缩时,如果写的+1,那么dep【b】=dep【a】+1 =2,就会出错,,所以对深度的处理应为+=dep【fa【x】】思路: 注意读题,题面给了几个关键信息,一是给边形式为a,b且a是b的父亲,代表着不用双边建树,二更为关键,询问的c不会是之前的b,代表着c必定是一棵树的根,因为没当过儿子。补 24牛客多校 四 I。
2024-09-09 10:45:17
757
原创 24.9.1(康托展开)
思路:由平方数考虑到质因子分解,值域1000以内,若存在大于31的质因子,则必定只有一个,且31以内的质数也只有11个,可以状压处理,将所有数分解,若不存在大质数则分解后为1,若存在即为大质数,按此分组,对每组进行转移。最少要往回趟 s次,每次载 l个人,在贪心即每次运输体力最高的人的前提下,所有人 a的总和最少需要 s*l,若一个人的 a大于 s,那么超出的部分没有意义,所以计算总和时 a需要和 s取min,再和 s*l进行比较。补 24牛客多校 二 C。补 24牛客多校 二 I。
2024-09-02 17:32:59
832
原创 24.8.18(线段树维护字符串哈希,警钟长鸣,百度之星打铁)
注意到最后一个数是可以最先得知的,即 a【i】+1,这题样例很好造,多造俩样例再观察下规律,就发现可以给已经填过的数加上1的权值,p【i】 不能一下得到答案,需要枚举check,若枚举到 j,查询在 p【i】后填过多少比 j小的数 (树状数组,a【i】代表在 p【i】前有多少小于等于 j的数 (经过++处理,若加起来后等于 j即满足,那么此数一定就是 j,复杂度感觉有点极限。二分时,如果枚举 i顺着放,冲突关系没有经过排序处理,会导致前面放的很随意,以至于后面遇到无法避免的大冲突,但其实是可以避免的。
2024-08-19 01:59:22
970
原创 24.8.11( O(n)预处理组合数(阶乘,逆元))
现在盒子数变为了 m+1个,前 m个要求每个的球数>=a【i】,最后一个可为空,我们可以把对球的数量的要求全部转换为基本情况,也就是至少一个,对于 >=a【i】的,将要求和总球数都减去 a【i】-1,对于可空盒子,将要求和球数都加上1,那么就成了最基本的隔板法的情况。注意到我们如果在每个坐标都枚举所有状态,而有些马的位置,此时枚举的 ( i, j )还不可能碰上,那么枚举此马存活与否的状态是无意义的,例如对于起点有效的状态只有全1,那么可以预处理出每个坐标的有效状态,就能在转移中大幅降低复杂度。
2024-08-12 01:43:46
719
原创 24.8.4(主席树,递推求组合数,警钟长鸣)
思路:区间修改+单点查询,考虑怎么设置懒标记,对于一个点 i,若知道了1操作的 l,k,d, 就能算出加值,为 k + ( i - l )* d,分解一下变为 k + i*d - l*d,那么懒标记可以用 k,d,ld这三个值来实现,不过实际上有点冗余,因为 k和ld都是和sum直接加减的关系,可以合并为一个tag。给 l,r区间加上等差数列,可对 l加上k,对 l+1至r加上d,对 r+1减去 k+(len-1)*d,那么这就是一个差分数组,求 p即为 ap+ 差分sum(1-p)
2024-08-05 01:17:50
1069
原创 24.7.28(tarjan 割点,割边,多重背包单调队列优化)
实际两边不需要全填-1,首先明确x和y的位置必填1,且y-1和x+1必填-1,此后-1和1交替填就行,若头尾是1,会出现错误吗,事实上是不会的,因为x严格大于y,故x至y的和即前后缀最大值>=2若头尾是-1,前后缀最大值>=1。思路:开始容易想到 y前和 x后全-1,y到x填1的构造,但对于 5 2 1,1 1 -1 -1 -1有问题,1和5的后缀值都为 -1,y判定为5。补 ABC344 F。补 ABC272 E。补 ABC225 F。补 ABC199 E。贴 ABC322 F。补 ABC156 D。
2024-07-28 20:33:33
726
原创 24.7.21(Tarjan SCC缩点,警钟长鸣)
mp【sum【i】】,dp【i】= dp【i-1】* 2 + 1 表示前 i-1的子序列数以及末尾加上sum【i】若 mp【sum【i】】= lst,dp【i】= dp【i-1】* 2 - dp【lst-1】,因为在 dp【lst-1】的序列末尾加上 sum【i】得到的序列数已经被计算过了。处理出二维前缀和,如果dp【i-1】【j-1】是一个箭头尾,那么i,j接在后面的条件是三个点为1,其余点为0,满足则dp【i】【j】= dp【i-1】【j-1】+1。补 ABC 146 E。补 ABC 211 E。
2024-07-21 21:19:34
996
原创 24.7.14(板刷数据结构,警钟长鸣)
对于一个区间内的相同数字,只关心最右边那个,vi记录数字的最后一次出现位置,例如 1 4 5 1,考虑前三个时,vi【1】=1,vi【4】=2,vi【5】=3,树状数组形为 1 1 1 0,然后下一个查询的 r为4,a【4】已被记录,那么就更新 vi【1】为4,树状数组形为 0 1 1 1。因为是双哈希,所以东西较多,ha11,第一个1表示正着hash或反着hash,第二个1表示第一套base和mod或第二套,num01,第一个0表示0或1开头,第二个1表示第一套或第二套base,mod。
2024-07-14 19:58:34
743
原创 24.6.30
思路:题意有点复杂,看似伤害和ABCD的值都相关,要考虑四个,实际上经过处理后只需考虑两个值,即A*B和C-d(C为原题意的100+C,这样就能线性即3e3地处理询问,但复杂度仍是9e8,对于1s来说是不够的。思路:注意到n和m在10以内,p不大,对(p-1)的模数也在1e4以内,可以直接暴力bfs,vi数组标记出现过的状态(即坐标和对(p-1)的模数,出现符合条件状态就结束,bfs完毕就输出-1。题意:给一数组,可以任意排序,有一操作为使其一元素+=k,问最少操作次数使其对称,不可能则输出 -1。
2024-07-06 16:43:33
612
原创 24.6.16
思路:有效操作2只有一次,且反转后不会再出现负数,即后面能贡献 2^n-i个方案,再乘上前面 2^(k>=0的次数)对于所有操作,做个前缀差分和后缀差分,cnt 记录当前有多少个在扩散的点,w记录点的权值。思路:主要在于如何处理扩散,向两边都扩散,那么可以正着跑一遍处理向右扩散,反着处理向左。思路:dp【i】【0/1】表示考虑到第 i个,第 i个选 1或b【i】的最大值。思路:dp【i】【j】表示第 i个阶段,状态值为 j的方案数。,用前缀和优化一下就行,注意不要漏掉 i-1的方案数。
2024-06-24 13:29:09
437
1
原创 24.6.9( 概率dp)
按位枚举,m此位为0跳过,例如n为110 0 10,枚举到第2位(从0开始,考虑多少种情况此位为1,此时n此位为0,左边的数为110,右边为10,先考虑左边的取值,若小于110,则后面任意取值,有 2^2 种情况(指数为右边数长度,若等于110,则若中间位为1,有10种情况,若为0,则无贡献。第二种情况,停留一天,dp【x】即为 dp【x】+1,需要注意的是,这里的转移和魔镜长得很像,但实际意义并不相同,因为魔镜的dp【i】定义为从头开始到 i,而逃离的dp【i】定义为从 i开始。补20届东南校赛 J。
2024-06-10 16:26:03
1088
原创 24.6.2(动态开点线段树)
注意二分配线段树 O(log^2 * q)的复杂度会T,但结果一直显示的re,所以一直以为是空间没开够,但N*207已经是极限了(实测,一度怀疑动态开点线段树的空间复杂度到底怎么算(现在也还没明白),后来试了下线段树上二分,就过了。有几个需要注意下的点,第一是传送门设置的传送位置不同方案也不同,所以放置传送门时转移需乘上 ( i-1),第二是内存限制很小,第一维需要滚动,第三是多组样例,记得输出换行符。19届东南校赛 B。23百度之星 切蛋糕。百度之星20年 chess。23年百度之星 第五维度。
2024-06-03 12:11:58
1044
原创 24.5.26(树链剖分板子,二分+线段树)
思路:可看出峰值的数量是固定的,为 n/2-1,头尾不可为峰,连续俩数不能都为峰,假如我们让奇数位置的值为峰( 除了头,发现如果p的 n值在偶数位,且挨着1,是无法实现的,但其实也不难解决,将p翻转后 n下标的奇偶性就会改变( 最后输出前记得翻转 q。如果只有偶数子节点,那么0/1的选择是固定的,如果存在奇节点,所有偶节点可以取更大值,对于奇节点的选择,如果偶数个奇节点,0/1各一半,如果奇数个,多的那个取父节点的反,将奇点的 0/1 差值排个序,贪心即可。easy线段树题 建平台。补重庆科技 C 二分。
2024-05-27 12:50:11
934
原创 24.5.19(换根dp)
先以 1为根dfs一遍求出dp【1】,然后第二遍dfs进行答案的转移,假设 d到点 x,其父节点为 f且dp【f】已知,则dp【x】=dp【f】- sz【x】+ n - sz【x】,因为根从 f转移到 x,x为根的子树距离都会减 1,除此之外的节点到根距离都会+1。若ma【i】> 0,dp【f】包含 i为根子树,dp【f】- ma【i】若为正,dp【i】加上它,否则不加,实际等价于dp【i】为 ma【i】还是 dp【f】补19陕西 C 0689。补河南邀请赛 L dp。
2024-05-20 10:05:47
719
原创 24.5.12(23广东,19陕西)(字典树)
若k==3, 则存在两点 s,t 分为[ l,s ], [ s+1,t ], [ t+1,r ]三个区间 ,即 b[l-1]^b[s]==b[s]^b[t]==b[t]^b[r] ,即b[s]==b[r]且b[t]==b[l-1] (s<t), 则可找出下标[ l,r ]内最接近 l的值为 b[r]的数的下标,和最接近 r的值为b[l-1]的数的下标, 可以预先把一个数出现的所有下标存进 vector里实现二分查找,最后判断 (s<t)补cf round943 div3 E。补ATC abc352 D。
2024-05-13 10:45:07
926
原创 24.5.5(离散化+树状数组,线段树)
不过由于值的范围能到达1e14,需要离散化处理,即按照原值的大小关系映射为紧密连续的值,这里需要用到的值不仅有 a【i】,还有 a【i】- k 用于查询,所以离散化后数据范围最多 2e5。思路:三个连续数的和为偶数,组合形式有限,分别为偶偶偶,偶奇奇,奇偶奇,奇奇偶,数组最先三个数的奇偶性确定后,整个数组的每个数的奇偶性都确定了。cf edu 165 补C。权值树状数组,单点修改,区间查询,修改的意义是值为x的数多了1,查询的意义即为<= x的值个数,类似于用树状数组维护桶数组。补牛客寒假营2 G。
2024-05-06 12:40:15
935
原创 24.4.28(板刷dp,拓扑判环,区间dp+容斥算回文串总数)
i 三连的个数选择,受到 i-1 三连和 i-2 三连的个数的影响,那么为什么不把 i-2 三连的个数也设在状态里呢,因为在转移时 dp【i-1】【k】【t】的 t 就是 i-2 三连的个数 (有点像状压,然后枚举 j,k,t 转移即可,答案为 dp【m】【0】【0】,因为没有 m+1 的麻将。不能组成 k,比较自然的想到先删去 k 的二进制表达最高位,记为 h位,没了 2^h后,再看看除 k之外的数如何组成,结论是需要额外添加三个数,k-2^h,k+1,k+1+2^h。
2024-04-29 00:20:56
1403
原创 24.4.21(链表模拟,板刷dp)(天梯赛)
区间dp用dfs递归实现,因为s的括号必两两对应,所以dfs的 l 和 r 从1,n开始,l 必定是(,r必定是),l,r的对应分三种情况,一是 r==l + 1,直接赋值即可 , 二是 l 和 r 对应,但不相邻,枚举 l+1 和 r-1 的涂色方案,把合法状态加上即可, 三是不对应,则需要把 l 和 ma【l】,ma【l】+1和 r 两个对应的区间的方案算出,两区间方案数相乘。正解是bfs,map存的是单个物品价值,vi存的是bfs到达的点,每次跑一遍p,能去但没去的点就继续存入队列。
2024-04-22 10:29:25
729
原创 24.4.14周报
如果这么做的话,复杂度依然是O(n^2),但还有一个关键点,a【i】遍历到了a【r】前,那么其实从a【i】到a【r-1】,答案都是一样的,即r-2,那么下一次 i 就可以跳到 r,复杂度即O(n)对于a【i】,它前面的数肯定是可以拿下的,所以直接取前缀和sum【i】,然后往后遍历,当遍历到a【r】大于等于sum【r-1】时结束,那么对a【i】来说,他的答案就是r-2(r-1个数减去自己)如果此状态还没有掉下峡谷,即可转移,dp【i】【j】= dp【i-1】【j】+ dp【i-1】【j+1】
2024-04-15 09:16:35
891
原创 24.4.7周报(kmp+状压)
这里还有一个注意的点,在统计前缀和第 i 位0 1数量时,我使 a【j】 & 1 s【j】,dp【i】【j】=1,否则若s【i】== s【j】,dp【i】【j】=dp【i+1】【j-1】
2024-04-08 08:11:14
873
原创 24.3.31周报(板刷dp,状压dp板子,二分kk)
思路:因为总重量过大,不能跑常规的01背包,所以这里记dp【i】为装入 i 价值物品所需最小重量,状态转移为dp【i】=min(dp【i-v】+w,dp【i】),然后再跑遍dp数组确保其单调不减性,就可以对每次询问进行二分查询了。转移:dp【i】【j】=dp【i-1】【j】,如果a【i】%j==0,dp【i】【j】+=dp【i-1】【j-1】在dp【i】【a】非0的情况下,dp【i】【c】=max(dp【i】【a】+ 3 ,dp【i】【c】)线性dp第一题:拼字符串。
2024-03-31 18:34:19
824
原创 24.3.24周报(第一类,第二类斯特林数)
思路:首先不存在无解的情况,然后我们想什么地方是可以立马确定的,即是n个1的行和列,当我们把那一行一列填满后,要求一个1的行列就满足了,不能再填1,于是可选的行和列变成了n-2个,此时又可以确定n-1的行和列,如此往下,直到填好 n/2(向上取整)个行列,即结束。思路:高度为n的建筑在中间,左边有a-1个建筑群,右边b-1个,一个建筑群即为其中最高的建筑在外面,其余建筑任意排列,可以想到这排列方式即为第一类斯特林的圆排列,每个建筑群的顺序即为从外到内由低到高,是确定的,遂计算时不需要考虑。
2024-03-24 21:16:28
932
原创 24.3.17周报(倍增/tarjan LCA,数位dp,ST表(RMO) )
思路:学到了个新东西,建立虚点,代替原来的边,将图进行转化,每种颜色建一个虚点,连接此颜色边所连的点,虚点到点的单向边边权为0,点到虚点单向边边权为1,这样同颜色边所连接的点就能以 1 的代价移动,对应题意。思路:每个点往上dfs,d到标记过的点就结束,因为默认返回,所以return 路径*2,记录从外卖站开始的一条最长的路径不返回,所以输出要减一个最长路径,感觉这题要点手法的。题意:无向图,无自环,无重边,两点间的边以一种颜色标注,给定起始点和终点,输出路径最少经过的颜色数。
2024-03-18 01:59:39
825
原创 24.3.10周报( 线性筛,区间dp, 重载运算符,二维全局vector)
星期一:cf round930 div2 C题交互:cf传送门思路:先找最大值,再找和最大值异或最大的值,异或值最大,二进制中即为0对应1,按位或的结果即为1,所以也应是最大,按位或结果相同时取更小值代码如下:ll n;int m,ma,mi;int ask(int a,int b,int c,int d){ cout << "? " << a << " " << b << " " << c << "
2024-03-10 21:06:54
996
原创 24.3.3周报(状压dp)
思路:一个长度为k的框,正方形顶点全在框上的情况有k种, 长度为n的大框,包含长为i的小框有 (n-i+1)^2个。晚上cf睡过头了, 醒来34分, 脑袋迷糊没敢入场,a,b写了后发现C是道交互, 还好。思路:计算u到v的路径数,以及路径上每个点的遍历次数,遍历次数等于路径总数即为关键点。cf round931 div2的C又是交互,做不来,还好前俩题手速够快。打了cf round929 div3, a-e题都很简单,手速还行。思路:先问三个边角,得到三条线的范围,两个交点中必含一矿。
2024-03-03 22:41:02
362
原创 24.2.25周报(匈牙利 , 线段树)
写了个模拟一直wa,找不到原因,写个暴力dij又t了, 然后嗯造了10个样例, 让模拟和dij各跑一遍,找出了错误样例,算是学到了个给模拟debug的法子吧。思路:一开始没注意时限只有半秒,写了个暴力,tle,简单优化下,又tle,开始疯狂数学推导,但推了一个多小时到最后发现好像推不出来, 真没想到是前缀和, 我的。话接上回cf round927 div3, 很好的开局,但D题小模拟写瓦了一个很蠢的点,de了半小时没de出来,只能说还是粗糙了。cf round928 div4,打的一坨,止步于C。
2024-02-25 18:00:05
335
原创 24.2.18周报 (unique函数 , prim)
思路:没有思路,看题解说是滑动窗口,想了下算是想明白了,先去重,在一个区域内,如果任意值的差值小于n,那么都是可以通过加上选定permutation来实现相等的。用map<PII,int>直接查询,赛时我想到了模x就开始敲码了,没有彻底想清楚,导致卡了很久,应该把模y操作也想好再写的,只能说是急了。晚上 cf round 926, C题有歧义,没看懂样例,耽误了很久,俩题结尾,伤心,比赛结束半小时补了,感觉都没必要放.思路:若x和x-2都为素数,即为一组,要用到线性筛,再用前缀和处理,然后O(1)查询。
2024-02-18 22:06:20
1029
原创 24.2.11周报(第四周) (floyd)
思路:dp [ i ][ j ][ k ]表示考虑到 a[ i ]时左数第一个没涂色的和从i往右数第一个没涂色的,n3做法。牛客寒假训练营2,打的一般,会做的都做了,但做了的也都是一眼能做的.下标1到n,超过需要模时,可以减一,模n,再加一。因为优先队列用的PII所以爆int了,以后注意。题意:找到一个环包含最小边,输出环的遍历路径。思路:用并查集判断环,dfs找路。思路:用的dij,貌似dp也行。玩了一天文明6,种田,爽!回老家,去亲戚家吃了两顿饭。牛客训练营3,打的依托。
2024-02-13 11:38:07
353
1
原创 24.2.4周报(寒假第三周) (trie)
思路:线性dp,dp[ i ][ j ]在前i堆硬币最少选多少堆能堆到 j 高度,注意需要把dp数组初始化为极大值,然后使dp[0]=0。打了cf round 922 div2,因中间网站卡顿延时了十分钟,在最后七分钟时调出了c题,很好。思路:这题我用的set模拟,不过没想到正解是用并查集倒序处理,之前做过这种思路的题,所以记录一下。写典中典bfs马的遍历时被卡了下,虽然但是代码不贴了。牛客训练营,除了签到就做了一题,有点提不起劲.打了个蓝桥杯模拟,dp有点多,补几道题。学了下trie字典树,敲个板子先。
2024-02-04 21:34:38
325
1
原创 24.1.28周报(寒假) (线性筛,组合数,exgcd)
思路:有n个完整的含有k个字母的段落即为yes,否则为no,,问题在于如何找出不存在的子串,想了半天没构造出来,,把前面每个完整的k字段的最后一个字母记录下来,最后补上数量为 n-子串长度 数量的最后那段缺少的字母。可以用gcd(a,b)=ax+by 和 gcd(b,a%b)=bx1+(a%b)y1 推导一下。打了场久违的cf,两题且罚时爆炸,难受(b题没过system test,寄)学了下扩展欧几里得,似懂非懂,感觉很厉害,先把函数怎么写记住。寒假过了两周了,训练要加速了。补了点天梯赛的题,就不贴了。
2024-01-28 18:50:00
375
1
原创 24.1.21周报
思路:对于每个k计算一次,存下每个新数组的第i个数,问题在于怎么判断是否存在m>=2,使所有数模m后相等. 这里要用到gcd来判断,先将存下的数排序,然后计算相邻数差值的gcd,计算完后gcd!思路:贪心题,每次两种可能,a最大找b最小,a最小找b最大.但我敲了一次,代码敲歪了,没实现出来(就离谱,然后以为思路错了..如果数组只开了n的大小,那么在 i==n,j==m时一定会越界(cf显示的wa,我没往越界那方面想,一个小时给我整麻了)晚打了场edu cf round161,做了3题,还行,手速慢了点。
2024-01-23 10:39:11
364
1
原创 23.12.31周报(赛后康复训练,期末复习阶段)
思路:(set模拟和哈希会mle),在进行k次操作后,字符串将会由后长度为n-k的字符串和前k个字符中的其一组成,所以一个类似前缀和的操作,记录前k个字符中有多少不同的字符,累加起来。打了杭电的一场比赛,麻。晚上打了cf的goodbye 2023,a题没开ll被hack,居然还加了11分。队内打了场训练赛(round15,打的烂,但挺有收获的,晚上把题都给补了,但没空写题解了。做了道23级校赛的题,并查集01背包,差点当成刚学的依赖背包了。2023的最后一天,成都天气灰蒙蒙的,不是阴天的雾,是霾。
2024-01-01 13:12:13
384
原创 23.12.24周报(赛后康复训练)
今下午来试了试,发现long long最多只能装2^62,装63会超,得用unsigned long long,怪不得昨晚没调出来。昨晚div1+div2被拿下了,a题签到因为各种失误耽误了一个多小时,第二题思路有了没实现出来(也来不及实现了),一题尾掉回newbie。改成unsigned long long 后,一发a,代码如下:(这就是cf的二进制啊,真是00又11啊)从今天开始,准备每天做三道题,构造,图,dp各一道。早上看了会,下午看了会,看的似懂非懂,决定先放着,以后dp熟悉了再来看。
2023-12-25 11:32:17
327
原创 23.12.17周报(六级,重庆省赛)(vp 22辽宁) (kk)
wa就wa在一行的输入没有处理完就break了,导致输入的处理错乱了,也算吃一堑长一智,这种连续多组输入的,每个都得处理完。如你所见,此函数的功能是更改字母大小写,但是如果只有两个if,在牛客上会编译不通过,初步判断为是因为,不能在任何情况下都确定有返回值,所以可以在下面加个 return 0;思路:三人一起想半天无果后,我决定写一发暴力,但强似乎有了思路,于是我俩在两台机子上写自己的,强写了会没实现出来,我第一发暴力也t了,但后来给算最大公约数剪了个枝,就很神奇的过了。上完早八来机房,再敲遍dij先。
2023-12-18 11:05:51
734
1
原创 23.12.10周报(重庆省赛准备阶段,校赛,成信大校赛) (dij)
思路:初见的时候都懵了,后来想到用优先队列,在写的时候又反应过来直接vector存结构体,然后排个序就行,不过写着还是挺麻烦的,为此学了个结构体运算符重载,和cin.get()的输入方式(可以检测空格),和输出vector内结构体数据。明天离散要教dijkstra最短路算法,遂又复习了一遍,上次听正义讲学会了代码怎么写,这次自己看了点文章,对其原理又加深了几分理解,明早准备享受,不过也希望通过老师的讲解领悟到新的东西。思路:gcd,但我第一次算成了所有a的gcd,然后wa2,实际上是求所有差值的gcd。
2023-12-10 23:00:21
383
1
原创 23.12.3周报(重庆省赛准备阶段)
思路:据出题人说是区间dp+前缀和优化,我读题时也想到了可能是dp,但我不会dp啊,然后网上根本找不到这场比赛的题解,只能等以后有缘再来补。思路:1e5的精度,double再怎么long都得寄,得边算边输出,可能是高精度的知识,但没学过不影响签到。题意:从0,0点向右上射出一道光,直到被任一角落吸收,问第一次经过k个传感器的时间,如没经过,输出-1。思路:没有思路,网上说是要用扩展欧几里得,看来确实得学习新的算法了,不然如康康所说,会遇到瓶颈。思路:当成模拟写了俩天,wa4,然后上网一搜,贪心。
2023-12-04 10:38:38
42
原创 23.11.26周报(重庆省赛准备阶段)
消耗的不止时间,还有精力,搞的后面没力气做题了。记录一个getline相关的操作,今一题遇到需要用到getline的情况,但cin.clear()好像没起作用,所以我把cin换成了scanf,还是不行。星期天打了场沙东省赛,花了两小时,做了5道签到题就run了,罚时很不理想,主要有两道题犯病了,耽误了时间。题意:3n个人组成n个队伍,给出m对熟悉关系,间接熟悉也算熟悉,每人的焦虑值为同队中不熟悉的人的数量,问焦虑值总和的最小。思路:一开始想的是,对于每次b,c,找出b-c的因数集合,对所有集合取交集。
2023-11-27 11:07:02
51
1
原创 23.11.19周报
题意:给一数n,坐标轴上有0到n+1的城镇,每座镇有1 /2的几率建一座信号塔,功率为p(自定),能辐射到自己和左右两边坐标差小于p的城镇。设dp[i]为有i座城镇时的可行方案数,如果第i座城镇建一p为1的信号塔,那么dp[i]为dp[i-1],如果第i座城镇是被i-1的信号覆盖,那么i-1的信号将覆盖i-2和i,dp[i]+=dp[i-3]思路:思路是网上看的,我只负责了代码实现,但tle,插个眼先(补:不开ll见祖宗,拖了我一个小时,心态炸裂)上网看发现是dp,dp完后能发现是斐波那契数列的规律。
2023-11-20 19:51:36
77
1
原创 23.11.12周报
思路:根据条件一三,得x必须严格大于y.刚开始想的是开个筛子数组,出现过的数都标记一下,然后以on²的复杂度挨个找,找到n/2个数对就break,但tle.后来发现x%y的结果一定是严格小于y的,并且数对 数量也不多,只需n/2个,那么可以用on的复杂度,用每个数和a中最小数进行判断.题意:抓鼠鼠,有n个房间,每个房间放陷阱的代价是ci,有一a数组,老鼠每秒从i房间跑到a[i]房间(i.e.从a[i]房间跑到a[a[i]]房间),不知道老鼠初始在哪个房间,问最小布置陷阱代价,确保一定能捉住老鼠。
2023-11-13 12:09:10
64
原创 23.11.5周报
题意:给一全为0的数组,经过m次操作使其平均值最大,每次操作输入x和d,选一下标i使每个元素aj(j从1到n)+=x+d*dis(i,j),dis(i,j)为其下标差,问能达到最大平均值为多少,输出(注意精度1e-6)题意:n个摊位围成圈,每个摊位花费ai元,有tt元,到一摊位时,能买就买一次,不能买就不买,然后继续往下个摊位走,直至再不能买到东西(tt<最小的ai),问能买多少次东西。题意:一字符串s根据字符串w来构造,构造条件见图中三个if,现给出x和构造好的s,要求还原w。星期二比赛做了道dfs。
2023-11-06 16:11:43
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人