2022.5.31
数位dp,蛮裸的。
我是写了个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[i−1],dp[i−k][1]+f[i−1]−f[i−k])+(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[i−1][0],dp[i−1][1])+(a[i]==′1′)
2022.5.30
就像找数列中最大的两个数的因数一样,nlog枚举求一下gcd就好啦。
kmp+dp,就先kmp来找出相同的前后缀,然后dp算出现次数就好啦。
2022.5.23
博弈,首先Alice先动,只要一步能到Bob的位置,Alice就赢了,第二,如果Alice到某点后能到树上所有点,Alice也赢了,还有一点,2da>=db,Alice也能赢,只要一直把Bob往叶子逼就好了,只有db>2da的时候Bob才能逃脱。
就是找一个路径,先看起点能否到终点,然后终点是X那能到就行,否则就要周围有不在路径上的‘.’。
2022.5.20
有点难说捏,那就不说了
2022.5.18
Problem - 547B - Codeforces
看每个点作为最小值能覆盖多长的区间,这个单调栈维护就好啦,然后短的区间值可以和长的取大。
2022.5.17
唔,一个暴力,就是考虑要不要把最低的横着涂,然后分成很多块,重复这个过程,一个dfs就好啦
2022.5.16
怎么说呢,一个一点点思维的暴力?如果行里要放的总数和列里要放的不一样肯定就是no嘛,yes就斜着放就好了。
先找到次大值的位置,然后看最大值在它左边还是右边,然后以次大值为一边的端点,另一边二分找到次大值变位置的地方,即是最大值的位置。
2022.5.13
唔,一个莫队,挺裸的。
就是只要有一段连续的两或三个的中位数大于等于k并且序列中有k就yes
2022.5.12
唔,就是枚举中间值,然后看一下它前面有几个比它大的,后面有几个比它小的,我是用树状数组维护的。无啦。
浅想一下,就是找到最深那个点,然后看它到根的路径就好了,然后写了一发暴力,很理所当然的T了,于是开始思考怎么改,想了一下没什么很好的想法,然后学长给了一个很好的理A,因为可以有1的距离,所以直接把每个点变成它的父亲,然后看一下是不是在一条路径上,我是写的lca,就好啦。
就是找3个或起来最大就好啦,怎么证明,我不会啦,就是感觉有点道理就冲了一发。
2022.5.10
就是,权值线段树,唔,好像没了。
看见别人有写树状数组+二分,感觉也差不多捏。
2022.5.9
数据范围很小,可以n方,所以就并查集然后暴力就完事啦。
树上启发式合并,说不出来什么了,反正就是感觉还挺板的。
2022.5.7
就是枚举最后一天在哪个月,再二分一下起始的那个月,然后最后一天肯定是那个月的最后一天,所以看一下前面少了几天减一下就好啦。
2022.5.5
昨天晚上读的题,想了很久都没什么很好的办法,总觉得题目ai的范围很小是有什么办法的,最后还是学长给了一个理A(ST表+二分),其实有一点点难写,今天再打开这题,突然感觉想复杂了,ai范围太小了,其实只要跑30遍最大子段和就好了,枚举减掉的最大的那个数,然后做最大子段和就ok了。
嗯,暴力枚举b然后算a和c需要变化多少就好了,a是b的因子所以麻烦了一点,再暴力枚举一下嗨害嗨,然后就过啦,下班。
2022.5.4
一个找规律?i层的RDB就是两个i-1层的RDB加上一个i-2层的RDB再加一个根节点,所以i层能染色的claw的个数就是两个i-1层的claw个数加上一个i-2层的claw个数,再看一下以根节点为中心的claw能不能染色,而这个取决于i-1层和i-2层的根节点有没有染色,所以记下来然后递推一下就好了。
2022.5.3
这题最重要的就是不会有一个格子同时能被两个bishops攻击,所以就是选两个点,它们的主对角线和副对角线上所有点权值和加起来最大,这两个点符合的条件就是它们的(i+j)的奇偶性不同就好了,所以n的平方选一下就好了。
2022.5.1
就是一个二分,最大值最小就是应该想到(虽然自己没想到,寄),然后再写一个奇数位和偶数位两个check就好啦。
首先在第几天,是求一个log2(n)就能知道的,然后就是在第k天,最少有2的k-1次方个物品,所以就递推一下就好啦。
2022.4.30
思维?找一个数的两个因子使因子的和与原数互质,找不到就是-1。我也不知道怎么想出来的,反正就是自己最小的素因子和去掉所有的这个因子剩下的数就好了,写的时候推了一下来着,写完又有点忘了捏。
就是枚举一下j和k,然后就看j前面有几个a[k],k后面有几个a[j],就出来啦。
2022.4.29
一个简单背包,但是n范围有一点大,需要优化,比较好的办法是记录a[i]%m的个数,转化为多重背包,写的时候没想到,加了个bitset优化勉强冲过去了
思维题,,,考虑奇偶性就好了(想了好久好久,本来还写了个bfs救大命)
唔,简单dp+回溯路径,思路很好想,最后0最少就是路上遇到的min(2的个数,5的个数)最少,所以2和5分开统计一下就好了,比较坑的是,如果路上有0,那答案最大就是1,需要特判(一个特判改了半个多小时,我直接谢)
2022.4.28
嗯,就是一个贪心,能被匹配的括号打一个标,统计一下最长连续的就好啦。(哭哭,题目看错想了好久好久)
AC自动机+dp,唔,感觉dp是真的薄弱,明知道是dp还是没办法自己写出来,看了题解又总觉得只差临门一脚,还是要多训练捏。