就,训练记录

2022.5.31

Problem - 1036C - Codeforces

数位dp,蛮裸的。

Problem - 1353E - Codeforces

我是写了个dp,还需要求一个前缀和,如果当前这位是1,那要么前面全都没有1,要么,k之前那位是1且中间没有1,所以 d p [ i ] [ 1 ] = m i n ( f [ i − 1 ] , d p [ i − k ] [ 1 ] + f [ i − 1 ] − f [ i − k ] ) + ( a [ i ] = = ′ 0 ′ ) dp[i][1]=min(f[i-1],dp[i-k][1]+f[i-1]-f[i-k])+(a[i]=='0') dp[i][1]=min(f[i1],dp[ik][1]+f[i1]f[ik])+(a[i]==0)f数组即前缀和数组,从1到i有几个1。
至于当前位是0,那不会对前面造成影响,所以对前一位的答案取小即可,所以 d p [ i ] [ 0 ] = m i n ( d p [ i − 1 ] [ 0 ] , d p [ i − 1 ] [ 1 ] ) + ( a [ i ] = = ′ 1 ′ ) dp[i][0]=min(dp[i-1][0],dp[i-1][1])+(a[i]=='1') dp[i][0]=min(dp[i1][0],dp[i1][1])+(a[i]==1)

2022.5.30

Problem - 1627D - Codeforces

就像找数列中最大的两个数的因数一样,nlog枚举求一下gcd就好啦。

Problem - 432D - Codeforces

kmp+dp,就先kmp来找出相同的前后缀,然后dp算出现次数就好啦。

2022.5.23

Problem - 1404B - Codeforces

博弈,首先Alice先动,只要一步能到Bob的位置,Alice就赢了,第二,如果Alice到某点后能到树上所有点,Alice也赢了,还有一点,2da>=db,Alice也能赢,只要一直把Bob往叶子逼就好了,只有db>2da的时候Bob才能逃脱。

Problem - 540C - Codeforces

就是找一个路径,先看起点能否到终点,然后终点是X那能到就行,否则就要周围有不在路径上的‘.’。

2022.5.20

Problem - 1527B2 - Codeforces

有点难说捏,那就不说了

2022.5.18
Problem - 547B - Codeforces

看每个点作为最小值能覆盖多长的区间,这个单调栈维护就好啦,然后短的区间值可以和长的取大。

2022.5.17

Problem - 448C - Codeforces

唔,一个暴力,就是考虑要不要把最低的横着涂,然后分成很多块,重复这个过程,一个dfs就好啦

2022.5.16

Problem - 1360G - Codeforces

怎么说呢,一个一点点思维的暴力?如果行里要放的总数和列里要放的不一样肯定就是no嘛,yes就斜着放就好了。

Problem - 1486C2 - Codeforces

先找到次大值的位置,然后看最大值在它左边还是右边,然后以次大值为一边的端点,另一边二分找到次大值变位置的地方,即是最大值的位置。

2022.5.13

Problem - 86D - Codeforces

唔,一个莫队,挺裸的。

Problem - 1349B - Codeforces

就是只要有一段连续的两或三个的中位数大于等于k并且序列中有k就yes

2022.5.12

Problem - 61E - Codeforces

唔,就是枚举中间值,然后看一下它前面有几个比它大的,后面有几个比它小的,我是用树状数组维护的。无啦。

Problem - 1328E - Codeforces

浅想一下,就是找到最深那个点,然后看它到根的路径就好了,然后写了一发暴力,很理所当然的T了,于是开始思考怎么改,想了一下没什么很好的想法,然后学长给了一个很好的理A,因为可以有1的距离,所以直接把每个点变成它的父亲,然后看一下是不是在一条路径上,我是写的lca,就好啦。

Problem - 1365E - Codeforces

就是找3个或起来最大就好啦,怎么证明,我不会啦,就是感觉有点道理就冲了一发。

2022.5.10

