20210907上午

20210907上午

我怎么每次都错的这么神奇呢
请添加图片描述

T1T2T3T4T5T6T7T8
预测100100100100100100100100
一测8010010010010010020100

T1:
找规律,系数显然与斐波拉契数列相似,判断算出的b是否为整数就行,No answer后面竟然有个句号。。。
请添加图片描述
T2:
最近线段树写多了,脑子抽了写了个 O ( n l o g n ) O(nlogn) O(nlogn)的分治算法,后来一想不就是 max ⁡ i = 1 n ( s u m i − max ⁡ j = 1 n s u m j ) \max_{i=1}^n(sum_i-\max_{j=1}^nsum_j) maxi=1n(sumimaxj=1nsumj)吗,直接记录 s u m sum sum m i n s u m minsum minsum O ( n ) O(n) O(n)推一遍就行。
T3:
枚举中间那个人,分别从左和从右预处理出最长上升子序列,则选出的人为 f 1 i + f 2 i − 1 f1_i+f2_i-1 f1i+f2i1,取最大即可。
T4:
01背包板子。。。感觉这几天换着出了几遍了。。。
T5:
看到每张牌40张就该知道设计状态 f a , b , c , d f_{a,b,c,d} fa,b,c,d表示用 a a a 1 1 1 b b b 2 2 2 c c c 3 3 3 d d d 4 4 4能获得的最大分数,转移方程
f a , b , c , d = m a x ( f a − 1 , b , c , d , f a , b − 1 , c , d , f a , b , c − 1 , d , f a , b , c , d − 1 ) + s a + 2 b + 3 c + 4 d f_{a,b,c,d}=max(f_{a-1,b,c,d},f_{a,b-1,c,d},f_{a,b,c-1,d},f_{a,b,c,d-1})+s_{a+2b+3c+4d} fa,b,c,d=max(fa1,b,c,d,fa,b1,c,d,fa,b,c1,d,fa,b,c,d1)+sa+2b+3c+4d
注意为0的情况。
T6:
统计方案数,先跑一遍最长下降子序列,然后再从头跑,若 f i = f j + 1 f_i=f_j+1 fi=fj+1则转移情况数,不过注意从后往前转移并且转移至第一个 f i = f j & & a i = a j f_i=f_j\And\And a_i=a_j fi=fj&&ai=aj时停止,因为这之前的都一定被 j j j统计过了,最后把所有 f i = a n s f_i=ans fi=ans的加起来就是总方案数。
T7:
经典状压,考试时没注意到一个状态会被更新多次没加 max ⁡ \max max挂了。。。服了。
请添加图片描述
枚举前两行状态和本行状态转移就行了,可以把两行状态压在一起存,为了和前两行和本行不冲突,选择子集枚举,即

S=(1<<m)-1;
for(int t=3;t<=n;t++)
{
	for(int I=S-s[t-2],i;;i=I&(i-1))
	{
		for(int J=S-(s[t-1]|i);;j=J&(j-1))
		{
			for(int K=S-(s[t]|i|j),k=K;;k=K&(k-1))
			{
				//神秘操作
				if(!k) break;
			}
			if(!j) break;
		}
		if(!i) break;
	}
}

竖着的状态矛盾处理完了,横着的也很好处理,判断 i & ( i > > 1 ) i\And (i>>1) i&(i>>1) i & ( i > > 2 ) i\And (i>>2) i&(i>>2)就行了,剩下的直接转移就行,记得用滚动数组。
T8:
经典,前几天才出过, f i , j = max ⁡ ( f i − 1 , j , f i − 1 , j − 1 ) + a i , j f_{i,j}=\max(f_{i-1,j},f_{i-1,j-1})+a_{i,j} fi,j=max(fi1,j,fi1,j1)+ai,j转移。

总结:还是比较基础的dp,就是希望错误的点能别这么奇怪。。。
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值