摘要:
ddp题解,就是 \(f[pos][o][l][r]\) 表示线段树上pos位置的区间是否选出最大值,以及左右端点有没有被去到时的最大值。然后用线段树维护依次取某个值为最小值的时候dp的最优解。 const int N = 2e5 + 5; int T, n, a[N], f[N << 2][2][ 阅读全文
摘要:
A 结论题,行着取 int n, m; signed main(void) { #ifdef ONLINE_JUDGE freopen("alter.in","r",stdin); freopen("alter.out","w",stdout); #endif read(n), read(m); w 阅读全文
摘要:
A int T, n, a[105], dp[105][2]; signed main(void) { for (read(T); T; T--) { read(n); int mx = 0, id = 0; for (int i = 1; i <= n; i++) { read(a[i]); if 阅读全文
摘要:
原题比赛地址 A. Basic Diplomacy 模拟就好,就先随便取。然后对于大于 \(\lceil m/2\rceil\) 的那个数直接减到正好满足为止。 const int N = 1e5 + 5; int T, n, m, k[N], h[N]; vector <int> f[N], g[ 阅读全文
摘要:
B. Bonus Cards 简单dp一下,记 \(f_{ij}\) 为前i次有j次分给第一类的概率。最后再算上我在第一类被选上的概率即可。 const int N = 3005; #define int long long int n, a, b; double f[N][N], g[N][N]; 阅读全文