Problem - 1354D - Codeforces

就是,权值线段树,唔,好像没了。
看见别人有写树状数组+二分,感觉也差不多捏。

2022.5.9

Problem - 25D - Codeforces

数据范围很小,可以n方,所以就并查集然后暴力就完事啦。

月出皎兮,佼人僚兮

树上启发式合并,说不出来什么了,反正就是感觉还挺板的。

2022.5.7

Problem - 1358D - Codeforces

就是枚举最后一天在哪个月,再二分一下起始的那个月,然后最后一天肯定是那个月的最后一天,所以看一下前面少了几天减一下就好啦。

2022.5.5

Problem - 1359D - Codeforces

昨天晚上读的题,想了很久都没什么很好的办法,总觉得题目ai的范围很小是有什么办法的,最后还是学长给了一个理A(ST表+二分),其实有一点点难写,今天再打开这题,突然感觉想复杂了,ai范围太小了,其实只要跑30遍最大子段和就好了,枚举减掉的最大的那个数,然后做最大子段和就ok了。

Problem - 1311D - Codeforces

嗯,暴力枚举b然后算a和c需要变化多少就好了,a是b的因子所以麻烦了一点,再暴力枚举一下嗨害嗨,然后就过啦,下班。

2022.5.4

Problem - 1369D - Codeforces

一个找规律?i层的RDB就是两个i-1层的RDB加上一个i-2层的RDB再加一个根节点,所以i层能染色的claw的个数就是两个i-1层的claw个数加上一个i-2层的claw个数,再看一下以根节点为中心的claw能不能染色,而这个取决于i-1层和i-2层的根节点有没有染色,所以记下来然后递推一下就好了。

2022.5.3

Problem - 463C - Codeforces

这题最重要的就是不会有一个格子同时能被两个bishops攻击,所以就是选两个点,它们的主对角线和副对角线上所有点权值和加起来最大,这两个点符合的条件就是它们的(i+j)的奇偶性不同就好了,所以n的平方选一下就好了。

2022.5.1

Problem - 1370D - Codeforces

就是一个二分,最大值最小就是应该想到(虽然自己没想到,寄),然后再写一个奇数位和偶数位两个check就好啦。

Problem - 1348D - Codeforces

首先在第几天,是求一个log2(n)就能知道的,然后就是在第k天,最少有2的k-1次方个物品,所以就递推一下就好啦。

2022.4.30

Problem - 1366D - Codeforces

思维?找一个数的两个因子使因子的和与原数互质,找不到就是-1。我也不知道怎么想出来的,反正就是自己最小的素因子和去掉所有的这个因子剩下的数就好了,写的时候推了一下来着,写完又有点忘了捏。

Problem - 1400D - Codeforces

就是枚举一下j和k,然后就看j前面有几个a[k],k后面有几个a[j],就出来啦。

2022.4.29

Problem - 577B - Codeforces

一个简单背包,但是n范围有一点大,需要优化,比较好的办法是记录a[i]%m的个数,转化为多重背包,写的时候没想到,加了个bitset优化勉强冲过去了

Problem - 1438C - Codeforces

思维题,,,考虑奇偶性就好了(想了好久好久,本来还写了个bfs救大命)

Problem - 2B - Codeforces

唔,简单dp+回溯路径,思路很好想,最后0最少就是路上遇到的min(2的个数,5的个数)最少,所以2和5分开统计一下就好了,比较坑的是,如果路上有0,那答案最大就是1,需要特判(一个特判改了半个多小时,我直接谢)

2022.4.28

Problem - 5C - Codeforces

嗯,就是一个贪心,能被匹配的括号打一个标,统计一下最长连续的就好啦。(哭哭,题目看错想了好久好久)

牛妹的考验

AC自动机+dp,唔,感觉dp是真的薄弱,明知道是dp还是没办法自己写出来,看了题解又总觉得只差临门一脚,还是要多训练捏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值