C

通过反复尝试容易发现规律是n<=k+1时是Yes,n>=k+2时是No

F

暴力枚举线段树的三分点,然后记忆化搜索DP即可

2021杭电多校第五场题解_持续更新2021杭电多校第五场题解_#include_02
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+7;
int n,f[N];
void dp(int l,int r)
{
    if(f[r-l+1])return;
    int b=l+(r-l+1)/3-1,c=b+r>>1;
    dp(l,b),dp(b+1,c),dp(c+1,r);
    f[r-l+1]=1+f[b-l+1]+f[c-b]+f[r-c];
}
int main()
{
    int T;scanf("%d",&T);
    f[1]=1,f[2]=3;
    while(T--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%*d");
        dp(1,n);
        printf("%d\n",f[n]);
    }
}
View Code

持续更新中……