做了一下 AGC021 这套题,感觉很厉害,纪念一下,题意就不放了。
自己想出来了,就枚举每一位,然后后面的位可以都是 \(9....\) 之类的,前面可以卡的死一点。
你就考虑,既然他这个圆这么离谱,那一看起来就和这个东西没啥关系啊。
显然只有凸包上的点才有可能有答案诶。
然后维护一下凸包,求一下每个点占据的弧度即可。
求凸包写挂了,注意不能加等号。
傻逼构造不想说话,傻逼
设 \(f[l][r][k]\) 表示我用了 \(k\) 次转移字符,然后就考虑,直接按照区间dp的方式转移即可。
如果 \(s[i] == s[j]\) 那么转移 \(dp[i + 1][j - 1][k]+2 \to dp[i][j][k]\)
否则转移 \(dp[i + 1][j - 1][k - 1]+2\to dp[i][j] [k]\)
然后还有就是,\(dp[i + 1][j][k]\to dp[i][j][k]\)
还有 \(dp[i][j + 1][k]\to dp[i][j][k]\)
这题蛮有意思的!。
我们考虑枚举红色球的数量设为 \(R\),然后此时蓝色球的数量为 \(B\)。然后捏,我们就考虑,如果 \(R<B\) 肯定不能成为答案。
如果 \(R=B\) 的情况,这时候肯定蓝色球最后一个放,那么等于少一个蓝色球的情况。
然后只用考虑 \(R>B\) 的情况。就考虑,如果 \(R- B \ge N\) 的话,那么肯定是每个变色龙都可以成为红色,因为可以给每个变色龙多一个红色球。这时候的方案数应该是 \(\binom{R+B}{R}\) 就随便一个序列都可以啦。
然后考虑如果 \(B<R<N\) 的情况,那么应该有 \(N-(R-B)\) 的变色龙的蓝色和红色球是一样的。那么肯定是可以从合法序列中分出来 \(N-(R-B)\) 个合法的 RB
序列,这时候还剩下最多 \(B-(N-(R-B))=R-N\) 个球,然后也就是说,对于序列的每个前缀,蓝色球不多于红色的个数 \(R-N\)。
那么,我们考虑容斥掉不合法的方案,如果不考虑限制,应该是从 \((0,0)\) 这个点走到 \((R,B)\) 的方案数。我们要求 \(y\le x + R - N\)。也就是说,始终要满足点在 \(y=x+R-N+1\) 这条线下,考虑容斥掉不合法的方案,就是说,我们考虑第一次越过这条线的方案,对于他进行翻折,设点为 \((t,t+R-N+1)\),然后就是剩下 \((R-t,B-t-R+N-1)\),然后反转 \((B-t-R+N-1,R-t)\),然后拼起来,就是 \((B-R+N-1,2R-N+1)\),然后就是说,这时候的方案就是 \(\binom{R+B}{R}-\binom{R+B}{2R-N+1}\)。
更有意思了,明天再来更这个题解。要睡觉了。