狗妈OJ \(link\)
感觉可以骗分。
思路如下:
在 b串 里面寻找回文子序列,再判断这个子序列是否是 a串 和 b串 的公共子序列。
如果成立,那么就取 \(max\) 这个子序列的长度
感觉不可做
前缀和乱水
神仙题,显然不可做
得分 100 + 0 + 30 + 0
后面发现 T3 要用二分答案
而且 T4 也不是什么神仙题,虽然赛时没几个人 A 了, 但是赛后没一会就一大堆人 A 了。
所以在询问大佬的帮助下,最后可以得出今天题目的 AC 做法
同赛时
对于一个闭环,就缩点,把图变成一个有向无环图,再就是 DP.
乱搞前缀和和二分
洛谷 \(link\)
组合数学
请各位理性理解
#include <bits/stdc++.h> #define ll long long using namespace std; ll n, k; int main () { freopen ("color.in", "r", stdin); freopen ("color.out", "w", stdout); scanf ("%lld%lld", &n, &k); ll as = k * (k - 1) / 2, sa = k * (k - 1) * (k - 2) / 6; if (n == 1) printf ("%lld", as * 2 + sa * (3 * (1 << 19) - 6)); if (n == 2) printf ("%lld", sa * 96); if (n == 3) printf ("%lld", as * 2 + sa * 18); if (n == 4) printf ("%lld", as * 2 + sa * (3 * (1 << 13) - 6)); if (n == 5) printf ("%lld", sa * 12); if (n == 6) printf ("%lld", sa * 6); if (n == 7) printf ("%lld", sa * 96); if (n == 8) printf ("%lld", as * 2 + sa * 1073741820); return 0; }